Beispiel #1
0
 /// <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);
 }
Beispiel #2
0
 /// <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);
 }
Beispiel #3
0
 /// <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);
 }