module Normalizy::Extension
Public Instance Methods
extract_filter(rule, rule_options, attribute, filters: Normalizy.config.filters)
click to toggle source
# File lib/normalizy/extensions.rb, line 10 def extract_filter(rule, rule_options, attribute, filters: Normalizy.config.filters) options = rule_options.merge(attribute: attribute, object: self) return [filters[rule] || rule, options] unless rule.is_a?(Hash) filter = filters[rule.keys.first] || rule options = (rule.values.first || {}).merge(options) [filter, options] end
extract_rule(rule)
click to toggle source
# File lib/normalizy/extensions.rb, line 21 def extract_rule(rule) if rule.is_a?(Hash) [rule.keys.first, rule.values.first] else [rule, {}] end end
extract_value(value, filter, options, block)
click to toggle source
# File lib/normalizy/extensions.rb, line 29 def extract_value(value, filter, options, block) if filter.respond_to?(:call) if filter.method(:call).arity == -2 filter.call value, options, &block else filter.call value, &block end elsif respond_to?(filter) if method(filter).arity == -2 send filter, value, options, &block else send filter, value, &block end elsif value.respond_to?(filter) value.send filter, &block else value end end
normalizy!(attribute:, block:, options:, rules:, value:)
click to toggle source
# File lib/normalizy/extensions.rb, line 49 def normalizy!(attribute:, block:, options:, rules:, value:) rules ||= Normalizy.config.default_filters return if rules.blank? && block.blank? result = value [rules].flatten.compact.each do |rule| rule_name, rule_options = extract_rule(rule) unalias_for(rule_name).each do |unaliased_rule| filter, filter_options = extract_filter(unaliased_rule, rule_options, attribute) result = extract_value(result, filter, filter_options, block) end end result end
unalias_for(rule, aliases: Normalizy.config.normalizy_aliases)
click to toggle source
# File lib/normalizy/extensions.rb, line 68 def unalias_for(rule, aliases: Normalizy.config.normalizy_aliases) [aliases.key?(rule) ? aliases[rule] : rule].flatten.compact end