Module: Fugit::Nat::Parser
- Includes:
- Raabro
- Defined in:
- lib/fugit/nat.rb
Constant Summary collapse
- NUMS =
%w[ zero one two three four five six seven eight nine ten eleven twelve ]- WEEKDAYS =
Fugit::Cron::Parser::WEEKDS + Fugit::Cron::Parser::WEEKDAYS
- NHOURS =
{ 'noon' => [ 12, 0 ], 'midnight' => [ 0, 0 ] }
Instance Method Summary collapse
- #biz_day(i) ⇒ Object
- #datum(i) ⇒ Object
-
#digital_hour(i) ⇒ Object
piece parsers bottom to top.
- #elt(i) ⇒ Object
- #flag(i) ⇒ Object
- #hour(i) ⇒ Object
- #name_day(i) ⇒ Object
- #name_hour(i) ⇒ Object
- #nat(i) ⇒ Object
- #numeral_hour(i) ⇒ Object
- #plain_day(i) ⇒ Object
-
#rewrite_nat(t) ⇒ Object
rewrite parsed tree.
- #simple_hour(i) ⇒ Object
- #sugar(i) ⇒ Object
Instance Method Details
#biz_day(i) ⇒ Object
89 |
# File 'lib/fugit/nat.rb', line 89 def biz_day(i); rex(:biz_day, i, /(biz|business|week) *day/i); end |
#datum(i) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/fugit/nat.rb', line 94 def datum(i) alt(nil, i, :flag, :plain_day, :biz_day, :name_day, :name_hour, :numeral_hour, :digital_hour, :simple_hour) end |
#digital_hour(i) ⇒ Object
piece parsers bottom to top
72 73 74 |
# File 'lib/fugit/nat.rb', line 72 def digital_hour(i) rex(:digital_hour, i, /(2[0-4]|[01][0-9]):?[0-5]\d/) end |
#elt(i) ⇒ Object
103 |
# File 'lib/fugit/nat.rb', line 103 def elt(i); alt(nil, i, :sugar, :datum); end |
#flag(i) ⇒ Object
92 |
# File 'lib/fugit/nat.rb', line 92 def flag(i); rex(:flag, i, /(every|day|at|after|am|pm)/i); end |
#hour(i) ⇒ Object
84 85 86 |
# File 'lib/fugit/nat.rb', line 84 def hour(i) alt(nil, i, :numeral_hour, :name_hour, :digital_hour, :simple_hour); end |
#name_day(i) ⇒ Object
90 |
# File 'lib/fugit/nat.rb', line 90 def name_day(i); rex(:name_day, i, /#{WEEKDAYS.reverse.join('|')}/i); end |
#name_hour(i) ⇒ Object
81 82 83 |
# File 'lib/fugit/nat.rb', line 81 def name_hour(i) rex(:name_hour, i, /(#{NHOURS.keys.join('|')})/i) end |
#nat(i) ⇒ Object
104 |
# File 'lib/fugit/nat.rb', line 104 def nat(i); rep(:nat, i, :elt, 1); end |
#numeral_hour(i) ⇒ Object
78 79 80 |
# File 'lib/fugit/nat.rb', line 78 def numeral_hour(i) rex(:numeral_hour, i, /(#{NUMS.join('|')})/i) end |
#plain_day(i) ⇒ Object
88 |
# File 'lib/fugit/nat.rb', line 88 def plain_day(i); rex(:plain_day, i, /day/i); end |
#rewrite_nat(t) ⇒ Object
rewrite parsed tree
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/fugit/nat.rb', line 108 def rewrite_nat(t) #Raabro.pp(t) t .subgather(nil) .collect { |tt| k = tt.name v = tt.string.downcase case k when :numeral_hour [ k, NUMS.index(v) ] when :simple_hour [ k, v.to_i ] when :digital_hour v = v.gsub(/:/, '') [ k, [ v[0, 2], v[2, 2] ] ] when :name_hour [ :digital_hour, NHOURS[v] ] when :name_day [ k, WEEKDAYS.index(v[0, 3]) ] else [ k, v ] end } end |
#simple_hour(i) ⇒ Object
75 76 77 |
# File 'lib/fugit/nat.rb', line 75 def simple_hour(i) rex(:simple_hour, i, /(2[0-4]|[01]?[0-9])/) end |
#sugar(i) ⇒ Object
101 |
# File 'lib/fugit/nat.rb', line 101 def sugar(i); rex(nil, i, /(and|or|[, \t]+)/i); end |