method
deserialize
v7.1.3.2 -
Show latest stable
-
0 notes -
Class: Hstore
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
deserialize(value)
public
Hide source
# File activerecord/lib/active_record/connection_adapters/postgresql/oid/hstore.rb, line 18 def deserialize(value) return value unless value.is_a?(::String) scanner = StringScanner.new(value) hash = {} until scanner.eos? unless scanner.skip(/"/) raise(ArgumentError, ERROR % scanner.string.inspect) end unless key = scanner.scan(/^(\\[\\"]|[^\\"])*?(?=")/) raise(ArgumentError, ERROR % scanner.string.inspect) end unless scanner.skip(/"=>?/) raise(ArgumentError, ERROR % scanner.string.inspect) end if scanner.scan(/NULL/) value = nil else unless scanner.skip(/"/) raise(ArgumentError, ERROR % scanner.string.inspect) end unless value = scanner.scan(/^(\\[\\"]|[^\\"])*?(?=")/) raise(ArgumentError, ERROR % scanner.string.inspect) end unless scanner.skip(/"/) raise(ArgumentError, ERROR % scanner.string.inspect) end end key.gsub!('\"', '"') key.gsub!("\\\\", "\\") if value value.gsub!('\"', '"') value.gsub!("\\\\", "\\") end hash[key] = value unless scanner.skip(/, /) || scanner.eos? raise(ArgumentError, ERROR % scanner.string.inspect) end end hash end