Sha256: c953f9d6ac50160b546400db26b695b6e0e3153a65f270cb6ad798c3570b8924
Contents?: true
Size: 1.25 KB
Versions: 6
Compression:
Stored size: 1.25 KB
Contents
module HaveAPI::Client class Parameters::Typed module Boolean def self.to_b(str) return true if str === true return true if str =~ /^(true|t|yes|y|1)$/i return false if str === false return false if str =~ /^(false|f|no|n|0)$/i false end end attr_reader :errors, :value def initialize(params, desc, value) @params = params @desc = desc @errors = [] @value = coerce(value) end def valid? ret = Validator.validate(@desc[:validators], @value, @params) @errors.concat(ret) unless ret === true ret === true end def to_api if @desc[:type] == 'Datetime' && value.is_a?(Time) value.iso8601 else value end end protected def coerce(raw) type = @desc[:type] val = if type == 'Integer' raw.to_i elsif type == 'Float' raw.to_f elsif type == 'Boolean' Boolean.to_b(raw) elsif type == 'Datetime' begin Time.iso8601(raw) rescue ArgumentError @errors << 'not in ISO 8601 format' nil end elsif type == 'String' raw.to_s else raw end val end end end
Version data entries
6 entries across 6 versions & 1 rubygems