Exemplo n.º 1
0
        public void OnCompiling(ICompiledHandlebarsConfiguration configuration)
        {
            var helperMissingPathInfo = PathInfoStore.Current.GetOrAdd(HelperMissingKey);

            if (!configuration.Helpers.ContainsKey(helperMissingPathInfo))
            {
                var helper = _helper ?? new MissingHelperDescriptor();
                if (configuration.Helpers.TryGetValue(helperMissingPathInfo, out var existingHelper))
                {
                    existingHelper.Value = helper;
                    return;
                }

                configuration.Helpers.AddOrReplace(helperMissingPathInfo, new Ref <IHelperDescriptor <HelperOptions> >(helper));
            }

            var blockHelperMissingKeyPathInfo = PathInfoStore.Current.GetOrAdd(BlockHelperMissingKey);

            if (!configuration.BlockHelpers.ContainsKey(blockHelperMissingKeyPathInfo))
            {
                var blockHelper = _blockHelper ?? new MissingBlockHelperDescriptor();
                if (configuration.BlockHelpers.TryGetValue(blockHelperMissingKeyPathInfo, out var existingHelper))
                {
                    existingHelper.Value = blockHelper;
                    return;
                }

                configuration.BlockHelpers.AddOrReplace(blockHelperMissingKeyPathInfo, new Ref <IHelperDescriptor <BlockHelperOptions> >(blockHelper));
            }
        }
 public FastExpressionCompiler(ICompiledHandlebarsConfiguration configuration, ClosureFeature closureFeature)
 {
     _closureFeature       = closureFeature;
     _templateClosure      = closureFeature?.TemplateClosure;
     _closure              = closureFeature?.Closure;
     _expressionMiddleware = configuration.ExpressionMiddleware;
 }
        public void OnCompiling(ICompiledHandlebarsConfiguration configuration)
        {
            var templateFeature = ((InternalHandlebarsConfiguration)configuration).Features
                                  .OfType <ClosureFeature>().SingleOrDefault();

            configuration.ExpressionCompiler = new DefaultExpressionCompiler(configuration, templateFeature);
        }
        public void OnCompiling(ICompiledHandlebarsConfiguration configuration)
        {
            var pathInfoStore = configuration.PathInfoStore;

            var helperMissingPathInfo = pathInfoStore.GetOrAdd(HelperMissingKey);

            if (!configuration.Helpers.ContainsKey(helperMissingPathInfo))
            {
                var helper = _helper ?? new MissingHelperDescriptor();
                configuration.Helpers.AddOrUpdate(helperMissingPathInfo,
                                                  h => new StrongBox <HelperDescriptorBase>(h),
                                                  (h, o) => o.Value = h,
                                                  helper);
            }

            var blockHelperMissingKeyPathInfo = pathInfoStore.GetOrAdd(BlockHelperMissingKey);

            if (!configuration.BlockHelpers.ContainsKey(blockHelperMissingKeyPathInfo))
            {
                var blockHelper = _blockHelper ?? new MissingBlockHelperDescriptor();
                configuration.BlockHelpers.AddOrUpdate(blockHelperMissingKeyPathInfo,
                                                       h => new StrongBox <BlockHelperDescriptorBase>(h),
                                                       (h, o) => o.Value = h,
                                                       blockHelper);
            }
        }
        public void OnCompiling(ICompiledHandlebarsConfiguration configuration)
        {
            _configuration = configuration;

            configuration.BlockHelpers["with"]    = With;
            configuration.BlockHelpers["*inline"] = Inline;

            configuration.ReturnHelpers["lookup"] = Lookup;
        }
 private static bool IsBlockHelper(Expression item, ICompiledHandlebarsConfiguration configuration)
 {
     item = UnwrapStatement(item);
     if (item is HelperExpression hitem)
     {
         var helperName     = hitem.HelperName;
         var helperPathInfo = configuration.PathInfoStore.GetOrAdd(helperName);
         return(hitem.IsBlock || !configuration.Helpers.ContainsKey(helperPathInfo) && configuration.BlockHelpers.ContainsKey(helperPathInfo));
     }
     return(false);
 }
 public static ObjectDescriptor Create(object from, ICompiledHandlebarsConfiguration configuration)
 {
     if (from == null)
     {
         return(null);
     }
     if (!configuration.ObjectDescriptorProvider.TryGetDescriptor(@from.GetType(), out var descriptor))
     {
         return(null);
     }
     return(descriptor);
 }
