Пример #1
0
 public override void Visit(Document pair)
 {
     PrintNodeName(pair);
     PrintNodeStart(pair);
     base.Visit(pair);
     PrintNodeEnd(pair);
 }
Пример #2
0
        /// <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;
        }
Пример #3
0
        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;
        }