Class: Bridgetown::Converters::LiquidTemplates
- Inherits:
-
Bridgetown::Converter
- Object
- Plugin
- Bridgetown::Converter
- Bridgetown::Converters::LiquidTemplates
- Defined in:
- bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb
Class Attribute Summary collapse
-
.cached_partials ⇒ Object
Returns the value of attribute cached_partials.
Instance Attribute Summary collapse
-
#document ⇒ Object
readonly
Returns the value of attribute document.
-
#layout ⇒ Object
readonly
Returns the value of attribute layout.
-
#site ⇒ Object
readonly
Returns the value of attribute site.
Instance Method Summary collapse
-
#configure_payload(content = nil) ⇒ Object
Set page content to payload and assign paginator if document has one.
-
#convert(content, convertible) ⇒ String
Logic to do the Liquid content conversion.
-
#liquid_context ⇒ Object
-
#payload ⇒ Object
Fetches the payload used in Liquid rendering.
Methods inherited from Bridgetown::Converter
#determine_template_engine, #initialize, input, #inspect, #line_start, #matches, #output_ext, support_slots, supports_slots?, template_engine
Methods inherited from Plugin
Methods included from Prioritizable
Constructor Details
This class inherits a constructor from Bridgetown::Converter
Class Attribute Details
.cached_partials ⇒ Object
Returns the value of attribute cached_partials.
13 14 15 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 13 def cached_partials @cached_partials end |
Instance Attribute Details
#document ⇒ Object (readonly)
Returns the value of attribute document.
10 11 12 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 10 def document @document end |
#layout ⇒ Object (readonly)
Returns the value of attribute layout.
10 11 12 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 10 def layout @layout end |
#site ⇒ Object (readonly)
Returns the value of attribute site.
10 11 12 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 10 def site @site end |
Instance Method Details
#configure_payload(content = nil) ⇒ Object
Set page content to payload and assign paginator if document has one.
Returns nothing
69 70 71 72 73 74 75 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 69 def configure_payload(content = nil) payload["page"] = document.to_liquid payload["paginator"] = document.respond_to?(:paginator) ? document.paginator.to_liquid : nil payload["layout"] = @layout ? @layout.to_liquid.merge({ data: @layout.data }) : {} payload["content"] = content payload["data"] = payload["page"].data end |
#convert(content, convertible) ⇒ String
Logic to do the Liquid content conversion.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 27 def convert(content, convertible) self.class.cached_partials ||= {} @payload = nil @site = convertible.site if convertible.is_a?(Bridgetown::Layout) @document = convertible.current_document @layout = convertible configure_payload(layout.current_document_output) else @document = convertible @layout = site.layouts[document.data["layout"]] configure_payload end template = site.liquid_renderer.file(convertible.path).parse(content) template.warnings.each do |e| Bridgetown.logger.warn "Liquid Warning:", LiquidRenderer.format_error(e, convertible.path) end template.render!(payload, liquid_context) # rubocop: disable Lint/RescueException rescue Exception => e Bridgetown.logger.error "Liquid Exception:", LiquidRenderer.format_error(e, convertible.path) raise e end |
#liquid_context ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 77 def liquid_context { registers: { site:, page: payload["page"], cached_partials: self.class.cached_partials, }, strict_filters: site.config["liquid"]["strict_filters"], strict_variables: site.config["liquid"]["strict_variables"], } end |
#payload ⇒ Object
Fetches the payload used in Liquid rendering. Falls back to site.site_payload if no payload is set.
Returns a Bridgetown::Drops::UnifiedPayloadDrop
62 63 64 |
# File 'bridgetown-core/lib/bridgetown-core/converters/liquid_templates.rb', line 62 def payload @payload ||= site.site_payload end |