Sha256: 9dc32904b75ed81fd99ca591594d789eacf8c6678f94c4cc59bee5d5401ccbd8

Contents?: true

Size: 976 Bytes

Versions: 16

Compression:

Stored size: 976 Bytes

Contents

require 'ostruct'

module JSON
  class GenericObject < OpenStruct
    class << self
      alias [] new

      def json_create(data)
        data = data.dup
        data.delete JSON.create_id
        self[data]
      end

      def from_hash(object)
        case
        when object.respond_to?(:to_hash)
          result = new
          object.to_hash.each do |key, value|
            result[key] = from_hash(value)
          end
          result
        when object.respond_to?(:to_ary)
          object.to_ary.map { |a| from_hash(a) }
        else
          object
        end
      end
    end

    def to_hash
      table
    end

    def [](name)
      table[name.to_sym]
    end

    def []=(name, value)
      __send__ "#{name}=", value
    end

    def |(other)
      self.class[other.to_hash.merge(to_hash)]
    end

    def as_json(*)
      { JSON.create_id => self.class.name }.merge to_hash
    end

    def to_json(*a)
      as_json.to_json(*a)
    end
  end
end

Version data entries

16 entries across 14 versions & 10 rubygems

Version Path
challah-1.0.0.beta vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
graphael-on-rails-0.5.1 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
graphael-on-rails-0.0.1 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
challah-0.9.1.beta.3 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
devise_sociable-0.1.0 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
backbone-queryparams-rails-0.0.1 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
railscast-assets-0.0.2 vendor/bundle/gems/backbone-forms-on-rails-0.10.0/vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
railscast-assets-0.0.2 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
backbone-forms-on-rails-0.10.0 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
backbone-forms-on-rails-0.10.0 vendor/bundle/gems/backbone-forms-on-rails-0.10.0/vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
backbone-deep-rails-0.0.1 vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
challah-0.9.1.beta vendor/bundle/gems/json-1.7.6/lib/json/generic_object.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/json-1.7.6/lib/json/generic_object.rb
json-1.7.6-java lib/json/generic_object.rb
json_pure-1.7.6 lib/json/generic_object.rb
json-1.7.6 lib/json/generic_object.rb