Sha256: 2a2ebc2ba5099c9c1934674a5c68b551652c8e4dec11d9ca6cf64af1013c45f3

Contents?: true

Size: 1.61 KB

Versions: 3

Compression:

Stored size: 1.61 KB

Contents

module BananaBits
  module Concerns
    module Hashable
      def remove_blank_values(collection)
        if collection.is_a?(Hash)
          collection.each_with_object({}) do |(k, v), new_hash|
            if v.empty? && v != false
              new_hash.delete(k)
            else
              if v.is_a?(Hash)
                new_hash[k] = remove_blank_values(v)
              elsif v.is_a?(Array)
                new_hash[k] = remove_blank_values_from_array!(v)
              else
                new_hash[k] = v unless collection.empty?
              end
            end
          end
        elsif collection.is_a?(Array)
          remove_blank_values_from_array(collection)
        end
      end

      def remove_blank_values!(collection)
        if collection.is_a?(Hash)
          collection.each_pair do |k, v|
            if (v.empty? && v != false)
              collection.delete(k)
            elsif v.is_a?(Hash)
              remove_blank_values!(v)
              collection.delete(k) if collection[k].nil? || collection[k].empty?
            elsif v.is_a?(Array)
              remove_blank_values_from_array!(v)
            end
          end
        elsif collection.is_a?(Array)
          remove_blank_values_from_array!(collection)
        end
        return collection
      end

      def remove_blank_values_from_array(arr)
        arr.map{|o| remove_blank_values(o)}
      end

      def remove_blank_values_from_array!(arr)
        arr.map{|o| remove_blank_values!(o)}
      end

      def symbolize_keys(collection)
        collection.inject({}){|result,(k,v)| result[k.to_sym] = v; result}
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
banana_bits-0.2.2 lib/banana_bits/concerns/hashable.rb
banana_bits-0.2.1 lib/banana_bits/concerns/hashable.rb
banana_bits-0.2.0 lib/banana_bits/concerns/hashable.rb