Sha256: 343b72eabfbb1b1521c72a2263b080044cb6683060b8cf0dc0e5c8e80f19d3b1
Contents?: true
Size: 1.31 KB
Versions: 3
Compression:
Stored size: 1.31 KB
Contents
require 'rubygems' require 'treetop' require 'date' require "#{ File.dirname __FILE__ }/eventual/syntax_nodes" 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, please contribute. # +: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) raise ArgumentError, "Expected option `:default_year` to be an integer" if year && !(Integer === year) parser = const_get("#{ lang.to_s[0..1].capitalize }DatesParser") rescue raise( NotImplementedError.new("Parsing has not yet been implemented for the language '#{lang}'")) node = parser.new.parse text.gsub('sab', 'sáb').gsub('mie', 'mié').downcase node.year = year if year node end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
eventual-0.5.8 | lib/eventual.rb |
eventual-0.5.7 | lib/eventual.rb |
eventual-0.5.6 | lib/eventual.rb |