class Format::Modifier

Attributes

debug[R]
helper[R]

Public Class Methods

new(yml, helper) click to toggle source
# File lib/src/format/modifier.rb, line 3
def initialize(yml, helper)
  @debug = yml.fetch(:debug, false)
  @helper = helper
end

Public Instance Methods

apply(raw_value, modifiers) click to toggle source
# File lib/src/format/modifier.rb, line 8
def apply(raw_value, modifiers)
  [modifiers].flatten.compact.reduce(raw_value) do |value, modifier|
    method_name, params = modifier_props(modifier).values_at(:name, :params)

    modify_value(value, method_name, params)
  end
end

Private Instance Methods

modifier_props(modifier) click to toggle source
# File lib/src/format/modifier.rb, line 20
def modifier_props(modifier)
  modifier.is_a?(String) ? { name: modifier } : modifier
end
modify_value(value, method, params) click to toggle source
# File lib/src/format/modifier.rb, line 24
def modify_value(value, method, params)
  args = [value]
  if params.present?
    args = params.is_a?(Array) ? [value, *params] : [value, **params]
  end

  value.try(method, *params) || helper.send(method, *args)
rescue StandardError => error
  raise error unless debug

  "Error invoking '#{method}' with (#{args.join(',')}): #{error}"
end