Class: Liquidbook::TemplateAnalyzer
- Inherits:
-
Object
- Object
- Liquidbook::TemplateAnalyzer
- Defined in:
- lib/liquidbook/template_analyzer.rb
Overview
Analyzes Liquid templates by walking the AST to detect external variable dependencies.
Usage:
analyzer = TemplateAnalyzer.new(template_source)
analyzer.external_variables
# => [{ name: "title", properties: [{ lookups: [], filters: ["upcase"] }] },
# { name: "product", properties: [{ lookups: ["name"], filters: ["money"] }] }]
Defined Under Namespace
Classes: Scope
Instance Method Summary collapse
- #external_variables ⇒ Object
-
#initialize(source) ⇒ TemplateAnalyzer
constructor
A new instance of TemplateAnalyzer.
- #section_variable?(var) ⇒ Boolean
Constructor Details
#initialize(source) ⇒ TemplateAnalyzer
Returns a new instance of TemplateAnalyzer.
12 13 14 |
# File 'lib/liquidbook/template_analyzer.rb', line 12 def initialize(source) @source = source end |
Instance Method Details
#external_variables ⇒ Object
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/liquidbook/template_analyzer.rb', line 16 def external_variables clean_source = strip_schema(@source) template = Liquid::Template.parse(clean_source) vars = {} scope = Scope.new template.root.nodelist&.each { |node| walk(node, vars, scope) } vars.values end |
#section_variable?(var) ⇒ Boolean
27 28 29 |
# File 'lib/liquidbook/template_analyzer.rb', line 27 def section_variable?(var) var[:name] == "section" end |