Sha256: e0c066d731f9f7513e4d4b1949f1fd87a4c5266242c6f9229afbfd64ed1cd526

Contents?: true

Size: 630 Bytes

Versions: 3

Compression:

Stored size: 630 Bytes

Contents

module A9n
  class HashExt
    class << self
      def deep_prepare(hash)
        hash.inject({}) do |result, (key, value)|
          result[(key.to_sym rescue key)] = get_value(key, value)
          result
        end
      end

      def merge(*items)
        return nil if items.compact.empty?
        items.compact.inject({}){|sum, item| sum.merge!(item)}
      end

      private

      def get_value(key, value)
        if value.is_a?(::Hash)
          deep_prepare(value)
        elsif value.is_a?(Symbol) && value == :env
          ENV[key.to_s.upcase]
        else
          value
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
a9n-0.4.5 lib/a9n/ext/hash.rb
a9n-0.4.4 lib/a9n/ext/hash.rb
a9n-0.4.3 lib/a9n/ext/hash.rb