private void WriteStringIndented(ref ReadOnlySpan <byte> escapedValue) { int idx = 0; if (_currentDepth < 0) { while (_buffer.Length <= idx) { GrowAndEnsure(); } _buffer[idx++] = JsonConstants.ListSeperator; } if (_tokenType != JsonTokenType.None) { WriteNewLine(ref idx); } int indent = Indentation; while (true) { bool result = JsonWriterHelper.TryWriteIndentation(_buffer.Slice(idx), indent, out int bytesWritten); idx += bytesWritten; if (result) { break; } indent -= bytesWritten; AdvanceAndGrow(idx); idx = 0; } WriteStringValue(ref escapedValue, ref idx); Advance(idx); }
private int WritePropertyNameIndented(ref ReadOnlySpan <byte> escapedPropertyName) { int idx = 0; if (_currentDepth < 0) { while (_buffer.Length <= idx) { GrowAndEnsure(); } _buffer[idx++] = JsonConstants.ListSeperator; } if (_tokenType != JsonTokenType.None) { WriteNewLine(ref idx); } int indent = Indentation; while (true) { bool result = JsonWriterHelper.TryWriteIndentation(_buffer.Slice(idx), indent, out int bytesWritten); idx += bytesWritten; if (result) { break; } indent -= bytesWritten; AdvanceAndGrow(idx); idx = 0; } while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.Quote; CopyLoop(ref escapedPropertyName, ref idx); while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.Quote; while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.KeyValueSeperator; while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.Space; return(idx); }
private int WritePropertyNameIndented(ref ReadOnlySpan <char> escapedPropertyName) { int idx = 0; if (_currentDepth < 0) { while (_buffer.Length <= idx) { GrowAndEnsure(); } _buffer[idx++] = JsonConstants.ListSeperator; } if (_tokenType != JsonTokenType.None) { WriteNewLine(ref idx); } int indent = Indentation; while (true) { bool result = JsonWriterHelper.TryWriteIndentation(_buffer.Slice(idx), indent, out int bytesWritten); idx += bytesWritten; if (result) { break; } indent -= bytesWritten; AdvanceAndGrow(idx); idx = 0; } while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.Quote; ReadOnlySpan <byte> byteSpan = MemoryMarshal.AsBytes(escapedPropertyName); int partialConsumed = 0; while (true) { OperationStatus status = Buffers.Text.TextEncodings.Utf16.ToUtf8(byteSpan.Slice(partialConsumed), _buffer.Slice(idx), out int consumed, out int written); idx += written; if (status == OperationStatus.Done) { break; } partialConsumed += consumed; AdvanceAndGrow(idx); idx = 0; } while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.Quote; while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.KeyValueSeperator; while (_buffer.Length <= idx) { AdvanceAndGrow(idx); idx = 0; } _buffer[idx++] = JsonConstants.Space; return(idx); }