// public methods /// <summary> /// Closes the writer. /// </summary> public override void Close() { // Close can be called on Disposed objects if (State != BsonWriterState.Closed) { Flush(); _context = null; State = BsonWriterState.Closed; } }
/// <summary> /// Initializes a new instance of the JsonWriter class. /// </summary> /// <param name="writer">A TextWriter.</param> /// <param name="settings">Optional JsonWriter settings.</param> public LocalDateTimeJsonWriter(TextWriter writer, JsonWriterSettingsExtended settings) : base(settings) { if (writer == null) { throw new ArgumentNullException("writer"); } _textWriter = writer; _jsonWriterSettings = settings; // already frozen by base class _context = new JsonWriterContext(null, ContextType.TopLevel, ""); State = BsonWriterState.Initial; }
/// <summary> /// Writes the end of a BSON array to the writer. /// </summary> public override void WriteEndArray() { if (Disposed) { throw new ObjectDisposedException("JsonWriter"); } if (State != BsonWriterState.Value) { ThrowInvalidState("WriteEndArray", BsonWriterState.Value); } base.WriteEndArray(); _textWriter.Write("]"); _context = _context.ParentContext; State = GetNextState(); }
/// <summary> /// Writes the end of a BSON document to the writer. /// </summary> public override void WriteEndDocument() { if (Disposed) { throw new ObjectDisposedException("JsonWriter"); } if (State != BsonWriterState.Name) { ThrowInvalidState("WriteEndDocument", BsonWriterState.Name); } base.WriteEndDocument(); if (_jsonWriterSettings.Indent && _context.HasElements) { _textWriter.Write(_jsonWriterSettings.NewLineChars); if (_context.ParentContext != null) { _textWriter.Write(_context.ParentContext.Indentation); } _textWriter.Write("}"); } else { _textWriter.Write(" }"); } if (_context.ContextType == ContextType.ScopeDocument) { _context = _context.ParentContext; WriteEndDocument(); } else { _context = _context.ParentContext; } if (_context == null) { State = BsonWriterState.Done; } else { State = GetNextState(); } }
/// <summary> /// Writes the start of a BSON array to the writer. /// </summary> public override void WriteStartArray() { if (Disposed) { throw new ObjectDisposedException("JsonWriter"); } if (State != BsonWriterState.Value && State != BsonWriterState.Initial) { ThrowInvalidState("WriteStartArray", BsonWriterState.Value, BsonWriterState.Initial); } base.WriteStartArray(); WriteNameHelper(Name); _textWriter.Write("["); _context = new JsonWriterContext(_context, ContextType.Array, _jsonWriterSettings.IndentChars); State = BsonWriterState.Value; }
/// <summary> /// Writes the start of a BSON document to the writer. /// </summary> public override void WriteStartDocument() { if (Disposed) { throw new ObjectDisposedException("JsonWriter"); } if (State != BsonWriterState.Value && State != BsonWriterState.Initial && State != BsonWriterState.ScopeDocument) { ThrowInvalidState("WriteStartDocument", BsonWriterState.Value, BsonWriterState.Initial, BsonWriterState.ScopeDocument); } base.WriteStartDocument(); if (State == BsonWriterState.Value || State == BsonWriterState.ScopeDocument) { WriteNameHelper(Name); } _textWriter.Write("{"); var contextType = (State == BsonWriterState.ScopeDocument) ? ContextType.ScopeDocument : ContextType.Document; _context = new JsonWriterContext(_context, contextType, _jsonWriterSettings.IndentChars); State = BsonWriterState.Name; }
// constructors internal JsonWriterContext(JsonWriterContext parentContext, ContextType contextType, string indentChars) { _parentContext = parentContext; _contextType = contextType; _indentation = (parentContext == null) ? indentChars : parentContext.Indentation + indentChars; }