Method: ChefApply::Text::TextWrapper#initialize

Defined in:
lib/chef_apply/text/text_wrapper.rb

#initialize(translation_tree) ⇒ TextWrapper

Returns a new instance of TextWrapper.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/chef_apply/text/text_wrapper.rb', line 25

def initialize(translation_tree)
  @tree = translation_tree
  @tree.translation_keys.each do |k|
    # Integer keys are not translatable - they're quantity indicators in the key that
    # are instead sent as arguments. If we see one here, it means it was not correctly
    # labeled as plural with !!pl in the parent key
    if k.class == Integer
      raise MissingPlural.new(@tree.instance_variable_get(:@path), k)
    end

    k = k.to_sym
    define_singleton_method k do |*args|
      subtree = @tree.send(k, *args)
      if subtree.translation_keys.empty?
        # If there are no more possible children, just return the translated value
        subtree.to_s
      else
        TextWrapper.new(subtree)
      end
    end
  end
end