class ChefCore::Text::TextWrapper
TextWrapper
is a wrapper around R18n that returns all resolved values as Strings, and raise an error when a given i18n key is not found.
This simplifies behaviors when interfacing with other libraries/components that don't play nicely with TranslatedString or Untranslated out of R18n.
Public Class Methods
new(translation_tree)
click to toggle source
# File lib/chef_core/text/text_wrapper.rb, line 26 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.methods.include?(:translation_keys) && !subtree.translation_keys.empty? # If there are no more possible children, just return the translated value TextWrapper.new(subtree) else subtree.to_s end end end end
Public Instance Methods
method_missing(name, *args)
click to toggle source
# File lib/chef_core/text/text_wrapper.rb, line 49 def method_missing(name, *args) raise InvalidKey.new(@tree.instance_variable_get(:@path), name) end