|
1 ndp is a "natural date parser" library. It allows you to convert natural language user input to a more machine-friendly time value. |
|
2 |
|
3 ## Demo |
|
4 An example utility is provided called readdate.lua, which reads lines from stdin, and |
|
5 prints the interpreted date along with any text that wasn't considered part of the time |
|
6 specification. |
|
7 |
|
8 ## Examples |
|
9 |
|
10 today |
|
11 => Sun Jun 21 23:45:57 2009 (1245624357) [?,?] |
|
12 |
|
13 feed the cat in the morning |
|
14 => Mon Jun 22 09:30:09 2009 (1245659409): feed the cat [13,28] |
|
15 |
|
16 go shopping next tuesday |
|
17 => Tue Jun 23 23:46:27 2009 (1245797187): go shopping next [17,25] |
|
18 |
|
19 service the car in September |
|
20 => Mon Sep 21 23:46:48 2009 (1253573208): service the car [16,29] |
|
21 |
|
22 Watch the games in July 2012 |
|
23 => Sat Jul 21 23:48:06 2012 (1342910886): Watch the games [16,29] |
|
24 |
|
25 ## Usage |
|
26 |
|
27 ...is simple :) |
|
28 |
|
29 To get a time from an input string, simply do: |
|
30 |
|
31 local ndp = require "ndp"; -- Load the ndp library |
|
32 local mytime = ndp.when("tomorrow"); -- Get the date tomorrow |
|
33 print(os.date("%c", mytime)); -- Print it out |
|
34 |
|
35 A slightly more advanced usage is extracting information in the input string which |
|
36 was not concerned with the time. This is useful for extracting things like "feed the cat" |
|
37 from "feed the cat tomorrow afternoon". ndp.when() returns 2 extra values which are the start |
|
38 and finish positions of the text it actually used in the string. By removing the text between |
|
39 these positions you will be left with the real data. |
|
40 |
|
41 local ndp = require "ndp"; -- Load the ndp library |
|
42 local mytime, startpos, endpos = ndb.when("tomorrow afternoon, feed the cat"); |
|
43 local message = (line:sub(1, start)..line:sub(finish, -1)) -- returns ", feed the cat" |
|
44 -- To make things a bit neater, we can use Lua's gsub function to trim leftover spaces and |
|
45 -- punctuation from the result: |
|
46 message = message:gsub("^[%s%p]+", ""):gsub("[%s%p]+$", ""); |
|
47 print(message); -- feed the cat |