Sha256: 5b0dc49ca5ae14da83c442657f09bc346fb1194c1d2a77f7700d3c50d8c2d30b

Contents?: true

Size: 823 Bytes

Versions: 1

Compression:

Stored size: 823 Bytes

Contents

require 'json'

module PropertySets
  module Casting

    def self.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", "0", "", "off", "n" ].member?(value.to_s.downcase)
        when :serialized
          JSON.parse(value)
      end
    end

    def self.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
          value.to_json
        else
          value.to_s
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
property_sets-0.6.0 lib/property_sets/casting.rb