module Jekyll::Favicon::Utils::Configuration::Merge
Favicon
configuration merge logic
Public Class Methods
included(klass)
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 9 def self.included(klass) klass.extend(ClassMethods) end
merge_collect(group, values)
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 50 def self.merge_collect(group, values) group.first ? merge_multiple(*values) : values end
merge_group(map, keys = %w[name dir])
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 46 def self.merge_group(map, keys = %w[name dir]) map.is_a?(Hash) ? map.values_at(*keys) : [] end
merge_multiple(left = nil, *right_and_or_rest)
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 13 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? merge_multiple(merged, *rest) end
merge_pair(left, right)
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 23 def self.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 end
merge_pair_array(left_array, right_array)
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 39 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
merge_pair_hash(left_hash, right_hash)
click to toggle source
# File lib/jekyll/favicon/utils/configuration/merge.rb, line 33 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