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); }
public void ParseWillNotParseAnyTagsOutsideOfW_Document() { var testInput = @"<pkg:package> <pkg:xmlData><w:document> <w:body> <w:p testAttrib=""test""> <w:pPr> <w:b /> </w:pPr> </w:p> </w:body></w:document></pkg:xmlData> <pkg:part pkg:name=""/word/footnotes.xml"" pkg:contentType=""application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml""> <pkg:xmlData> <w:footnote w:type=""separator"" w:id="" - 1""> <w:p w:rsidR = ""00644911"" w:rsidRDefault = ""00644911"" w:rsidP = ""00230A5E""> <w:pPr> <w:spacing w:after=""0"" w:line = ""240"" w:lineRule=""auto"" /> </ w:pPr > <w:r> <w:separator/> </w:r> </w:p> </w:footnote> </pkg:xmlData> <pkg:part> </pkg:package> "; var a = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); a.Parse(true); Assert.AreEqual(KeywordToken.Body, a.Root.Root.Type); }
public static INode ParseString(string text, bool shouldAnalyze = false) { OoxmlNodeTd parent = new OoxmlNodeTd(new OoxmlScanner(new Source(text))); //parent.Use(new ElementToAttributeAnalyzer()); //parent.Use(new AttributeCopierAnalyzer()); parent.Parse(shouldAnalyze); return(parent.Root.Root); }
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 ParseReturnsBodyAsRootNodeWhereAppropriate() { // new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.FullName var pathCurrentDirectory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory) .Parent? .Parent? .FullName + "/Data/RootNodeTest.xml"; var testInput = File.ReadAllText(pathCurrentDirectory); var a = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); a.Parse(true); Assert.AreEqual(KeywordToken.Body, a.Root.Root.Type); }
public void TestBasicNode() { var testInput = @"<w:p testAttrib=""test"" another=""testagain"">ok jim</w:p>"; var program = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); program.Parse(); var rootNode = program.Root.Root; Assert.AreEqual(KeywordToken.Paragraph, rootNode.Type); Assert.AreEqual("test", rootNode.GetAttribute("unknown")); Assert.AreEqual("testagain", rootNode.GetAttribute("unknown_2")); Assert.AreEqual("ok jim", rootNode.Children.First().GetAttribute("Text")); }
public void ShouldRunsAnalyzersOnParse() { var analyzer = new Mock <Analyzer>(MockBehavior.Strict); analyzer.Setup(z => z.Analyze(It.IsAny <INode>())) .Returns <INode>(n => n); var testInput = @"<w:p testAttrib=""test"">ok jim</w:p>"; var a = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); a.Use(analyzer.Object); a.Parse(); analyzer.Verify(z => z.Analyze(It.IsAny <INode>())); }
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); }
public void ParsePassesDefaultAnalyzersResultsToCustomAnalyzers() { var analyzer = new Mock <Analyzer>(MockBehavior.Strict); analyzer.Setup(z => z.Analyze(It.IsAny <INode>())) .Returns <INode>(n => { Assert.AreEqual(bool.TrueString, n.GetAttribute("bold")); return(n); }); var testInput = @"<w:p testAttrib=""test""> <w:pPr> <w:b /> </w:pPr> </w:p>"; var a = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); a.Use(analyzer.Object); a.Parse(true); }
public void ParseDoesRunThroughDefaultAnalyzersWhenSpecified() { var analyzer = new Mock <Analyzer>(MockBehavior.Strict); analyzer.Setup(z => z.Analyze(It.IsAny <INode>())) .Returns <INode>(n => n); var testInput = @"<w:p testAttrib=""test""> <w:pPr> <w:b /> </w:pPr> <w:r> <w:t>ok jim</w:t> </w:r> </w:p>"; var a = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); a.Parse(true); Assert.AreEqual(bool.TrueString, a.Root.Root.GetAttribute("bold")); }
public void ParseDoesNotRunThroughDefaultAnalyzersWhenSpecified() { var analyzer = new Mock <Analyzer>(MockBehavior.Strict); analyzer.Setup(z => z.Analyze(It.IsAny <INode>())) .Returns <INode>(n => n); var testInput = @"<w:p testAttrib=""test""> <w:pPr> <w:b /> </w:pPr> <w:r> <w:t>ok jim</w:t> </w:r> </w:p>"; var a = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); a.Parse(); Assert.Throws <KeyNotFoundException>(() => a.Root.Root.GetAttribute("bold")); }
public void TestContainerElementInsideContainerElement() { var testInput = @"<w:p> <w:pPr> <w:color w:val=""FF0000"" /> </w:pPr> <w:t>testing me too</w:t> </w:p>"; var program = new OoxmlNodeTd(new OoxmlScanner(new Source(testInput))); program.Parse(); var rootNode = program.Root.Root; Assert.AreEqual(KeywordToken.Paragraph, rootNode.Type); //Assert.AreEqual(KeywordToken.Color, rootNode.Children[0].Children[0].Type); // Assert.AreEqual("FF0000", rootNode.GetAttribute("fontColor")); //Assert.AreEqual(KeywordToken.Text, rootNode.Children[1].Type); //Assert.AreEqual("testing me too", rootNode.Children[1].Children[0].GetAttribute("value")); //Assert.AreEqual(2, rootNode.Children.Count); }
public TextStatementParser(OoxmlNodeTd parent) : base(parent) { }
protected ElementNode(OoxmlNodeTd parser) { this.parser = parser.parser; }
public ParagraphStyleStatementParser(OoxmlNodeTd parent) : base(parent) { }
public StringLiteralStatementParser(OoxmlNodeTd parent) { this._parser = parent.parser; }
public UnknownElementParser(OoxmlNodeTd parent) : base(parent) { }
protected AttributeNode(OoxmlNodeTd parent) : base(parent) { }
public PreviousParagraphStatementParser(OoxmlNodeTd parent) : base(parent) { }
public GenericElementNode(OoxmlNodeTd parent, KeywordToken token) : base(parent) { AttributeName = token; }
public ValueAttribute(OoxmlNodeTd parent) : base(parent) { }
public ItalicStatementParser(OoxmlNodeTd parent) : base(parent) { }
public ColorStatementNode(OoxmlNodeTd parser) : base(parser) { }
public UnknownStringLiteralAttribute(OoxmlNodeTd parent) : base(parent) { }