# frozen_string_literal: true

class InvalidTrustLevel < StandardError; end

class TrustLevel

  class << self

    def [](level)
      raise InvalidTrustLevel if !valid?(level)
      level
    end

    def levels
      @levels ||= Enum.new(:newuser, :basic, :member, :regular, :leader, start: 0)
    end

    def valid?(level)
      valid_range === level
    end

    def valid_range
      (0..4)
    end

    def compare(current_level, level)
      (current_level || 0) >= level
    end

    def name(level)
      I18n.t("js.trust_levels.names.#{levels[level]}")
    end
  end

end