lib/king_konf/variable.rb in king_konf-0.1.10 vs lib/king_konf/variable.rb in king_konf-0.2.0
- old
+ new
@@ -1,15 +1,16 @@
require "king_konf/decoder"
module KingKonf
class Variable
- attr_reader :name, :type, :default, :description, :options
+ attr_reader :name, :type, :default, :description, :allowed_values, :options
- def initialize(name:, type:, default: nil, description: "", required: false, options: {})
+ def initialize(name:, type:, default: nil, description: "", required: false, allowed_values: nil, options: {})
@name, @type, @default = name, type, default
@description = description
@required = required
+ @allowed_values = allowed_values
@options = options
end
def cast(value)
case @type
@@ -29,9 +30,13 @@
when :integer then value.is_a?(Integer) || value.nil?
when :float then value.is_a?(Float) || value.is_a?(Integer) || value.nil?
when :boolean then value == true || value == false
else raise "invalid type #{@type}"
end
+ end
+
+ def allowed?(value)
+ allowed_values.nil? || allowed_values.include?(value)
end
def decode(value)
Decoder.public_send(@type, value, **options)
end