Sha256: 849e17c70cacec3e3ce0c07736c6a37e27be655fa3184b22e45e3fcff2bfb86e

Contents?: true

Size: 716 Bytes

Versions: 7

Compression:

Stored size: 716 Bytes

Contents

require 'ostruct'

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

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

    def to_hash
      table
    end

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

    def []=(name, value)
      modifiable[name.to_sym] = value
    end

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

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

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

    def method_missing(*a, &b)
      to_hash.__send__(*a, &b)
    rescue NoMethodError
      super
    end
  end
end

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
json_pure-1.6.8 lib/json/light_object.rb
json-1.6.8 lib/json/light_object.rb
json-1.6.8-java lib/json/light_object.rb
json-maglev--1.6.7 lib/json/light_object.rb
json-1.6.7-java lib/json/light_object.rb
json_pure-1.6.7 lib/json/light_object.rb
json-1.6.7 lib/json/light_object.rb