module ENV_BANG::Classes
Attributes
default_class[W]
Public Class Methods
Array(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 18 def Array(value, options) item_options = options.merge(class: options.fetch(:of, default_class)) value.split(',').map { |v| cast(v.strip, item_options) } end
Complex(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 61 def Complex(value, options) Kernel.Complex(value) end
Date(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 73 def Date(value, options) Date.parse(value) end
DateTime(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 77 def DateTime(value, options) DateTime.parse(value) end
Float(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 49 def Float(value, options) Kernel.Float(value) end
Hash(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 23 def Hash(value, options) key_options = options.merge(class: options.fetch(:keys, Symbol)) value_options = options.merge(class: options.fetch(:of, default_class)) sep = options.fetch(:sep, ',') val_sep = options.fetch(:val_sep, ':') {}.tap do |h| value.split(sep).each do |pair| key, value = pair.split(val_sep, 2) h[cast(key.to_s.strip, key_options)] = cast(value.to_s.strip, value_options) end end end
Integer(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 45 def Integer(value, options) Kernel.Integer(value) end
Pathname(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 65 def Pathname(value, options) Kernel.Pathname(value) end
Range(value, options = {})
click to toggle source
# File lib/env_bang/classes.rb, line 85 def Range(value, options = {}) beginning, ending = value.split('...') if beginning && ending options[:exclusive] = true unless options.has_key?(:exclusive) else beginning, ending = value.split('..') end unless beginning && ending raise ArgumentError.new("Range '#{value}' cannot be parsed as a range. Must be in the form <start>..<end> or <start>...<end>") end options[:of] ||= Integer beginning = cast(beginning, class: options[:of]) ending = cast(ending, class: options[:of]) if options[:exclusive] beginning...ending else beginning..ending end end
Rational(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 57 def Rational(value, options) Kernel.Rational(value) end
Regexp(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 107 def Regexp(value, options) Regexp.new(value) end
String(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 53 def String(value, options) Kernel.String(value) end
StringUnlessFalsey(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 41 def StringUnlessFalsey(value, options) boolean(value, options) && value end
Symbol(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 37 def Symbol(value, options) value.to_sym end
Time(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 81 def Time(value, options) Time.parse(value) end
URI(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 69 def URI(value, options) Kernel.URI(value) end
boolean(value, options)
click to toggle source
# File lib/env_bang/classes.rb, line 14 def boolean(value, options) !(value =~ /^(|0|disabled?|false|no|off)$/i) end
cast(value, options = {})
click to toggle source
# File lib/env_bang/classes.rb, line 10 def cast(value, options = {}) public_send(:"#{options.fetch(:class, default_class)}", value, options) end
default_class()
click to toggle source
# File lib/env_bang/classes.rb, line 6 def default_class @default_class ||= :StringUnlessFalsey end