Sha256: 5aabde8aef2a082f9f7a375739bab83320204b160da42a97246938a5f4a3b3d2

Contents?: true

Size: 1.31 KB

Versions: 235

Compression:

Stored size: 1.31 KB

Contents

require 'ostruct'

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

      def json_creatable?
        @json_creatable
      end

      attr_writer :json_creatable

      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

      def load(source, proc = nil, opts = {})
        result = ::JSON.load(source, proc, opts.merge(:object_class => self))
        result.nil? ? new : result
      end

      def dump(obj, *args)
        ::JSON.dump(obj, *args)
      end
    end
    self.json_creatable = false

    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

235 entries across 202 versions & 32 rubygems

Version Path
alloy_sdk-0.1.0 vendor/bundle/ruby/3.0.0/gems/json-1.8.6/lib/json/generic_object.rb
alloy_sdk-0.1.0 vendor/bundle/ruby/2.6.0/gems/json-1.8.6/lib/json/generic_object.rb
logstash-output-scalyr-0.2.1.beta vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/generic_object.rb
logstash-output-scalyr-0.2.0 vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/generic_object.rb
logstash-filter-csharp-0.2.1 vendor/bundle/jruby/2.3.0/gems/json-1.8.6-java/lib/json/generic_object.rb
logstash-filter-csharp-0.2.0 vendor/bundle/jruby/2.3.0/gems/json-1.8.6-java/lib/json/generic_object.rb
engineyard-serverside-2.8.0 lib/vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.8.0.pre4 lib/vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.8.0.pre3 lib/vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.8.0.pre2 lib/vendor/json_pure/lib/json/generic_object.rb
scout-5.9.13 vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.8.0.pre lib/vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.7.0.pre lib/vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.6.19 lib/vendor/json_pure/lib/json/generic_object.rb
rb2exe-0.3.1 bin/traveling-ruby-2.2.2/osx/lib/ruby/2.2.0/json/generic_object.rb
rb2exe-0.3.1 bin/traveling-ruby-2.2.2/win/lib/ruby/2.2.0/json/generic_object.rb
rb2exe-0.3.1 bin/traveling-ruby-2.2.2/l32/lib/ruby/2.2.0/json/generic_object.rb
rb2exe-0.3.1 bin/traveling-ruby-2.2.2/l64/lib/ruby/2.2.0/json/generic_object.rb
engineyard-serverside-2.6.17 lib/vendor/json_pure/lib/json/generic_object.rb
engineyard-serverside-2.6.16 lib/vendor/json_pure/lib/json/generic_object.rb