Files
2026-07-13 12:48:55 +08:00

234 lines
11 KiB
JavaScript

import test from 'tape'
import nlp from './_lib.js'
const context = {
today: '2019-02-02T03:40:00.000Z',
timezone: false,
}
test('date-parse :', function (t) {
const arr = [
['june 5th 1999', '1999-06-05T00:00:00.000Z'],
['june 5th 1999', '1999-06-05T00:00:00.000Z'],
['january 1st 1644', '1644-01-01T00:00:00.000Z'],
['jan 1st 1644', '1644-01-01T00:00:00.000Z'],
['June 4th 1993', '1993-06-04T00:00:00.000Z'],
['March 1st 1987', '1987-03-01T00:00:00.000Z'],
['June 22nd 2014', '2014-06-22T00:00:00.000Z'],
['may 22nd 2014', '2014-05-22T00:00:00.000Z'],
['sep 22nd 2014', '2014-09-22T00:00:00.000Z'],
['apr 22nd 2014', '2014-04-22T00:00:00.000Z'],
['June 22nd 1997', '1997-06-22T00:00:00.000Z'],
['january 5th 1998', '1998-01-05T00:00:00.000Z'],
['3rd of March 1969', '1969-03-03T00:00:00.000Z'],
['2nd of April 1929', '1929-04-02T00:00:00.000Z'],
['2nd of jul 1929', '1929-07-02T00:00:00.000Z'],
['March 1969', '1969-03-01T00:00:00.000Z'],
['jan 1921', '1921-01-01T00:00:00.000Z'],
['March 18th', '2019-03-18T00:00:00.000Z'],
['August 28th', '2019-08-28T00:00:00.000Z'],
['18th of March', '2019-03-18T00:00:00.000Z'],
['27th of March', '2019-03-27T00:00:00.000Z'],
['february 10th', '2019-02-10T00:00:00.000Z'],
['february 28th', '2019-02-28T00:00:00.000Z'],
['first day of 2019', '2019-01-01T00:00:00.000Z'],
['last day of 2019', '2019-12-31T00:00:00.000Z'],
['7th hour of 2019', '2019-01-01T06:00:00.000Z'],
['7th day of 2019', '2019-01-07T00:00:00.000Z'],
['second quarter of 2019', '2019-04-01T00:00:00.000Z'],
['30th minute of 2019', '2019-01-01T00:30:00.000Z'],
['2019', '2019-01-01T00:00:00.000Z'],
['2028', '2028-01-01T00:00:00.000Z'],
['in 2028', '2028-01-01T00:00:00.000Z'],
['2nd month in 2028', '2028-02-01T00:00:00.000Z'],
['first day of march 2019', '2019-03-01T00:00:00.000Z'],
['5th day of march 2019', '2019-03-05T00:00:00.000Z'],
['5th day of q1 2002', '2002-01-05T00:00:00.000Z'],
['5th hour of March 3rd 2002', '2002-03-03T04:00:00.000Z'],
['last hour of March 2021', '2021-03-31T23:00:00.000Z'],
['may to august 1996', '1996-05-01T00:00:00.000Z'],
['half past 4', '2019-02-02T16:30:00.000Z'],
['20 past 2', '2019-02-02T14:20:00.000Z'],
['at 20 past', '2019-02-02T04:20:00.000Z'],
['at half past', '2019-02-02T04:30:00.000Z'],
['at quarter to', '2019-02-02T03:45:00.000Z'],
['at quarter after', '2019-02-02T04:15:00.000Z'],
['december 25th 2000', '2000-12-25T00:00:00.000Z'],
['dec 25 2000', '2000-12-25T00:00:00.000Z'],
['25th of december 2000', '2000-12-25T00:00:00.000Z'],
['1st of january 2000', '2000-01-01T00:00:00.000Z'],
['1 jan 2000', '2000-01-01T00:00:00.000Z'],
['01/15/2000', '2000-01-15T00:00:00.000Z'],
['15/01/2000', '2000-01-15T00:00:00.000Z'],
['2000-06-15', '2000-06-15T00:00:00.000Z'],
['june 15 2000', '2000-06-15T00:00:00.000Z'],
['june 15th, 2000', '2000-06-15T00:00:00.000Z'],
['15 june 2000', '2000-06-15T00:00:00.000Z'],
['february 2nd 2019', '2019-02-02T00:00:00.000Z'],
['feb 2 2019', '2019-02-02T00:00:00.000Z'],
['2nd february 2019', '2019-02-02T00:00:00.000Z'],
['march 3rd', '2019-03-03T00:00:00.000Z'],
['march 3', '2019-03-03T00:00:00.000Z'],
['3 march', '2019-03-03T00:00:00.000Z'],
['3rd march', '2019-03-03T00:00:00.000Z'],
['1st of february', '2019-02-01T00:00:00.000Z'],
['2nd of february', '2019-02-02T00:00:00.000Z'],
['february 1st', '2019-02-01T00:00:00.000Z'],
['february 2nd', '2019-02-02T00:00:00.000Z'],
['january 31st', '2020-01-31T00:00:00.000Z'],
['january 1st', '2020-01-01T00:00:00.000Z'],
['december 31st', '2019-12-31T00:00:00.000Z'],
['last day of february 2019', '2019-02-28T00:00:00.000Z'],
['first day of february 2019', '2019-02-01T00:00:00.000Z'],
['last day of february', '2019-02-28T00:00:00.000Z'],
['first day of february', '2019-02-01T00:00:00.000Z'],
['last day of march 2019', '2019-03-31T00:00:00.000Z'],
['first day of april 2019', '2019-04-01T00:00:00.000Z'],
['3rd day of 2019', '2019-01-03T00:00:00.000Z'],
['100th day of 2019', '2019-04-10T00:00:00.000Z'],
['365th day of 2019', '2019-12-31T00:00:00.000Z'],
['1st quarter of 2019', '2019-01-01T00:00:00.000Z'],
['third quarter of 2019', '2019-07-01T00:00:00.000Z'],
['q4 2019', '2019-10-01T00:00:00.000Z'],
['q1 2019', '2019-01-01T00:00:00.000Z'],
['first quarter 2019', '2019-01-01T00:00:00.000Z'],
['second quarter 2019', '2019-04-01T00:00:00.000Z'],
['fourth quarter 2019', '2019-10-01T00:00:00.000Z'],
['january 2019', '2019-01-01T00:00:00.000Z'],
['february 2019', '2019-02-01T00:00:00.000Z'],
['march 2019', '2019-03-01T00:00:00.000Z'],
['april 2019', '2019-04-01T00:00:00.000Z'],
['may 2019', '2019-05-01T00:00:00.000Z'],
['june 2019', '2019-06-01T00:00:00.000Z'],
['july 2019', '2019-07-01T00:00:00.000Z'],
['august 2019', '2019-08-01T00:00:00.000Z'],
['september 2019', '2019-09-01T00:00:00.000Z'],
['october 2019', '2019-10-01T00:00:00.000Z'],
['november 2019', '2019-11-01T00:00:00.000Z'],
['december 2019', '2019-12-01T00:00:00.000Z'],
['jan 2019', '2019-01-01T00:00:00.000Z'],
['feb 2019', '2019-02-01T00:00:00.000Z'],
['mar 2019', '2019-03-01T00:00:00.000Z'],
['apr 2019', '2019-04-01T00:00:00.000Z'],
['in 2019', '2019-01-01T00:00:00.000Z'],
['in 1990', '1990-01-01T00:00:00.000Z'],
['2005', '2005-01-01T00:00:00.000Z'],
['2nd month of 2019', '2019-02-01T00:00:00.000Z'],
['3rd month of 2019', '2019-03-01T00:00:00.000Z'],
['12th month of 2019', '2019-12-01T00:00:00.000Z'],
['6th month in 2020', '2020-06-01T00:00:00.000Z'],
['10th day of june 2019', '2019-06-10T00:00:00.000Z'],
['15th day of march 2019', '2019-03-15T00:00:00.000Z'],
['last day of march 2019', '2019-03-31T00:00:00.000Z'],
['first hour of 2019', '2019-01-01T00:00:00.000Z'],
['last hour of 2019', '2019-12-31T23:00:00.000Z'],
['first minute of 2019', '2019-01-01T00:01:00.000Z'],
['last minute of 2019', '2019-12-31T23:59:00.000Z'],
['5th hour of february 2nd 2019', '2019-02-02T04:00:00.000Z'],
['noon on february 2nd 2019', '2019-02-02T12:00:00.000Z'],
['midnight on february 2nd 2019', '2019-02-02T00:00:00.000Z'],
['january to march 2019', '2019-01-01T00:00:00.000Z'],
['march to may 2019', '2019-03-01T00:00:00.000Z'],
['june to august 2019', '2019-06-01T00:00:00.000Z'],
['september to november 2019', '2019-09-01T00:00:00.000Z'],
['jan to mar 2019', '2019-01-01T00:00:00.000Z'],
['feb to apr 2019', '2019-02-01T00:00:00.000Z'],
['today', '2019-02-02T00:00:00.000Z'],
['tomorrow', '2019-02-03T00:00:00.000Z'],
['yesterday', '2019-02-01T00:00:00.000Z'],
['next monday', '2019-02-04T00:00:00.000Z'],
['last monday', '2019-01-21T00:00:00.000Z'],
['this monday', '2019-02-04T00:00:00.000Z'],
['next friday', '2019-02-08T00:00:00.000Z'],
['last friday', '2019-01-25T00:00:00.000Z'],
['next week', '2019-02-04T00:00:00.000Z'],
['last week', '2019-01-21T00:00:00.000Z'],
['this week', '2019-01-28T00:00:00.000Z'],
['next month', '2019-03-01T00:00:00.000Z'],
['last month', '2019-01-01T00:00:00.000Z'],
['this month', '2019-02-01T00:00:00.000Z'],
['next year', '2020-01-01T00:00:00.000Z'],
['last year', '2018-01-01T00:00:00.000Z'],
['this year', '2019-01-01T00:00:00.000Z'],
['in 3 days', '2019-02-05T00:00:00.000Z'],
['in 2 weeks', '2019-02-16T00:00:00.000Z'],
['in 1 month', '2019-03-02T00:00:00.000Z'],
['in 1 year', '2020-02-02T00:00:00.000Z'],
['3 days ago', '2019-01-30T00:00:00.000Z'],
['2 weeks ago', '2019-01-19T00:00:00.000Z'],
['1 month ago', '2019-01-02T00:00:00.000Z'],
['1 year ago', '2018-02-02T00:00:00.000Z'],
['at 4pm', '2019-02-02T16:00:00.000Z'],
['at 4:30pm', '2019-02-02T16:30:00.000Z'],
['4pm', '2019-02-02T16:00:00.000Z'],
['4:30pm', '2019-02-02T16:30:00.000Z'],
['at noon', '2019-02-02T12:00:00.000Z'],
['at midnight', '2019-02-02T00:00:00.000Z'],
['noon', '2019-02-02T12:00:00.000Z'],
['midnight', '2019-02-02T00:00:00.000Z'],
['ten past 4', '2019-02-02T16:10:00.000Z'],
['quarter past 3', '2019-02-02T15:15:00.000Z'],
['half past 3', '2019-02-02T15:30:00.000Z'],
['quarter to 5', '2019-01-01T00:00:00.000Z'],
['at ten past 4', '2019-02-02T16:10:00.000Z'],
['at quarter past 3', '2019-02-02T15:15:00.000Z'],
['5 past 4', '2019-02-02T16:05:00.000Z'],
['february 2nd at 4pm', '2019-02-02T16:00:00.000Z'],
['feb 2 at 4:30pm', '2019-02-02T16:30:00.000Z'],
['march 18th at 9am', '2019-03-18T09:00:00.000Z'],
['march 18th at noon', '2019-03-18T12:00:00.000Z'],
['the 18th of march', '2019-03-18T00:00:00.000Z'],
['the first of january 2020', '2020-01-01T00:00:00.000Z'],
['end of 2019', '2019-12-31T23:59:59.999Z'],
['beginning of 2019', '2019-01-01T00:00:00.000Z'],
['start of 2019', '2019-01-01T00:00:00.000Z'],
['middle of february 2019', '2019-02-15T00:00:00.000Z'],
['mid february 2019', '2019-02-01T00:00:00.000Z'],
['spring 2019', '2019-03-01T00:00:00.000Z'],
['summer 2019', '2019-06-01T00:00:00.000Z'],
['fall 2019', '2019-09-01T00:00:00.000Z'],
['winter 2019', '2019-12-01T00:00:00.000Z'],
['spring of 2019', '2019-03-01T00:00:00.000Z'],
['christmas 2019', '2019-12-25T00:00:00.000Z'],
['christmas 2000', '2000-12-25T00:00:00.000Z'],
['easter 2019', '2019-04-21T00:00:00.000Z'],
['thanksgiving 2019', '2019-11-28T00:00:00.000Z'],
['monday', '2019-02-04T00:00:00.000Z'],
['tuesday', '2019-02-05T00:00:00.000Z'],
['wednesday', '2019-02-06T00:00:00.000Z'],
['thursday', '2019-02-07T00:00:00.000Z'],
['friday', '2019-02-08T00:00:00.000Z'],
['saturday', '2019-02-02T00:00:00.000Z'],
['sunday', '2019-02-03T00:00:00.000Z'],
['monday february 4th', '2019-02-04T00:00:00.000Z'],
['february 4th monday', '2019-02-04T00:00:00.000Z'],
['2019-02-02', '2019-02-02T00:00:00.000Z'],
['02/02/2019', '2019-02-02T00:00:00.000Z'],
['2/2/2019', '2019-02-02T00:00:00.000Z'],
['february 2', '2019-02-02T00:00:00.000Z'],
['2 february 2019', '2019-02-02T00:00:00.000Z'],
['5th hour of 2020', '2020-01-01T04:00:00.000Z'],
['10th day of 2020', '2020-01-10T00:00:00.000Z'],
['last day of q1 2019', '2019-03-31T00:00:00.000Z'],
['first day of q2 2019', '2019-04-01T00:00:00.000Z'],
['5th day of q2 2019', '2019-04-05T00:00:00.000Z'],
['last hour of february 2019', '2019-02-28T23:00:00.000Z'],
['first hour of march 2019', '2019-03-01T00:00:00.000Z'],
['august 1st 2019', '2019-08-01T00:00:00.000Z'],
['sept 1 2019', '2019-09-01T00:00:00.000Z'],
['oct 31 2019', '2019-10-31T00:00:00.000Z'],
['nov 30th 2019', '2019-11-30T00:00:00.000Z'],
['dec 1 2019', '2019-12-01T00:00:00.000Z'],
['july 4th 1776', '1776-07-04T00:00:00.000Z'],
['july 4 1776', '1776-07-04T00:00:00.000Z'],
['4th of july 1776', '1776-07-04T00:00:00.000Z'],
['4 july 1776', '1776-07-04T00:00:00.000Z'],
// ['august to may 1996', '1996-05-01T00:00:00.000Z'],
]
arr.forEach(function (a) {
const json = nlp(a[0]).dates(context).json()[0] || {}
t.equal(json.dates.start, a[1], a[0])
})
t.end()
})