# frozen_string_literal: true

class Puppet::Settings::SymbolicEnumSetting < Puppet::Settings::BaseSetting
  attr_accessor :values

  def type
    :symbolic_enum
  end

  def munge(value)
    sym = value.to_sym
    if values.include?(sym)
      sym
    else
      raise Puppet::Settings::ValidationError,
            _("Invalid value '%{value}' for parameter %{name}. Allowed values are '%{allowed_values}'") % { value: value, name: @name, allowed_values: values.join("', '") }
    end
  end
end
