public AspParser(string filename, TextReader input, int startLineOffset, int positionOffset, AspParser outer) : this(filename, input) { this._internal = true; this._internalLineOffset = startLineOffset; this._internalPositionOffset = positionOffset; this.outer = outer; }
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 InitParser (TextReader reader, string filename) { AspParser parser = new AspParser (filename, reader); parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); parser.ParsingComplete += new ParsingCompleteHandler (ParsingCompleted); tparser.AspGenerator = this; CreateRootBuilder (inputStream, filename); if (!pstack.Push (parser)) throw new ParseException (Location, "Infinite recursion detected including file: " + filename); if (filename != "@@inner_string@@") { string arvp = Path.Combine (tparser.BaseVirtualDir, Path.GetFileName (filename)); if (VirtualPathUtility.IsAbsolute (arvp)) arvp = VirtualPathUtility.ToAppRelative (arvp); tparser.AddDependency (arvp); } }
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 (); }
public AspParser Pop () { if (parsers.Count == 0) return null; files.Remove (current.Filename); AspParser result = (AspParser) parsers.Pop (); if (parsers.Count > 0) current = (AspParser) parsers.Peek (); else current = null; return result; }
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 bool Push (AspParser parser) { if (files.Contains (parser.Filename)) return false; files [parser.Filename] = true; parsers.Push (parser); current = parser; return true; }
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 (); }
public AspParser (string filename, TextReader input, int startLineOffset, int positionOffset, AspParser outer) : this (filename, input) { this._internal = true; this._internalLineOffset = startLineOffset; this._internalPositionOffset = positionOffset; this.outer = outer; }
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 (); }
void InitParser (string filename) { StreamReader reader = new StreamReader (filename, WebEncoding.FileEncoding); AspParser parser = new AspParser (filename, reader); reader.Close (); parser.Error += new ParseErrorHandler (ParseError); parser.TagParsed += new TagParsedHandler (TagParsed); parser.TextParsed += new TextParsedHandler (TextParsed); if (!pstack.Push (parser)) throw new ParseException (Location, "Infinite recursion detected including file: " + filename); tparser.AddDependency (filename); }