Sha256: 800f64a5ba096f9512aa72523616c9087814d866b0d523e4406763994ce0a349
Contents?: true
Size: 966 Bytes
Versions: 2
Compression:
Stored size: 966 Bytes
Contents
# frozen_string_literal: true module Format class Modifier def initialize(yml, helper) @debug = yml.fetch(:debug, false) @helper = helper end 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 attr_reader :helper, :debug def modifier_props(modifier) modifier.is_a?(String) ? { name: modifier } : modifier end 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
xml_data_extractor-0.7.0 | lib/src/format/modifier.rb |
xml_data_extractor-0.6.0 | lib/src/format/modifier.rb |