Class: LiquidResponse::ViewHelper::LiquidBuffer
- Inherits:
-
Object
- Object
- LiquidResponse::ViewHelper::LiquidBuffer
- Defined in:
- lib/liquid_response/view_helper.rb
Defined Under Namespace
Classes: LiquidVariable
Instance Method Summary collapse
- #assign_liquid(variable, value) ⇒ Object
-
#initialize ⇒ LiquidBuffer
constructor
A new instance of LiquidBuffer.
- #line(liquid_line) ⇒ Object
- #liquid_arguments(assigns, _base_name = nil) ⇒ Object
- #liquid_value(value, variable_name = nil) ⇒ Object
- #render_liquid(name, **assigns) ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize ⇒ LiquidBuffer
Returns a new instance of LiquidBuffer.
41 42 43 |
# File 'lib/liquid_response/view_helper.rb', line 41 def initialize @lines = [] end |
Instance Method Details
#assign_liquid(variable, value) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/liquid_response/view_helper.rb', line 59 def assign_liquid(variable, value) LiquidVariable.validate_name!(variable) if value.is_a?(Hash) value = "null | default: #{liquid_arguments(value, variable)}" else value = liquid_value(value, variable) end line "{% assign #{variable} = #{value} %}" end |
#line(liquid_line) ⇒ Object
45 46 47 48 |
# File 'lib/liquid_response/view_helper.rb', line 45 def line(liquid_line) @lines << liquid_line nil end |
#liquid_arguments(assigns, _base_name = nil) ⇒ Object
71 72 73 |
# File 'lib/liquid_response/view_helper.rb', line 71 def liquid_arguments(assigns, _base_name = nil) assigns.map { |k, v| "#{k}: #{liquid_value(v, k.to_s)}" }.join(", ") end |
#liquid_value(value, variable_name = nil) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/liquid_response/view_helper.rb', line 75 def liquid_value(value, variable_name = nil) if value.respond_to?(:as_liquid) value = value.as_liquid elsif value.respond_to?(:serializable_hash) value = value.serializable_hash end value = case value when String, Numeric, TrueClass, FalseClass, NilClass, Date, Time, Symbol value.to_json when LiquidVariable value.name when Hash assign_name = LiquidVariable.random("h_#{variable_name}").name assign_liquid(assign_name, value) assign_name else raise UnsupportedValueError.new(value, variable_name) end value.html_safe end |
#render_liquid(name, **assigns) ⇒ Object
54 55 56 57 |
# File 'lib/liquid_response/view_helper.rb', line 54 def render_liquid(name, **assigns) assigns_liquid = ", #{liquid_arguments(assigns)}" unless assigns.blank? line "{% render #{name.to_s.to_json}#{assigns_liquid} %}" end |
#to_s ⇒ Object
50 51 52 |
# File 'lib/liquid_response/view_helper.rb', line 50 def to_s @lines.join("\n").html_safe end |