Module: DeeplyEnumerable::Enumerable::ClassMethods

Defined in:
lib/deeply_enumerable/enumerable.rb

Instance Method Summary collapse

Instance Method Details

#deep_compact(object, remove_emptied_elements = true, remove_empty_elements = remove_emptied_elements) ⇒ Object



27
28
29
30
# File 'lib/deeply_enumerable/enumerable.rb', line 27

def deep_compact(object, remove_emptied_elements = true, remove_empty_elements = remove_emptied_elements)
  check_object_class(object)
  deep_rebuild(object).deep_compact(remove_emptied_elements, remove_empty_elements)
end

#deep_rebuild(object) ⇒ Object



22
23
24
25
# File 'lib/deeply_enumerable/enumerable.rb', line 22

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



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/deeply_enumerable/enumerable.rb', line 10

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

#unenumerableObject



32
33
34
# File 'lib/deeply_enumerable/enumerable.rb', line 32

def unenumerable
  @unenumerable ||= UNENUMERABLE.map { |unenumerable| unenumerable.constantize rescue nil }.compact
end