Module: DeeplyEnumerable::Enumerable::ClassMethods
- Defined in:
- lib/deeply_enumerable/enumerable.rb
Instance Method Summary collapse
-
#deep_compact(object) ⇒ Object
Recursively removes nil values.
-
#deep_compact_blank(object) ⇒ Object
Recursively removes every blank value.
-
#deep_compact_blanked(object) ⇒ Object
Recursively removes nils and collections that became blank through compaction, while keeping values that were already blank.
-
#deep_compact_existing_blank(object) ⇒ Object
Recursively removes nils and values that are already blank, while keeping collections that only become blank as a result of compaction.
- #deep_rebuild(object) ⇒ Object
- #rebuild(object) ⇒ Object
- #unenumerable ⇒ Object
Instance Method Details
#deep_compact(object) ⇒ Object
Recursively removes nil values. Mirrors Ruby’s Array#compact / Hash#compact.
35 36 37 |
# File 'lib/deeply_enumerable/enumerable.rb', line 35 def deep_compact(object) deep_rebuild(object).deep_compact end |
#deep_compact_blank(object) ⇒ Object
Recursively removes every blank value. Mirrors Rails’ Enumerable#compact_blank.
53 54 55 |
# File 'lib/deeply_enumerable/enumerable.rb', line 53 def deep_compact_blank(object) deep_rebuild(object).deep_compact_blank end |
#deep_compact_blanked(object) ⇒ Object
Recursively removes nils and collections that became blank through compaction, while keeping values that were already blank.
47 48 49 |
# File 'lib/deeply_enumerable/enumerable.rb', line 47 def deep_compact_blanked(object) deep_rebuild(object).deep_compact_blanked end |
#deep_compact_existing_blank(object) ⇒ Object
Recursively removes nils and values that are already blank, while keeping collections that only become blank as a result of compaction.
41 42 43 |
# File 'lib/deeply_enumerable/enumerable.rb', line 41 def deep_compact_existing_blank(object) deep_rebuild(object).deep_compact_existing_blank end |
#deep_rebuild(object) ⇒ Object
28 29 30 31 |
# File 'lib/deeply_enumerable/enumerable.rb', line 28 def deep_rebuild(object) check_object_class(object) new.tap { |deeply_enumerable_object| object.each { |value| deeply_enumerable_object.push(rebuild(value)) } } end |
#rebuild(object) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/deeply_enumerable/enumerable.rb', line 16 def rebuild(object) deeply_enumerable_class_name = DeeplyEnumerable.constants(false).detect do |const| deeply_enumerable_const = DeeplyEnumerable.const_get(const) deeply_enumerable_const.respond_to?(:superclass) ? !!object.is_a?(deeply_enumerable_const.superclass) : false end return object if deeply_enumerable_class_name.nil? deeply_enumerable_class = DeeplyEnumerable.const_get(deeply_enumerable_class_name) deeply_enumerable_class.respond_to?(:deep_rebuild) ? deeply_enumerable_class.deep_rebuild(object) : object end |
#unenumerable ⇒ Object
57 58 59 |
# File 'lib/deeply_enumerable/enumerable.rb', line 57 def unenumerable @unenumerable ||= UNENUMERABLE.map { |unenumerable| unenumerable.constantize rescue nil }.compact end |