class DataMapper::Property::PgHStore

Public Instance Methods

dump(value) click to toggle source
# File lib/dm-postgres-types/property/pg_hstore.rb, line 18
def dump(value)
  return "" unless value
  value.map { |key, val| %Q{"#{key.to_s}"=>"#{escape_nil(val)}"} }.join(", ")
end
load(value) click to toggle source
# File lib/dm-postgres-types/property/pg_hstore.rb, line 8
def load(value)
  return nil unless value
  values = value.split(", ")
  values.map! do |val|
    k, v = val.split("=>")
    [unescape_double_quote(k),unescape_double_quote(unescape_nil(v))]
  end
  Hash[*(values.flatten)]
end

Private Instance Methods

escape_nil(value) click to toggle source
# File lib/dm-postgres-types/property/pg_hstore.rb, line 25
def escape_nil(value)
  (value.nil?) ? 'NULL' : value
end
unescape_double_quote(value) click to toggle source
# File lib/dm-postgres-types/property/pg_hstore.rb, line 33
def unescape_double_quote(value)
  value.gsub!('"','')
  value.strip!
  value
end
unescape_nil(value) click to toggle source
# File lib/dm-postgres-types/property/pg_hstore.rb, line 29
def unescape_nil(value)
  (value == 'NULL') ? nil : value
end