Sha256: 4389f00cdb3be1190b7f94fb22e1deb4fa02bcaacf1be9cc82d74854a967d17f

Contents?: true

Size: 480 Bytes

Versions: 1

Compression:

Stored size: 480 Bytes

Contents

class Hash

  def to_ostruct
    convert_to_ostruct_recursive(self)
  end

  private

    def convert_to_ostruct_recursive(result)
      if result.is_a? Hash
        result = result.dup.symbolize_keys
        result.each do |key, val|
          result[key] = convert_to_ostruct_recursive(val)
        end
        result = OpenStruct.new(result)
      elsif result.is_a? Array
        result = result.map { |r| convert_to_ostruct_recursive(r) }
      end
      result
    end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
heartwood-0.0.1 lib/heartwood/support/hash.rb