class Geminabox::GemListMerge
Attributes
list[RW]
Public Class Methods
from(*lists)
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 5 def self.from(*lists) lists.map{|list| new(list)}.inject(:merge) end
new(list)
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 9 def initialize(list) @list = list end
Public Instance Methods
collection()
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 29 def collection @collection ||= {} end
combine_hashes(other)
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 33 def combine_hashes(other) hash.merge(other.hash) do |key, value, other_value| (value + other_value).uniq{|v| v.values[ignore_dependencies]} end end
ensure_symbols_as_keys(item)
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 43 def ensure_symbols_as_keys(item) item.keys.each do |key| next if key.kind_of? Symbol item[key.to_sym] = item.delete(key) end end
hash()
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 19 def hash list.each do |item| ensure_symbols_as_keys(item) name = item[:name].to_sym collection[name] ||= [] collection[name] << item unless collection[name].include?(item) end collection end
ignore_dependencies()
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 39 def ignore_dependencies 0..-2 end
merge(other)
click to toggle source
# File lib/geminabox/gem_list_merge.rb, line 13 def merge(other) combine_hashes(other).values.flatten.sort do |x, y| x.values[ignore_dependencies] <=> y.values[ignore_dependencies] end end