Exemplo n.º 8
0
 internal UndefinedBindingResult GetUndefinedBindingResult(ICompiledHandlebarsConfiguration configuration)
 {
     if (_undefinedBindingResult != null)
     {
         return(_undefinedBindingResult);
     }
     lock (_lock)
     {
         return(_undefinedBindingResult ??
                (_undefinedBindingResult = new UndefinedBindingResult(this, configuration)));
     }
 }
Exemplo n.º 9
0
        /// <inheritdoc cref="IFeature.OnCompiling"/>
        public void OnCompiling(ICompiledHandlebarsConfiguration configuration)
        {
            var descriptorProvider = configuration.ObjectDescriptorProvider;

            foreach (var type in _types)
            {
                if (!descriptorProvider.CanHandleType(type))
                {
                    continue;
                }
                descriptorProvider.TryGetDescriptor(type, out _);
            }
        }
Exemplo n.º 10
0
            public BindingContext CreateContext(ICompiledHandlebarsConfiguration configuration, object value, BindingContext parent, TemplateDelegate partialBlockTemplate)
            {
                var context = Get();

                context.Configuration        = configuration;
                context.Value                = value;
                context.ParentContext        = parent;
                context.PartialBlockTemplate = partialBlockTemplate;

                context.Initialize();

                return(context);
            }
Exemplo n.º 11
0
            public BindingContext CreateContext(ICompiledHandlebarsConfiguration configuration, object value, EncodedTextWriter writer, BindingContext parent, string templatePath, Action <BindingContext, TextWriter, object> partialBlockTemplate)
            {
                var context = Get();

                context.Configuration        = configuration;
                context.Value                = value;
                context.TextWriter           = writer;
                context.ParentContext        = parent;
                context.TemplatePath         = templatePath;
                context.PartialBlockTemplate = partialBlockTemplate;

                context.Initialize();

                return(context);
            }
Exemplo n.º 12
0
        private static void PopulateHash(HashParameterDictionary hash, object from, ICompiledHandlebarsConfiguration configuration)
        {
            var descriptor = HandlebarsDotNet.ObjectDescriptors.ObjectDescriptor.Create(from, configuration.ObjectDescriptorProvider);
            var accessor   = descriptor.MemberAccessor;
            var properties = descriptor.GetProperties(descriptor, from);
            var enumerator = properties.GetEnumerator();

            while (enumerator.MoveNext())
            {
                var segment = ChainSegment.Create(enumerator.Current);
                if (hash.ContainsKey(segment))
                {
                    continue;
                }
                if (!accessor.TryGetValue(@from, segment, out var value))
                {
                    continue;
                }
                hash[segment] = value;
            }
        }
        public static TemplateDelegate Compile(ExtendedStringReader source, ICompiledHandlebarsConfiguration configuration)
        {
            var createdFeatures = configuration.Features;

            for (var index = 0; index < createdFeatures.Count; index++)
            {
                createdFeatures[index].OnCompiling(configuration);
            }

            var expressionBuilder = new ExpressionBuilder(configuration);
            var tokens            = Tokenizer.Tokenize(source).ToList();
            var expressions       = expressionBuilder.ConvertTokensToExpressions(tokens);
            var action            = FunctionBuilder.Compile(expressions, configuration);

            for (var index = 0; index < createdFeatures.Count; index++)
            {
                createdFeatures[index].CompilationCompleted();
            }

            return(action);
        }
        public static BlockAccumulatorContext Create(Expression item, ICompiledHandlebarsConfiguration configuration)
        {
            BlockAccumulatorContext context = null;

            if (IsConditionalBlock(item))
            {
                context = new ConditionalBlockAccumulatorContext(item);
            }
            else if (IsPartialBlock(item))
            {
                context = new PartialBlockAccumulatorContext(item);
            }
            else if (IsIteratorBlock(item))
            {
                context = new IteratorBlockAccumulatorContext(item);
            }
            else if (IsBlockHelper(item, configuration))
            {
                context = new BlockHelperAccumulatorContext(item);
            }

            return(context);
        }