sealink/ruby_core_extensions

View on GitHub
lib/ruby_core_extensions/recursive/array.rb

Summary

Maintainability
A
45 mins
Test Coverage
 class Array
   def convert
     self
   end

   def convert_keys_recursively(&converter)
     map { |v| v.convert_keys_recursively(&converter) }
   end

   def convert_values_recursively(&converter)
     map { |v| v.convert_values_recursively(&converter) }
   end

   def symbolize_keys_recursively
     map(&:symbolize_keys_recursively)
   end

   def stringify_values_recursively
     map(&:stringify_values_recursively)
   end

   def make_indifferent_access_recursively
     map(&:make_indifferent_access_recursively)
   end

   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

   def recursively(&block)
     each do |element|
       block.call(element)
       element.recursively(&block) if element.respond_to?(:recursively)
     end
   end
 end