Sha256: 77508fe70778c11de44e117ee1626c52d41332eafd00325be09b529c2a6c5279
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
# frozen_string_literal: true module Bridgetown module Tags class BlockRenderTag < Liquid::Block def render(context) context.stack({}) do # unindent the incoming text content = Bridgetown::Utils.reindent_for_markdown(super) regions = gather_content_regions(context) site = context.registers[:site] converter = site.find_converter_instance(Bridgetown::Converters::Markdown) markdownified_content = converter.convert(content) context["processed_component_content"] = markdownified_content render_params = [@markup, "content: processed_component_content"] unless regions.empty? regions.each do |region_name, region_content| region_name = region_name.sub("content_with_region_", "") context[region_name] = converter.convert(region_content.strip_heredoc) render_params.push "#{region_name}: #{region_name}" end end Liquid::Render.parse("render", render_params.join(","), nil, @parse_context) .render_tag(context, +"") end end private def gather_content_regions(context) unless context.scopes[0].keys.find { |k| k.to_s.start_with? "content_with_region_" } return {} end context.scopes[0].select { |k| k.to_s.start_with? "content_with_region_" } end end end end Liquid::Template.register_tag("rendercontent", Bridgetown::Tags::BlockRenderTag)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
bridgetown-core-0.15.0.beta3 | lib/bridgetown-core/tags/render_content.rb |