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

80 lines
3.2 KiB
JavaScript

import test from 'tape'
import nlp from './_lib.js'
const context = {
today: '2021-04-17', //saturday
timezone: 'Canada/Eastern',
}
const arr = [
// independant dates
['tomorrow, tuesday, wednesday', ['apr 18', 'apr 20', 'apr 21']],
['mon, tuesday', ['apr 19', 'apr 20']],
['mon, tuesday, wednesday', ['apr 19', 'apr 20', 'apr 21']],
['jan 2 or jan 4', ['jan 2nd', 'jan 4th']],
['jan 6 and jan 9', ['jan 6th', 'jan 9th']],
['between jan 5 and jan 10', ['jan 5-10']],
['feb 5 or next weekend', ['february 5', 'apr 24']],
['next friday, this monday', ['fri 23', 'mon 19']],
['jan or feb', ['jan 1', 'feb 1']],
['january and in feb', ['jan 1', 'feb 1']],
['during march or september', ['march 1', 'september 1']],
['march, may, or june', ['march 1', 'may 1', 'june 1']],
['may or june', ['may 1', 'june 1']],
['sunday or monday', ['sunday 18', 'monday 19']],
['april 1 or may 2', ['april 1', 'may 2']],
['april 1 and may 2', ['april 1', 'may 2']],
['july 4 or july 5', ['july 4', 'july 5']],
['july 4 and july 5', ['july 4', 'july 5']],
['oct 31 or nov 1', ['oct 31', 'nov 1']],
['march 1 or april 2 2022', ['march 1 2022', 'april 2 2022']],
['in march or in april', ['march 1', 'april 1']],
['march and april', ['march 1', 'april 1']],
['march or june 2019', ['march 1 2019', 'june 1 2019']],
['during april or may', ['april 1', 'may 1']],
['january or february 2022', ['jan 1 2022', 'feb 1 2022']],
['only in 2018 and 2020', ['2018', '2020']],
['dec 25 or jan 1', ['dec 25', 'jan 1']],
// dependant date combos
// ['march 3rd and 4th', ['mar 3', 'mar 4']],
['june 3rd and 4th', ['jun 3', 'jun 4']],
['feb 2 or third', ['feb 2nd', 'feb 3']],
['february 5th, 6th or 7th', ['feb 5', 'feb 6', 'feb 7']],
['february 5th, 6th and 7th', ['feb 5', 'feb 6', 'feb 7']],
['sept or june 1998', ['sept 1 1998', 'june 1 1998']],
['3, 4, or 5 of Feb 1998', ['feb 3 1998', 'feb 4 1998', 'feb 5 1998']],
['3, 4, or 5 of February', ['feb 3', 'feb 4', 'feb 5']],
['jan 22, 23, 28', ['jan 22', 'jan 23', 'jan 28']],
['jan 22, 23, 28 1998', ['jan 22 1998', 'jan 23 1998', 'jan 28 1998']],
['jan 5 or 8', ['jan 5th', 'jan 8th']],
['jan 5 and 8', ['jan 5th', 'jan 8th']],
['jan 5 8', ['jan 5th', 'jan 8th']],
['5 or 8 of jan', ['jan 5th', 'jan 8th']],
['5 and 8 of jan', ['jan 5th', 'jan 8th']],
['4 or 5 of july', ['july 4', 'july 5']],
['4 and 5 of july', ['july 4', 'july 5']],
['1st or 2nd of march', ['mar 1', 'mar 2']],
['1 and 2 of march', ['mar 1', 'mar 2']],
['1, 2 and 3 of march', ['mar 1', 'mar 2', 'mar 3']],
['the 1st or 2nd of may', ['may 1', 'may 2']],
['april 5, 6, 7', ['apr 5', 'apr 6', 'apr 7']],
['aug 3 or 10', ['aug 3', 'aug 10']],
['aug 3 and 10', ['aug 3', 'aug 10']],
['3 or 4 of aug', ['aug 3', 'aug 4']],
['sept 1, 2, 3', ['sept 1', 'sept 2', 'sept 3']],
['sept 1 2 3', ['sept 1', 'sept 2', 'sept 3']],
]
test('multi-dates', function (t) {
arr.forEach((a) => {
const found = nlp(a[0]).dates(context).get()
t.equal(found.length, a[1].length, '[length] ' + a[0])
a[1].forEach((str, i) => {
const one = nlp(str).dates(context).get()[0]
t.equal((found[i] || {}).start, one.start, `[combo: ${str}] '${a[0]}'`)
})
})
t.end()
})