Class: Choosy::Converter
- Inherits:
-
Object
- Object
- Choosy::Converter
- Defined in:
- lib/choosy/converter.rb
Constant Summary collapse
- CONVERSIONS =
{ :integer => nil, :int => :integer, :float => nil, :symbol => nil, :file => nil, # Succeeds only if a file is present :yaml => nil, # Loads a YAML file, if present :date => nil, :time => nil, :datetime => nil, :string => nil, :boolean => nil, :bool => :boolean }
Class Method Summary collapse
- .boolean(value) ⇒ Object
- .convert(ty, value) ⇒ Object
- .date(value) ⇒ Object
- .datetime(value) ⇒ Object
- .file(value) ⇒ Object
- .float(value) ⇒ Object
- .for(ty) ⇒ Object
- .integer(value) ⇒ Object
- .string(value) ⇒ Object
- .symbol(value) ⇒ Object
- .time(value) ⇒ Object
- .yaml(value) ⇒ Object
Class Method Details
.boolean(value) ⇒ Object
50 51 52 |
# File 'lib/choosy/converter.rb', line 50 def self.boolean(value) value # already set end |
.convert(ty, value) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/choosy/converter.rb', line 38 def self.convert(ty, value) if ty.nil? raise ArgumentError.new("Can't convert nil to a type.") end if CONVERSIONS.has_key?(ty) send(ty, value) else ty.convert(value) end end |
.date(value) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/choosy/converter.rb', line 95 def self.date(value) begin return Date.parse(value) rescue ArgumentError raise Choosy::ConversionError.new("Unable to convert '#{value}' into a date") end end |
.datetime(value) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/choosy/converter.rb', line 111 def self.datetime(value) begin return DateTime.parse(value) rescue ArgumentError raise Choosy::ConversionError.new("Unable to convert '#{value}' into datetime") end end |
.file(value) ⇒ Object
78 79 80 81 82 83 84 |
# File 'lib/choosy/converter.rb', line 78 def self.file(value) if File.file?(value) File.new(value) else raise Choosy::ValidationError.new("Unable to locate file: '#{value}'") end end |
.float(value) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/choosy/converter.rb', line 66 def self.float(value) begin return Float(value) rescue ArgumentError raise Choosy::ConversionError.new("Unable to convert '#{value}' into a float") end end |
.for(ty) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/choosy/converter.rb', line 23 def self.for(ty) if ty.is_a?(Symbol) && CONVERSIONS.has_key?(ty) val = CONVERSIONS[ty] if val return val else return ty end elsif ty.respond_to?(:convert) return ty end nil end |
.integer(value) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/choosy/converter.rb', line 58 def self.integer(value) begin return Integer(value) rescue ArgumentError raise Choosy::ConversionError.new("Unable to convert '#{value}' into an integer") end end |
.string(value) ⇒ Object
54 55 56 |
# File 'lib/choosy/converter.rb', line 54 def self.string(value) value # already set end |
.symbol(value) ⇒ Object
74 75 76 |
# File 'lib/choosy/converter.rb', line 74 def self.symbol(value) value.to_sym end |
.time(value) ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/choosy/converter.rb', line 103 def self.time(value) begin return Time.parse(value) rescue ArgumentError raise Choosy::ConversionError.new("Unable to convert '#{value}' into a time") end end |
.yaml(value) ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'lib/choosy/converter.rb', line 86 def self.yaml(value) fd = file(value) begin return YAML::load_file(fd.path) rescue Error raise Choosy::ConversionError.new("Unable to load YAML from file: '#{value}'") end end |