Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/puppet_library/util/patches.rb
Instance Method Summary collapse
- #deep_merge ⇒ Object
- #each_in_parallel ⇒ Object
-
#unique_by ⇒ Object
Like ‘uniq’ with a block, but also works on Ruby < 1.9.
- #version_sort ⇒ Object
- #version_sort_by ⇒ Object
Instance Method Details
#deep_merge ⇒ Object
64 65 66 67 68 |
# File 'lib/puppet_library/util/patches.rb', line 64 def deep_merge inject({}) do |merged, map| merged.deep_merge(map) end end |
#each_in_parallel ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/puppet_library/util/patches.rb', line 70 def each_in_parallel threads = map do |element| Thread.new do yield(element) end end threads.each &:join end |
#unique_by ⇒ Object
Like ‘uniq’ with a block, but also works on Ruby < 1.9
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/puppet_library/util/patches.rb', line 41 def unique_by attr_to_element = {} select do |element| attribute = yield(element) is_duplicate = attr_to_element.include? attribute unless is_duplicate attr_to_element[attribute] = element end !is_duplicate end end |
#version_sort ⇒ Object
53 54 55 |
# File 'lib/puppet_library/util/patches.rb', line 53 def version_sort version_sort_by { |e| e } end |
#version_sort_by ⇒ Object
57 58 59 60 61 62 |
# File 'lib/puppet_library/util/patches.rb', line 57 def version_sort_by sort_by do |element| version = yield(element) Gem::Version.new(version) end end |