Class: Liquidice::Transformer::Nodes::LiquidTemplateInterpolation

Inherits:
Base
  • Object
show all
Defined in:
lib/liquidice/transformer/nodes/liquid_template_interpolation.rb

Instance Attribute Summary

Attributes inherited from Base

#children, #options, #original_text

Instance Method Summary collapse

Methods inherited from Base

#can_be_merged?, #dot_id, #initialize, #strict_mode?, #write_dot, #write_dot_file

Constructor Details

This class inherits a constructor from Liquidice::Transformer::Nodes::Base

Instance Method Details

#to_sObject



33
34
35
# File 'lib/liquidice/transformer/nodes/liquid_template_interpolation.rb', line 33

def to_s
  children.map(&:to_s).join
end

#transform!Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/liquidice/transformer/nodes/liquid_template_interpolation.rb', line 5

def transform!
  head, tail, middle = [], [], []

  current_interpolation_part_context = ::Liquidice::Transformer::Nodes::LiquidInterpolationPart::OPEN_DELIMITER_TYPE
  children.each do |child|
    if child.is_a?(::Liquidice::Transformer::Nodes::LiquidInterpolationPart)
      middle << child
      current_interpolation_part_context = child.type
    elsif child.is_a?(::Liquidice::Transformer::Nodes::HtmlTag)
      if current_interpolation_part_context == ::Liquidice::Transformer::Nodes::LiquidInterpolationPart::OPEN_DELIMITER_TYPE
        head << child
      elsif current_interpolation_part_context == ::Liquidice::Transformer::Nodes::LiquidInterpolationPart::INTERPOLATION_CONTENT_TYPE
        child.opening? ? head << child : tail << child
      elsif current_interpolation_part_context == ::Liquidice::Transformer::Nodes::LiquidInterpolationPart::CLOSE_DELIMITER_TYPE
        tail << child
      else
        raise "Unknown interpolation part context: #{current_interpolation_part_context}"
      end
    end
  end

  @children = head + middle + tail
end

#validate!Object



29
30
31
# File 'lib/liquidice/transformer/nodes/liquid_template_interpolation.rb', line 29

def validate!
  raise(Liquidice::Errors::TransformerValidationError, "Children must be present") if children.empty?
end