From 9c4fc91c6b98b8ebacc599ae2eadb1eea503fa93 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 7 May 2012 18:44:36 +0000 Subject: * ext/json/lib/json/generic_object.rb: missing file. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/json/lib/json/generic_object.rb | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 ext/json/lib/json/generic_object.rb (limited to 'ext') diff --git a/ext/json/lib/json/generic_object.rb b/ext/json/lib/json/generic_object.rb new file mode 100644 index 0000000000..7f3dbbd78d --- /dev/null +++ b/ext/json/lib/json/generic_object.rb @@ -0,0 +1,39 @@ +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 + 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 -- cgit v1.2.3