class ChupaText::TimeoutValue

Attributes

raw[R]

Public Class Methods

new(tag, value) click to toggle source
# File lib/chupa-text/timeout-value.rb, line 25
def initialize(tag, value)
  value = parse(value) if value.is_a?(String)
  @raw = value
end

Public Instance Methods

to_s() click to toggle source
# File lib/chupa-text/timeout-value.rb, line 30
def to_s
  return "" if @raw.nil?

  if @raw < 1
    "%.2fms" % (@raw * 1000.0)
  elsif @raw < 60
    "%.2fs" % @raw
  elsif @raw < (60 * 60)
    "%.2fm" % (@raw / 60.0)
  else
    "%.2fh" % (@raw / 60.0 / 60.0)
  end
end

Private Instance Methods

parse(value) click to toggle source
# File lib/chupa-text/timeout-value.rb, line 45
def parse(value)
  case value
  when nil
    nil
  when Numeric
    value
  else
    return nil if value.empty?
    scale = 1
    case value
    when /h\z/i
      scale = 60 * 60
      number = $PREMATCH
    when /m\z/i
      scale = 60
      number = $PREMATCH
    when /s\z/i
      number = $PREMATCH
    else
      number = value
    end
    begin
      number = Float(number)
    rescue ArgumentError
      log_invalid_value(@tag, value, "time")
      return nil
    end
    (number * scale).to_f
  end
end