27 'thursday', 'friday', 'saturday', 'sunday'} |
27 'thursday', 'friday', 'saturday', 'sunday'} |
28 |
28 |
29 local month_name = lpeg.one_of {'january', 'february', 'march', 'april', 'may', 'june', |
29 local month_name = lpeg.one_of {'january', 'february', 'march', 'april', 'may', 'june', |
30 'july', 'august', 'september', 'october', 'november', 'december' } |
30 'july', 'august', 'september', 'october', 'november', 'december' } |
31 |
31 |
32 local year = (lpeg.R("09")^4)^-4 |
32 local year = lpeg.R("09") * lpeg.R("09") * lpeg.R("09") * lpeg.R("09"); |
33 |
33 |
34 local unit_of_time = lpeg.one_of { 'second', 'minute', 'hour', 'day', 'week', 'month', 'year' } |
34 local unit_of_time = lpeg.one_of { 'second', 'minute', 'hour', 'day', 'week', 'month', 'year' } |
35 |
35 |
36 local time_of_day = lpeg.one_of { 'morning', 'noon', 'afternoon', 'evening', 'night', 'midnight' } |
36 local time_of_day = lpeg.one_of { 'morning', 'noon', 'afternoon', 'evening', 'night', 'midnight' } |
37 local time_of_days = { morning = 09, noon = 12, afternoon = 13, evening = 17, night = 21, midnight = 00 } |
37 local time_of_days = { morning = 09, noon = 12, afternoon = 13, evening = 17, night = 21, midnight = 00 } |
106 end }; |
106 end }; |
107 { P"next year" / |
107 { P"next year" / |
108 function () |
108 function () |
109 time = adjust_time(time, "year", get_time_part(time, "year") + 1); |
109 time = adjust_time(time, "year", get_time_part(time, "year") + 1); |
110 end }; |
110 end }; |
111 { P"on "^0 * day_name / |
111 { year / |
112 function (day_name) |
112 function (year) |
113 time = find_next_day_by_name(time, day_name:match("%S+$")); |
113 time = adjust_time(time, "year", tonumber(year)); |
114 end }; |
114 end }; |
115 { P"in "^0 * month_name / |
115 { P"in "^0 * month_name / |
116 function (month_name) |
116 function (month_name) |
117 time = find_next_month_by_name(time, month_name:match("%S+$")); |
117 time = find_next_month_by_name(time, month_name:match("%S+$")); |
118 end }; |
118 end }; |