module DeeplyEnumerable::Enumerable::ClassMethods

Public Instance Methods

deep_compact(object, remove_emptied_elements = true, remove_empty_elements = remove_emptied_elements) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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
unenumerable() click to toggle source
# File lib/deeply_enumerable/enumerable.rb, line 32
def unenumerable
  @unenumerable ||= UNENUMERABLE.map { |unenumerable| unenumerable.constantize rescue nil }.compact
end

Private Instance Methods

check_object_class(object) click to toggle source
# File lib/deeply_enumerable/enumerable.rb, line 38
def check_object_class(object)
  raise TypeError, "object must be a #{superclass.name}" unless object.kind_of?(superclass)
end