diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-07 18:44:36 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-07 18:44:36 +0000 |
commit | 9c4fc91c6b98b8ebacc599ae2eadb1eea503fa93 (patch) | |
tree | 733ec4f1304239e1a412a1fa09fcd204b291d116 /ext | |
parent | 49331ddec794834987ec5e7c4aa51264345a8ca0 (diff) | |
download | ruby-9c4fc91c6b98b8ebacc599ae2eadb1eea503fa93.tar.gz |
* 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
Diffstat (limited to 'ext')
-rw-r--r-- | ext/json/lib/json/generic_object.rb | 39 |
1 files changed, 39 insertions, 0 deletions
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 |