Class: Sequel::Postgres::HStore::Parser
- Defined in:
- lib/sequel/extensions/pg_hstore.rb
Overview
Parser for PostgreSQL hstore output format.
Constant Summary collapse
- QUOTE_RE =
/"/.freeze
- KV_SEP_RE =
/"\s*=>\s*/.freeze
- NULL_RE =
/NULL/.freeze
- SEP_RE =
/,\s*/.freeze
- QUOTED_RE =
/(\\"|[^"])*/.freeze
- REPLACE_RE =
/\\(.)/.freeze
- REPLACE_WITH =
'\1'.freeze
Instance Method Summary collapse
-
#parse ⇒ Object
Parse the output format that PostgreSQL uses for hstore columns.
Instance Method Details
#parse ⇒ Object
Parse the output format that PostgreSQL uses for hstore columns. Note that this does not attempt to parse all input formats that PostgreSQL will accept. For instance, it expects all keys and non-NULL values to be quoted.
Return the resulting hash of objects. This can be called multiple times, it will cache the parsed hash on the first call and use it for subsequent calls.
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/sequel/extensions/pg_hstore.rb', line 113 def parse return @result if @result hash = {} while !eos? skip(QUOTE_RE) k = parse_quoted skip(KV_SEP_RE) if skip(QUOTE_RE) v = parse_quoted skip(QUOTE_RE) else scan(NULL_RE) v = nil end skip(SEP_RE) hash[k] = v end @result = hash end |