lib/eventual.rb in eventual-0.5.1 vs lib/eventual.rb in eventual-0.5.2

- old
+ new

@@ -2,6 +2,33 @@ require 'treetop' require 'date' require "#{ File.dirname __FILE__ }/eventual/syntax_nodes" -autoload :EsDatesParser, 'eventual/es' +autoload :EsDatesParser, 'eventual/es' + +module Eventual + # Parses dates specified in natural language and returns an Eventual::Node object + # Eventual.parse( 'del 5 al 7 de junio del 2009' ).map + # => [#<DateTime: 4909975/2,0,2299161>, #<DateTime: 4909977/2,0,2299161>, #<DateTime: 4909979/2,0,2299161 + # Options: + # +:lang+: + # Defaults to 'Es', the language to be used for parsing, currently only spanish is supported, hang on. + # +:default_year+: + # The default year to be used in case year is not specified in the text, defaults to current year + # +:default_event_span+: + # The duration in minutes an event has, defaults to 60 + # + def self.parse text, opts = {} + lang = opts.delete(:lang) || 'Es' + year = opts.delete(:default_year) + span = opts.delete(:default_event_span) + + raise ArgumentError, "Expected option `:default_year` to be an integer" if year && !(Integer === year) + raise ArgumentError, "Expected option `:default_event_span` to be an integer" if span && !(Integer === span) + + node = const_get("#{ lang.to_s[0..1].capitalize }DatesParser").new.parse(text) + node.year = year if year + node.time_span = span if span + node + end +end \ No newline at end of file