public void ParseShouldLeaveCursorOneTokenPastTheParagraphBoundary()
        {
            var parserNode = new OoxmlNodeTd(new OoxmlScanner(
                                                 new Source(@"<w:body>
                                <w:p>
                                    <w:pPr>
                                        <w:i />
                                    </w:pPr>
                                </w:p>
                            </w:body>")
                                                 ));

            parserNode.NextToken();
            while (parserNode.CurrentToken.Keyword != KeywordToken.PreviousParagraph)
            {
                parserNode.NextToken();
            }
            var sut = new PreviousParagraphStatementParser(parserNode);

            sut.Parse(parserNode.CurrentToken);

            var currentToken = parserNode.CurrentToken;

            Assert.AreEqual(KeywordToken.Close, currentToken.Keyword);
            Assert.AreEqual("w:p", currentToken.Text);
        }
Exemple #2
0
        public void CurrentTokenDoesNotMoveCharForward()
        {
            var testInput = @"<w:p testAttrib=""test"">ok jim</w:p>";
            var a         = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput)));

            a.NextToken();
            Assert.AreEqual(a.CurrentToken.Keyword, KeywordToken.STARTING_ELEMENT);
            a.NextToken();
            Assert.AreEqual(a.CurrentToken.Keyword, KeywordToken.Paragraph);

            Assert.AreEqual(a.CurrentToken.Keyword, KeywordToken.Paragraph);
        }
        public void ParseShouldLeaveCursorOneTokenPastTheWordBoundary()
        {
            var parserNode = new OoxmlNodeTd(new OoxmlScanner(
                                                 new Source(@"<w:body>
                                <w:p>
                                    <w:t>Testing this string</w:t>
                                </w:p>
                            </w:body>")
                                                 ));

            parserNode.NextToken();
            while (parserNode.CurrentToken.Keyword != KeywordToken.StringLiteral)
            {
                parserNode.NextToken();
            }
            var Sut = new OoxmlToHtml.Parsers.StringLiteralStatementParser(parserNode);

            Sut.Parse(parserNode.CurrentToken);

            Assert.AreEqual(KeywordToken.Close, parserNode.CurrentToken.Keyword);
        }
Exemple #4
0
        public virtual INode Parse(Token token)
        {
            StringBuilder stringBuilder = new StringBuilder();

            while (_parser.CurrentToken.Keyword != KeywordToken.EOF &&
                   _parser.CurrentToken.Keyword == KeywordToken.StringLiteral)
            {
                stringBuilder.Append(_parser.CurrentToken.Text);
                stringBuilder.Append(' ');

                if (_parser.PeekToken().Keyword == KeywordToken.Code)
                {
                    break;
                }
                _parser.NextToken();
            }

            var newNode = NodeFactory.CreateNode(KeywordToken.StringLiteral);

            newNode.SetAttribute("Text", stringBuilder.ToString().TrimEnd());
            return(newNode);
        }
Exemple #5
0
        public virtual INode Parse(Token token)
        {
            var currentNode = NodeFactory.CreateNode(AttributeName);

            parser.NextToken();
            while (parser.CurrentToken.Keyword != KeywordToken.ENDING_ELEMENT &&
                   parser.CurrentToken.Keyword != KeywordToken.EOF &&
                   parser.CurrentToken.Keyword != KeywordToken.ShortClose)
            {
                IAttributeStatementParser attributeNode = null;
                switch (parser.CurrentToken.Keyword)
                {
                // parse attributes
                case KeywordToken.StringLiteral:
                    attributeNode = new UnknownStringLiteralAttribute(parser);
                    break;

                case KeywordToken.Value:
                    attributeNode = new ValueAttribute(parser);
                    break;

                default:
                    parser.NextToken();
                    break;
                }

                if (attributeNode != null)
                {
                    currentNode.SetAttribute(attributeNode.AttributeName,
                                             attributeNode.Parse(parser.CurrentToken).GetAttribute("value"));
                }
            }

            if (parser.CurrentToken.Keyword == KeywordToken.ENDING_ELEMENT)
            {
                // if we are not at the end of the file or at the end tag of the of the current tag. go into the while
                // if we are at the end of the current tag, stop collecting children for the current tag
                while (parser.CurrentToken.Keyword != KeywordToken.EOF &&
                       parser.CurrentToken.Keyword != KeywordToken.Close
                       )
                {
                    // we are in the body of the element
                    parser.NextToken();
                    IStatementParser elementNode = null;
                    switch (parser.CurrentToken.Keyword)
                    {
                    case KeywordToken.StringLiteral:
                        elementNode = new StringLiteralStatementParser(parser);
                        break;

                    case KeywordToken.Paragraph:
                        elementNode = new ParagraphStatementParser(parser);
                        break;

                    case KeywordToken.PreviousParagraph:
                        elementNode = new PreviousParagraphStatementParser(parser);
                        break;

                    case KeywordToken.Color:
                        elementNode = new ColorStatementNode(parser);
                        break;

                    case KeywordToken.Text:
                        elementNode = new TextStatementParser(parser);
                        break;

                    case KeywordToken.Italic:
                        elementNode = new ItalicStatementParser(parser);
                        break;

                    case KeywordToken.ParagraphStyle:
                        elementNode = new ParagraphStyleStatementParser(parser);
                        break;

                    case KeywordToken.Unknown:
                        elementNode = new UnknownElementParser(parser);
                        break;

                    case KeywordToken.Bold:
                        elementNode = new GenericElementNode(parser, KeywordToken.Bold);
                        break;

                    case KeywordToken.Run:
                        elementNode = new GenericElementNode(parser, KeywordToken.Run);
                        break;

                    case KeywordToken.Size:
                        elementNode = new GenericElementNode(parser, KeywordToken.Size);
                        break;
                    }

                    if (elementNode != null)
                    {
                        currentNode.AddChild(elementNode.Parse(parser.CurrentToken));
                    }
                }

                parser.NextToken();
            }
            return(currentNode);
        }