README

changeset 24
3ae5d7a20cec
equal deleted inserted replaced
23:16e168833048 24:3ae5d7a20cec
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

mercurial