/// <summary> /// Interpret PostTextTail /// </summary> /// <param name="textTail">PostTextTail to interpret</param> public override void Visit(PostTextTail textTail) { XHTMLElement element = new XHTMLElement(textTail.GetPostText().GetText(), Current); element.SetTagState(false); AddElement(element); }
public void ParseEmbeddingTest() { //Create parser EmbeddingParser embeddingParser = new EmbeddingParser(Init("\"left<func1() \"text\">right\"")); Embedding parsedEmbedding = embeddingParser.ParseEmbedding(); //Test PreText Assert.AreEqual("left", parsedEmbedding.GetPreText().GetText()); //Test Embed Assert.AreEqual(typeof(ExpressionEmbed), parsedEmbedding.GetEmbed().GetType()); ExpressionEmbed expressionEmbed = (ExpressionEmbed)parsedEmbedding.GetEmbed(); Assert.AreEqual("\"text\"", expressionEmbed.GetExpression().ToString()); //Test Markup Markup markup = (Markup)expressionEmbed.GetMarkups().Get(0); Assert.AreEqual("func1", markup.GetDesignator().ToString()); Assert.AreEqual(0, markup.GetArguments().Count); //Test TextTail Assert.AreEqual(typeof(PostTextTail), parsedEmbedding.GetTextTail().GetType()); PostTextTail postTextTail = (PostTextTail)parsedEmbedding.GetTextTail(); Assert.AreEqual("right", postTextTail.GetPostText().GetText()); }
public void ParserMarkupEmbeddingStatementTest() { //Create parser StatementParser statementParser = new StatementParser(Init("p p \"left<func1() \"text\">right\";")); Statement parsedStatement = statementParser.ParseMarkupStatement(); //Test statement Assert.AreEqual(typeof(MarkupEmbeddingStatement), parsedStatement.GetType()); //Test MarkupEmbeddingStatement MarkupEmbeddingStatement markupEmbeddingStatement = (MarkupEmbeddingStatement)parsedStatement; Assert.AreEqual("p", markupEmbeddingStatement.GetMarkups().Get(0).ToString()); Assert.AreEqual("p", markupEmbeddingStatement.GetMarkups().Get(1).ToString()); //Test embedding Embedding embedding = markupEmbeddingStatement.GetEmbedding(); Assert.AreEqual("\"left<", embedding.GetPreText().ToString()); Assert.AreEqual(typeof(ExpressionEmbed), embedding.GetEmbed().GetType()); ExpressionEmbed embed = (ExpressionEmbed)embedding.GetEmbed(); Assert.AreEqual(1, embed.GetMarkups().Count); Assert.AreEqual("func1", embed.GetMarkups().Get(0).ToString()); Assert.AreEqual(typeof(TextExpression), embed.GetExpression().GetType()); Assert.AreEqual("\"text\"", embed.GetExpression().ToString()); Assert.AreEqual(typeof(PostTextTail), embedding.GetTextTail().GetType()); PostTextTail postTextTail = (PostTextTail)embedding.GetTextTail(); Assert.AreEqual(">right\"", postTextTail.GetPostText().ToString()); }
/// <summary> /// Parser for TextTail /// </summary> /// <returns>Parsed TextTail</returns> public TextTail ParseTextTail() { TextTail textTail = null; //Skip > token NextToken(">", "> embedding tailsymbol", '>'); //Parse text first to make type determination possible String parsedText = ParseTextChars(); //Determine TextTail type if (EmbeddingTokenStream.HasNext() && EmbeddingTokenStream.Peek(1).GetValue().ToString() == "\"") { //PostTextTail //Set PostText PostText postText = new PostText(); postText.SetText(parsedText); //Create PostTextTail and fill it PostTextTail postTextTail = new PostTextTail(); postTextTail.SetPostText(postText); //Skip Closing " NextToken("\"", "\"", '\"'); textTail = postTextTail; } else { //MidTextTail //Skip closing < tag of PreText NextToken("<", "< closing PreText", '<'); //Set MidText MidText midText = new MidText(); midText.SetText(parsedText); //Create MidTextTail object and fill it MidTextTail midTextTail = new MidTextTail(); midTextTail.SetMidText(midText); midTextTail.SetEmbed(ParseEmbed()); midTextTail.SetTextTail(ParseTextTail()); textTail = midTextTail; } return(textTail); }
public virtual void Visit(PostTextTail textTail) { VisitSubNodes(textTail); }