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