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