Sha256: 12dff071da1f5e52f1b8a27741cfc9a59050bdef291f59d70d76580f47c766a7
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
class StringHash < Hash include RubyLess def self.from_string(str) from_hash(JSON.parse(str)) end def self.from_hash(hash) obj = new hash.each do |k,v| obj[k.to_s] = v.to_s end obj end def self.[](value) from_hash(value) end # Deserialization used by Property def self.json_create(serialized) if data = serialized['data'] StringHash[data] else nil end end def []=(k, v) if v.blank? delete(k.to_s) else super(k.to_s, v.to_s) end end def merge!(value) value.each do |k,v| self[k] = v end self end def merge(value) obj = dup value.each do |k,v| obj[k] = v end obj end # Serialization used by Property def to_json(*args) { 'json_class' => 'StringHash', 'data' => Hash[self] }.to_json end # This is used in case we show a form with the StringHash so that the value # is not serialized to junk. This is the other side of "from_string". def to_s Hash[self].to_json end safe_context [:[], String] => String safe_method :keys => [String] end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
zena-1.2.3 | app/models/string_hash.rb |
zena-1.2.2 | app/models/string_hash.rb |