lib/jekyll/favicon/utils/configuration/merge.rb in jekyll-favicon-1.0.0.pre.1 vs lib/jekyll/favicon/utils/configuration/merge.rb in jekyll-favicon-1.0.0.pre.2

- old
+ new

@@ -8,53 +8,60 @@ module Merge def self.included(klass) klass.extend(ClassMethods) end - # Merge configurations - module ClassMethods - def merge(left = nil, *right_and_or_rest) - return left if right_and_or_rest.empty? + def self.merge_multiple(left = nil, *right_and_or_rest) + return left if right_and_or_rest.empty? - right, *rest = right_and_or_rest - merged = merge_pair left, right - return merged if rest.empty? + right, *rest = right_and_or_rest + merged = merge_pair left, right + return merged if rest.empty? - merge(merged, *rest) - end + merge_multiple(merged, *rest) + end - private + def self.merge_pair(left, right) + return right if !left || !right || !left.instance_of?(right.class) - def merge_pair(left, right) - return right if !left || !right || !left.instance_of?(right.class) - - case right - when Hash then merge_pair_hash left, right - when Array then merge_pair_array left, right - else right - end + case right + when Hash then merge_pair_hash left, right + when Array then merge_pair_array left, right + else right end + end - def merge_pair_hash(left_hash, right_hash) - left_hash.merge(right_hash) do |_, left_value, right_value| - merge left_value, right_value - end + def self.merge_pair_hash(left_hash, right_hash) + left_hash.merge(right_hash) do |_, left_value, right_value| + merge_multiple left_value, right_value end + end - def merge_pair_array(left_array, right_array) - joint_array = left_array + right_array - joint_array.group_by { |map| merge_group map } - .collect { |group, values| merge_collect group, values } - .flatten - end + def self.merge_pair_array(left_array, right_array) + joint_array = left_array + right_array + joint_array.group_by { |map| merge_group map } + .collect { |group, values| merge_collect group, values } + .flatten + end - # :reek:UtilityFunction - def merge_group(map, keys = %w[name dir]) - map.is_a?(Hash) ? map.values_at(*keys) : [] - end + def self.merge_group(map, keys = %w[name dir]) + map.is_a?(Hash) ? map.values_at(*keys) : [] + end - def merge_collect(group, values) - group.first ? merge(*values) : values + def self.merge_collect(group, values) + group.first ? merge_multiple(*values) : values + end + + # Merge configurations + module ClassMethods + def merge(left = nil, *right_and_or_rest) + return left if right_and_or_rest.empty? + + right, *rest = right_and_or_rest + merged = Merge.merge_pair left, right + return merged if rest.empty? + + Merge.merge_multiple(merged, *rest) end end end end end