# frozen_string_literal: true

module Trifle
  module Stats
    class Designator
      class Custom
        attr_reader :buckets

        def initialize(buckets:)
          @buckets = buckets.sort
        end

        def designate(value:)
          return buckets.first.to_s if value <= buckets.first
          return "#{buckets.last}+" if value > buckets.last

          (buckets.find { |b| value.ceil < b }).to_s
        end
      end
    end
  end
end