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