Module: PropertySets::Casting

Defined in:
lib/property_sets/casting.rb

Constant Summary collapse

FALSE =
[ "false", "0", "", "off", "n" ]

Class Method Summary collapse

Class Method Details

.deserialize(value) ⇒ Object


48
49
50
51
# File 'lib/property_sets/casting.rb', line 48

def deserialize(value)
  return nil if value.nil? || value == "null"
  JSON.parse(value)
end

.read(type, value) ⇒ Object


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/property_sets/casting.rb', line 8

def read(type, value)
  return nil if value.nil?

  case type
  when :string
    value
  when :datetime
    Time.parse(value).in_time_zone
  when :float
    value.to_f
  when :integer
    value.to_i
  when :boolean
    !false?(value)
  when :serialized
    # deserialization happens in the model
    value
  end
end

.write(type, value) ⇒ Object


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/property_sets/casting.rb', line 28

def write(type, value)
  return nil if value.nil?

  case type
  when :datetime
    if value.is_a?(String)
      value
    else
      value.in_time_zone("UTC").to_s
    end
  when :serialized
    # write the object directly.
    value
  when :boolean
    false?(value) ? "0" : "1"
  else
    value.to_s
  end
end