private void scope_OnParse(AbsParser parser, ParserEventArgs e) { var sc = e.Body.ToString(); var option = e.Option.Clone() as ParserOption; var invoker = new ScopeInvoker(option, sc); invoker.Execute(e.Option.StatementParameters); e.Replace = true; e.Replacement = new StringBuilder(invoker.Result); }
private void ParamParser_OnParse(AbsParser parser, ParserEventArgs e) { var value = @params[e.Body.ToString().Trim(' ')]; e.Replace = true; e.Replacement = new StringBuilder(value); }
public string Parse(StringBuilder code) { Code = code; ParseIndexes(code); var tmp = new StringBuilder(code.ToString()); var indexes = Indexes.Where(t => t.Length > 0); var tmpDic = new Dictionary<ScopeIndex, StringBuilder>(); foreach (var index in indexes) { var str = Code.ToString(index); Console.WriteLine("SCOPE : " + index.ToString()); Console.WriteLine(Code.ScopeBody(index)); var result = new StringBuilder(str); Results.Add(result); tmpDic.Add(index, result); } if (OnParse != null) { foreach (var result in tmpDic) { var str = Code.ToString(result.Key); var body = new StringBuilder(result.Value.ToString()); body = body.Remove(0, Tag.BeginTag.Length); body = body.Remove(body.Length - Tag.CloseTag.Length, Tag.CloseTag.Length); var args = new ParserEventArgs { Replace = true, Replacement = new StringBuilder(), Result = result.Value, Tag = Tag, Index = result.Key, Body = body, Option = Option }; OnParse.Invoke(this, args); if (args.Replace) { tmp = tmp.Replace(str, args.Replacement.ToString()); } } } return tmp.ToString(); }
private void OutputParser_OnParse(AbsParser parser, ParserEventArgs e) { var tmp = e.Body; OutputParameterParser.OnParse += (OutputParameterParser_OnParse); var body = OutputParameterParser.Parse(tmp); OutputParameterParser.OnParse -= (OutputParameterParser_OnParse); e.Replace = true; e.Replacement = new StringBuilder(string.Format("Output += @\"{0}\";", body)); }
private void OutputParameterParser_OnParse(AbsParser parser, ParserEventArgs e) { var tmp = e.Body; e.Replace = true; e.Replacement = new StringBuilder(string.Format("\"+{0}+@\"", tmp)); }