Esempio n. 1
0
        private void ParseText(LinkedListStream <IBaseToken> stream, IBaseNode contentNode)
        {
            var nextToken = stream.Peek <DoxygenToken>();

            Debug.Assert(nextToken.Kind == DoxygenTokenKind.TextStart);
            TextPosition textStart = nextToken.Position;
            TextPosition textEnd   = textStart;

            stream.Next();
            while (!stream.IsEOF)
            {
                var t = stream.Peek <DoxygenToken>();
                if (t == null)
                {
                    break;
                }
                if (t.Kind == DoxygenTokenKind.TextEnd)
                {
                    textEnd = t.Position;
                    stream.Next();
                    break;
                }
                stream.Next();
            }
            if (contentNode != null)
            {
                int    textLen = textEnd.Index - textStart.Index;
                string text    = Source.Substring(textStart.Index, textLen).Trim();
                if (text.Length > 0)
                {
                    var textNode = new DoxygenNode(contentNode, new DoxygenEntity(DoxygenEntityKind.Text, new TextRange(textStart, textLen)));
                    textNode.Entity.Value    = text;
                    textNode.Entity.EndRange = new TextRange(textEnd, 0);
                    contentNode.AddChild(textNode);
                }
            }
        }