Class: Liquidbook::ParameterMerger

Inherits:
Object
  • Object
show all
Defined in:
lib/liquidbook/parameter_merger.rb

Overview

Merges auto-detected template variables (from TemplateAnalyzer) with type/default/description metadata from @param comments (ParamParser).

Variables with @param get their declared type/default/description. Variables without @param are type-inferred from filters and control structures (e.g. money → number, for-loop → array, truthy if → checkbox). When inference is inconclusive, type falls back to “unknown”. Section variables (name == “section”) are excluded.

Usage:

merger = ParameterMerger.new(
  variables:  analyzer.external_variables,
  param_defs: param_parser.parse
)
merger.merge
# => [{ "name" => "title", "type" => "text", "default" => "My Card", "description" => "Card heading" },
#     { "name" => "color", "type" => "unknown", "default" => nil, "description" => nil }]

Instance Method Summary collapse

Constructor Details

#initialize(variables:, param_defs:) ⇒ ParameterMerger

Returns a new instance of ParameterMerger.



22
23
24
25
# File 'lib/liquidbook/parameter_merger.rb', line 22

def initialize(variables:, param_defs:)
  @variables  = variables
  @param_defs = param_defs
end

Instance Method Details

#mergeObject



27
28
29
30
31
32
# File 'lib/liquidbook/parameter_merger.rb', line 27

def merge
  @variables
    .reject { |var| section_variable?(var) }
    .map { |var| resolve(var) }
    .uniq { |p| p["name"] }
end