Module: Anyway::AutoCast

Defined in:
lib/anyway/auto_cast.rb

Constant Summary collapse

ARRAY_RXP =

Regexp to detect array values Array value is a values that contains at least one comma and doesn’t start/end with quote

/\A[^'"].*\s*,\s*.*[^'"]\z/

Class Method Summary collapse

Class Method Details

.call(val) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/anyway/auto_cast.rb', line 10

def self.call(val)
  return val unless String === val

  case val
  when ARRAY_RXP
    val.split(/\s*,\s*/).map { call(_1) }
  when /\A(true|t|yes|y)\z/i
    true
  when /\A(false|f|no|n)\z/i
    false
  when /\A(nil|null)\z/i
    nil
  when /\A\d+\z/
    val.to_i
  when /\A\d*\.\d+\z/
    val.to_f
  when /\A['"].*['"]\z/
    val.gsub(/(\A['"]|['"]\z)/, "")
  else
    val
  end
end