method
deserialize
rails latest stable - Class:
ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Hstore
deserialize(value)public
No documentation available.
# 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