Jump To …

time_string.coffee

TimeUtils = require './time_utils'
ChronosError = require './chronos_error'

class TimeString
  unitMap =
    'ms': 1
    'millisecond': 1
    'mmilliseconds': 1
    's': TimeUtils.SECOND_MS
    'second': TimeUtils.SECOND_MS
    'seconds': TimeUtils.SECOND_MS
    'm': TimeUtils.MINUTE_MS
    'minute': TimeUtils.MINUTE_MS
    'minutes': TimeUtils.MINUTE_MS
    'h': TimeUtils.HOUR_MS
    'hour': TimeUtils.HOUR_MS
    'hours': TimeUtils.HOUR_MS
    'd': TimeUtils.DAY_MS
    'day': TimeUtils.DAY_MS
    'days': TimeUtils.DAY_MS
    'w': TimeUtils.WEEK_MS
    'week': TimeUtils.WEEK_MS
    'weeks': TimeUtils.WEEK_MS
    'mo': TimeUtils.MONTH_MS
    'month': TimeUtils.MONTH_MS
    'months': TimeUtils.MONTH_MS
    'y': TimeUtils.YEAR_MS
    'year': TimeUtils.YEAR_MS
    'years': TimeUtils.YEAR_MS

  constructor: (phrase) ->
    components = phrase.split(' ')

    @quantity = parseInt(components[0])
    @unit = components[1]

    unless /^\d+$/.test @quantity
      throw new ChronosError 'Unparseable time string'

  toMilliseconds: ->
    @quantity * unitMap[@unit]

module.exports = TimeString