void ParseAttributeTag (string code, ILocation location) { AspParser outerParser = location as AspParser; int positionOffset = outerParser != null ? outerParser.BeginPosition : 0; AspParser parser = new AspParser ("@@attribute_tag@@", new StringReader (code), location.BeginLine - 1, positionOffset, outerParser); parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); parser.Parse (); if (text.Length > 0) FlushText (); }
void DoParse (string str) { AspParser outerParser = location as AspParser; int positionOffset = outerParser != null ? outerParser.BeginPosition : 0; AspParser parser = new AspParser ("@@code_render@@", new StringReader (str), location.BeginLine - 1, positionOffset, outerParser); parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); parser.Parse (); }
void ParseDirective (string line) { AspParser parser; using (StringReader input = new StringReader (line)) { parser = new AspParser (physPath, input); } parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); parser.Parse (); }
void TextParsed (ILocation location, string text) { if (ignore_text) return; if (inScript) { this.text.Append (text); FlushText (true); return; } IList blocks = SplitTextIntoBlocks (text); foreach (TextBlock block in blocks) { switch (block.Type) { case TextBlockType.Verbatim: this.text.Append (block.Content); break; case TextBlockType.Expression: if (this.text.Length > 0) FlushText (true); CodeRenderParser r = new CodeRenderParser (block.Content, stack.Builder, location); r.AddChildren (this); break; case TextBlockType.Tag: ParseAttributeTag (block.Content, location); break; case TextBlockType.Comment: { this.text.Append ("<!--"); FlushText (true); string blockToParse = block.Content.Substring (4, block.Length - 7); bool condEndif; if (blockToParse.EndsWith ("<![endif]")) { blockToParse = blockToParse.Substring (0, blockToParse.Length - 9); condEndif = true; } else condEndif = false; AspParser outerParser = location as AspParser; int positionOffset = outerParser != null ? outerParser.BeginPosition : 0; AspParser parser = new AspParser ("@@comment_code@@", new StringReader (blockToParse), location.BeginLine - 1, positionOffset, outerParser); parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); parser.Parse (); if (condEndif) this.text.Append ("<![endif]"); this.text.Append ("-->"); FlushText (true); break; } } } }
public void AddChildren () { int index = str.IndexOf ("<%"); if (index > 0) { TextParsed (null, str.Substring (0, index)); str = str.Substring (index); } AspParser parser = new AspParser ("@@inner_string@@", new StringReader (str)); parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); parser.Parse (); }