class LabeledRange::Value::Default

Attributes

level[R]
value[R]

Public Class Methods

new(value) click to toggle source
# File lib/labeled_range/value/default.rb, line 6
def initialize(value)
  @value = value

  definitions = { good: 0, warning: 0.7, danger: 0.9 }
  max = 1

  (definitions.values.sort + [max]).each_cons(2).each_with_object({}) do |(lower, upper), ranges|
    range = lower..upper
    key = definitions.key(lower)

    self.class.class_eval do
      define_method("#{key}?".to_sym) do
        range === value
      end
    end

    @level = key if range === value
  end

  @level ||= :undefined
end