Merge branch 'gem'
[fuzed.git] / helloworld / vendor / gems / chronic-0.2.2 / lib / chronic / ordinal.rb
blob45b8148e4cd915b0750e7d304d07f005d42cb670
1 module Chronic
3   class Ordinal < Tag #:nodoc:
4     def self.scan(tokens)
5       # for each token
6       tokens.each_index do |i|
7         if t = self.scan_for_ordinals(tokens[i]) then tokens[i].tag(t) end
8         if t = self.scan_for_days(tokens[i]) then tokens[i].tag(t) end
9       end
10       tokens
11     end
12   
13     def self.scan_for_ordinals(token)
14       if token.word =~ /^(\d*)(st|nd|rd|th)$/
15         return Ordinal.new($1.to_i)
16       end
17       return nil
18     end
19     
20     def self.scan_for_days(token)
21       if token.word =~ /^(\d*)(st|nd|rd|th)$/
22         unless $1.to_i > 31
23           return OrdinalDay.new(token.word.to_i)
24         end
25       end
26       return nil
27     end
28     
29     def to_s
30       'ordinal'
31     end
32   end
33   
34   class OrdinalDay < Ordinal #:nodoc:
35     def to_s
36       super << '-day-' << @type.to_s
37     end
38   end
40 end