Class: Liquidbook::ParameterMerger
- Inherits:
-
Object
- Object
- Liquidbook::ParameterMerger
- 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
-
#initialize(variables:, param_defs:) ⇒ ParameterMerger
constructor
A new instance of ParameterMerger.
- #merge ⇒ Object
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
#merge ⇒ Object
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 |