class RemindMeTo::Normalizer

Public Class Methods

new(args) click to toggle source
# File lib/remindmeto/normalizer.rb, line 3
def initialize(args)
  @args = args
  @single_interval_keywords = %w{in after}
  @rolling_interval_keywords = %w{every}
end

Public Instance Methods

process() click to toggle source
# File lib/remindmeto/normalizer.rb, line 9
def process()
  @keyword_idx = split_by_interval_keyword

  options = {}
  options[:message] = get_message
  options[:interval] = get_interval
  options[:repeat] = get_repeat

  options
end

Private Instance Methods

abort_with_usage_message() click to toggle source
# File lib/remindmeto/normalizer.rb, line 61
def abort_with_usage_message
  abort("Usage: remindmeto { task } { every/in } { a(n)/time } { second(s)/minute(s)/hour(s) }")
end
get_interval() click to toggle source
# File lib/remindmeto/normalizer.rb, line 38
def get_interval
  return 1 if @args.last.eql?('second')
  return 60 if @args.last.eql?('minute')
  return 3600 if @args.last.eql?('hour')

  multiplier = @args[-2].to_i
  abort_with_usage_message if multiplier == 0

  interval = multiplier if @args.include?('seconds')
  interval = 60*multiplier if @args.include?('minutes')
  interval = 3600*multiplier if @args.include?('hours')

  interval
end
get_message() click to toggle source
# File lib/remindmeto/normalizer.rb, line 34
def get_message
  @args[0..@keyword_idx-1].join(' ')
end
get_repeat() click to toggle source
# File lib/remindmeto/normalizer.rb, line 53
def get_repeat
  if @single_interval_keywords.include?(@args[@keyword_idx])
    false
  else
    true
  end
end
split_by_interval_keyword() click to toggle source
# File lib/remindmeto/normalizer.rb, line 22
def split_by_interval_keyword()
  keyword_idx = 0
  interval_keywords = [@single_interval_keywords, @rolling_interval_keywords].flatten
  interval_keywords.each do |word|
    idx = @args.rindex(word)
    keyword_idx = idx unless (idx == nil || idx < keyword_idx)
  end

  abort_with_usage_message if keyword_idx == 0
  keyword_idx
end