public override void Visit(Document pair) { PrintNodeName(pair); PrintNodeStart(pair); base.Visit(pair); PrintNodeEnd(pair); }
/// <inheritdoc /> public override void Visit(Document document) { CurrentDocument = (DOM.Mapped.Document)document; ChoiceStack.Push(CurrentDocument.ChoiceInfo); using (JsonWriter = WriterDelegate(document.Name)) { BlockIsStarting = true; BlockState = new Stack <BlockStateEnum>(); base.Visit(document); if (BlockState.Count > 0) { var blockState = BlockState.Pop(); if (blockState == BlockStateEnum.Array) { JsonWriter.WriteEndArray(); } else if (blockState == BlockStateEnum.Object) { JsonWriter.WriteEndObject(); } } //Empty document. Writing an empty object as a value. else { if (document.Assignment == AssignmentEnum.CC) { JsonWriter.WriteStartArray(); JsonWriter.WriteEndArray(); } else if (document.Assignment == AssignmentEnum.E || document.Assignment == AssignmentEnum.EE || document.Assignment == AssignmentEnum.CE) { ResolveValue(document); } else { JsonWriter.WriteStartObject(); JsonWriter.WriteEndObject(); } } } ChoiceStack.Pop(); CurrentDocument = null; }
public override void OnDocument(Document document) { _currentDocument = (DOM.Mapped.Document)document; _choiceStack.Push(_currentDocument.ChoiceInfo); using (_jsonWriter = _writerDelegate(document.Name)) { _blockStart = true; _blockState = new Stack <BlockState>(); base.OnDocument(document); if (_blockState.Count > 0) { if (_blockState.Pop() == BlockState.Array) { _jsonWriter.WriteEndArray(); } else { _jsonWriter.WriteEndObject(); } } //Empty document. Writing an empty object as a value. else { if (document.Delimiter == DelimiterEnum.CC) { _jsonWriter.WriteStartArray(); _jsonWriter.WriteEndArray(); } else if (document.Delimiter == DelimiterEnum.E || document.Delimiter == DelimiterEnum.EE || document.Delimiter == DelimiterEnum.CE) { ResolveValue(document); } else { _jsonWriter.WriteStartObject(); _jsonWriter.WriteEndObject(); } } } _choiceStack.Pop(); _currentDocument = null; }