1 | reg = /\[.*?\]/g
|
2 | rules =
|
3 | second : /s{1,2}/
|
4 | minute : /m{1,2}/
|
5 | hour : /(h{1,2}|a)/i
|
6 | day : /d{1,4}/i
|
7 | month : /M{1,4}/
|
8 | year : /(YY|YYYY)/
|
9 |
|
10 |
|
11 |
|
12 | module.exports = (pattern) ->
|
13 | clean = pattern.replace reg, ''
|
14 | for name, rule of rules
|
15 | if rule.test clean
|
16 | type = name
|
17 | break
|
18 | n = new Date
|
19 | switch type
|
20 | when 'second'
|
21 | ms = new Date(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds() + 1) - n
|
22 | when 'minute'
|
23 | ms = new Date(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes() + 1) - n
|
24 | when 'hour'
|
25 | ms = new Date(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours() + 1) - n
|
26 | when 'day'
|
27 | ms = new Date(n.getFullYear(), n.getMonth(), n.getDate() + 1) - n
|
28 | when 'month'
|
29 | ms = new Date(n.getFullYear(), n.getMonth() + 1, 1) - n
|
30 | when 'year'
|
31 | ms = new Date(n.getFullYear() + 1, 0, 1) - n
|
32 | else
|
33 | ms = null
|
34 | [ms, type]
|