public async ValueTask <string> EvaluateAsync(string identifier, Arguments arguments, string content, Context context) { _shortcodeTemplatesDocument ??= await _shortcodeTemplatesManager.GetShortcodeTemplatesDocumentAsync(); if (!_shortcodeTemplatesDocument.ShortcodeTemplates.TryGetValue(identifier, out var template)) { return(null); } // Check if a shortcode template is recursively called. if (_identifiers.Contains(identifier)) { return(null); } else { _identifiers.Add(identifier); } var model = new ShortcodeViewModel { Args = arguments, Content = content, Context = context }; var parameters = new Dictionary <string, FluidValue> { [identifier] = new StringValue(""), ["Args"] = new ObjectValue(model.Args), ["Content"] = new ObjectValue(new Content(model.Content)), ["Context"] = new ObjectValue(model.Context) }; var result = await _liquidTemplateManager.RenderStringAsync(template.Content, _htmlEncoder, model, parameters); // Allow multiple serial calls of this shortcode template. _identifiers.Remove(identifier); return(result); }
public async ValueTask <string> EvaluateAsync(string identifier, Arguments arguments, string content, Context context) { _shortcodeTemplatesDocument ??= await _shortcodeTemplatesManager.GetShortcodeTemplatesDocumentAsync(); if (!_shortcodeTemplatesDocument.ShortcodeTemplates.TryGetValue(identifier, out var template)) { return(null); } var model = new ShortcodeViewModel { Args = arguments, Content = content, Context = context }; return(await _liquidTemplateManager.RenderAsync(template.Content, _htmlEncoder, model, scope => { scope.SetValue("Content", model.Content); scope.SetValue("Args", model.Args); scope.SetValue("Context", model.Context); })); }