Sha256: 0f1da192aec47e326d62b2ee357a3a876b3473895c389d8fef75053a41bfea11
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
# frozen_string_literal: true module Runger module AutoCast # Regexp to detect array values # Array value is a values that contains at least one comma # and doesn't start/end with quote or curly braces ARRAY_RXP = /\A[^'"{].*\s*,\s*.*[^'"}]\z/ class << self def call(val) return val unless val.is_a?(::Hash) || val.is_a?(::String) case val when Hash val.transform_values { call(_1) } 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/ Integer(val, 10) when /\A\d*\.\d+\z/ Float(val) when /\A['"].*['"]\z/ val.gsub(/(\A['"]|['"]\z)/, '') else val end end def cast_hash(obj) obj.transform_values do |val| val.is_a?(::Hash) ? cast_hash(val) : call(val) end end def coerce(_key, val) call(val) end end end module NoCast def self.call(val) = val def self.coerce(_key, val) = val end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
runger_config-5.2.0 | lib/runger/auto_cast.rb |
runger_config-5.1.0 | lib/runger/auto_cast.rb |
runger_config-5.0.0 | lib/runger/auto_cast.rb |