/// <summary> /// Register tag /// </summary> /// <typeparam name="T"></typeparam> /// <param name="parser"></param> /// <param name="compileFunc"></param> /// <param name="guessFunc"></param> public static void Register <T>(Parsers.ITagParser parser, Func <Nodes.ITag, CompileContext, System.Reflection.MethodInfo> compileFunc, Func <Nodes.ITag, CompileContext, Type> guessFunc) where T : Nodes.ITag { Runtime.RegisterTagParser(parser, 0); Compiler.Register <T>(compileFunc, guessFunc); }
/// <summary> /// 引擎配置 /// </summary> /// <param name="conf">配置内容</param> /// <param name="scope">初始数据</param> public static void Configure(IConfig conf, VariableScope scope) { if (conf.Loader != null) { Runtime.SetLoader(conf.Loader); } if (conf.ResourceDirectories != null && conf.ResourceDirectories.Count > 0) { foreach (var path in conf.ResourceDirectories) { Runtime.AppendResourcePath(path); } } if (conf.TagParsers != null && conf.TagParsers.Count > 0) { foreach (var parser in conf.TagParsers) { Runtime.RegisterTagParser(parser); } } Runtime.Configure(conf.ToDictionary(), scope); }
/// <summary> /// Register tag /// </summary> /// <typeparam name="T"></typeparam> /// <param name="parser"></param> /// <param name="func"></param> public static void Register <T>(Parsers.ITagParser parser, Func <Nodes.ITag, TemplateContext, object> func) where T : Nodes.ITag { Runtime.RegisterTagParser(parser, 0); Executor.Register <T>(func); }