Class: Array
- Defined in:
- lib/ruby_core_extensions/array.rb,
lib/ruby_core_extensions/compact/array.rb,
lib/ruby_core_extensions/recursive/array.rb
Class Method Summary collapse
-
.first(object) ⇒ Object
Same effect as Array.wrap(object).first but no need to create new object in case of non-array.
-
.last(object) ⇒ Object
Same effect as Array.wrap(object).last but no need to create new object in case of non-array.
Instance Method Summary collapse
- #compact_blank! ⇒ Object
- #convert ⇒ Object
- #convert_keys_recursively(&converter) ⇒ Object
- #convert_values_recursively(&converter) ⇒ Object
-
#hash_by(key = nil, method = nil, &block) ⇒ Object
Key should be unique, or latest element with that key will override previous ones.
- #hash_by_id(method = nil, &block) ⇒ Object
- #intersects?(other) ⇒ Boolean
- #make_indifferent_access_recursively ⇒ Object
- #recursive_blank? ⇒ Boolean
- #recursive_compact_blank! ⇒ Object
- #recursively(&block) ⇒ Object
- #show_name ⇒ Object
- #stringify_values_recursively ⇒ Object
- #symbolize_keys_recursively ⇒ Object
- #to_param ⇒ Object
Class Method Details
Instance Method Details
#compact_blank! ⇒ Object
2 3 4 |
# File 'lib/ruby_core_extensions/compact/array.rb', line 2 def compact_blank! delete_if{|v| v.blank?} end |
#convert ⇒ Object
3 4 5 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 3 def convert self end |
#convert_keys_recursively(&converter) ⇒ Object
7 8 9 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 7 def convert_keys_recursively(&converter) map { |v| v.convert_keys_recursively(&converter) } end |
#convert_values_recursively(&converter) ⇒ Object
11 12 13 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 11 def convert_values_recursively(&converter) map { |v| v.convert_values_recursively(&converter) } end |
#hash_by(key = nil, method = nil, &block) ⇒ Object
Key should be unique, or latest element with that key will override previous ones.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ruby_core_extensions/array.rb', line 12 def hash_by(key = nil, method = nil, &block) self.inject({}) do |h, element| if key h[element.send(key)] = if block_given? yield(element) elsif method element.send(method) else element end else # key is block and value is element h[yield(element)] = element end h end end |
#hash_by_id(method = nil, &block) ⇒ Object
29 30 31 |
# File 'lib/ruby_core_extensions/array.rb', line 29 def hash_by_id(method = nil, &block) hash_by(:id, method, &block) end |
#intersects?(other) ⇒ Boolean
33 34 35 |
# File 'lib/ruby_core_extensions/array.rb', line 33 def intersects?(other) self.any?{|i| other.include?(i)} end |
#make_indifferent_access_recursively ⇒ Object
23 24 25 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 23 def make_indifferent_access_recursively map(&:make_indifferent_access_recursively) end |
#recursive_blank? ⇒ Boolean
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 27 def recursive_blank? each do |v| if v.respond_to?(:recursive_blank?) return false unless v.recursive_blank? else return false unless v.blank? end end true end |
#recursive_compact_blank! ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/ruby_core_extensions/compact/array.rb', line 6 def recursive_compact_blank! delete_if do |v| if v.is_a?(Hash) v.recursive_compact_blank! v.recursive_blank? elsif v.is_a?(Array) v.recursive_compact_blank! v.recursive_blank? else v.blank? end end end |
#recursively(&block) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 38 def recursively(&block) each do |element| block.call(element) element.recursively(&block) if element.respond_to?(:recursively) end end |
#show_name ⇒ Object
7 8 9 |
# File 'lib/ruby_core_extensions/array.rb', line 7 def show_name first.titleize end |
#stringify_values_recursively ⇒ Object
19 20 21 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 19 def stringify_values_recursively map(&:stringify_values_recursively) end |
#symbolize_keys_recursively ⇒ Object
15 16 17 |
# File 'lib/ruby_core_extensions/recursive/array.rb', line 15 def symbolize_keys_recursively map(&:symbolize_keys_recursively) end |
#to_param ⇒ Object
3 4 5 |
# File 'lib/ruby_core_extensions/array.rb', line 3 def to_param self.collect { |element| element.respond_to?(:to_param) ? element.to_param : element } end |