示例#1
0
        internal TemplateVisitor(ITemplateContext ctx, ExpressionLanguageEngineConfig cfg)
        {
            _ctx    = ctx;
            _engine = ExpressionLanguageEngine.CreateEngine(cfg, _ctx);

            _str = new StringBuilder();
        }
示例#2
0
        private TemplateEngine(string path, ITemplateContext ctx, ICache <string, TemplateAST> cache, ExpressionLanguageEngineConfig cfg)
        {
            _ctx   = ctx ?? new TemplateContext();
            _cache = cache ?? NoCache.GetInstance <string, TemplateAST>();
            _cfg   = cfg ?? ExpressionLanguageEngineConfig.Default;

            if (string.IsNullOrEmpty(path))
            {
                _path = Runtime.StartupDirectory;
            }
            else
            {
                _path = System.IO.Path.GetFullPath(path);
            }
        }
        protected override void DoCheck(IValidateResult result, object instance, object propertyValue)
        {
            //Extend:use cache to improve performance.
            ExpressionLanguageEngineConfig cfg    = new ExpressionLanguageEngineConfig(EvalExceptionHandlingPolicy.IgnorePolicy);
            ExpressionLanguageEngine       engine = ExpressionLanguageEngine.CreateEngine(cfg);

            engine.Assign(INSTANCE, instance);
            engine.Assign(VALUE, propertyValue);
            object b = engine.Eval(_expr);

            if (!engine.EvalToBool(b))
            {
                string msg = string.Format(MSG, _pInfo.Name, instance.GetType().Name, propertyValue, _expr);
                this.LogValidateResult(result, msg);
            }
        }
示例#4
0
 /// <summary>
 /// Build up a template engine.
 /// </summary>
 /// <param name="path">All template files is supposed in a specified directory(include sub directory).
 ///                    If it is null, will use current app directory.
 /// </param>
 /// <param name="ctx">Template context, also work as EL context when eval expresion in the template.</param>
 /// <param name="cache">Template AST cache.</param>
 /// <param name="cfg">the EL engine (which used in eval expression in the template) create config.</param>
 /// <returns>Instance of template engine.</returns>
 public static TemplateEngine CreateInstance(string path = null, ITemplateContext ctx = null, ICache <string, TemplateAST> cache = null, ExpressionLanguageEngineConfig cfg = null)
 {
     return(new TemplateEngine(path, ctx, cache, cfg));
 }