def parse(text, opts={})
options = DEFAULT_OPTIONS.merge opts
(opts.keys - DEFAULT_OPTIONS.keys).each do |key|
raise ArgumentError, "#{key} is not a valid option key."
end
unless [:past, :future, :none].include?(options[:context])
raise ArgumentError, "Invalid context, :past/:future only"
end
options[:text] = text
Chronic.now = options[:now] || Chronic.time_class.now
tokens = tokenize(text, options)
if Chronic.debug
puts "+#{'-' * 51}\n| #{tokens}\n+#{'-' * 51}"
end
span = tokens_to_span(tokens, options)
if span
options[:guess] ? guess(span) : span
end
end