Exemplo n.º 1
0
        public LiquidViewTemplate GetCachedTemplate(string source)
        {
            var errors = Enumerable.Empty <string>();

            var result = _memoryCache.GetOrCreate(source, (ICacheEntry e) =>
            {
                if (!_liquidViewParser.TryParse(source, out var parsed, out var error))
                {
                    // If the source string cannot be parsed, create a template that contains the parser errors
                    _liquidViewParser.TryParse(String.Join(System.Environment.NewLine, errors), out parsed, out error);
                }

                // Define a default sliding expiration to prevent the
                // cache from being filled and still apply some micro-caching
                // in case the template is used commonly
                e.SetSlidingExpiration(TimeSpan.FromSeconds(30));
                return(new LiquidViewTemplate(parsed));
            });
Exemplo n.º 2
0
        public void Process(string path, string basePath, LocalizableStringCollection strings)
        {
            var liquidMetadataProvider = new LiquidMetadataProvider(basePath);
            var liquidVisitor          = new ExtractingLiquidWalker(new[] { new LiquidStringExtractor(liquidMetadataProvider) }, strings);

            foreach (var file in Directory.EnumerateFiles(path, "*.liquid", SearchOption.AllDirectories).OrderBy(file => file))
            {
                using (var stream = File.OpenRead(file)) {
                    using (var reader = new StreamReader(stream)) {
                        if (_parser.TryParse(reader.ReadToEnd(), out var template, out var errors))
                        {
                            ProcessTemplate(template, liquidVisitor, file);
                        }
                    }
                }
            }
        }