diff --git a/src/2-two/postTagger/model/numbers/numbers.js b/src/2-two/postTagger/model/numbers/numbers.js index 7cd2094..d78ebc6 100644 --- a/src/2-two/postTagger/model/numbers/numbers.js +++ b/src/2-two/postTagger/model/numbers/numbers.js @@ -37,6 +37,15 @@ export default [ tag: 'Value', reason: 'a-trillion', }, + // two [dozen] eggs + { match: '(a|#Cardinal) [dozen]', hook: 'dozen', group: 0, tag: ['Multiple', 'Cardinal'], reason: 'value-dozen' }, + // with [a] dozen eggs + { + match: '!once? [a] dozen', hook: 'dozen', + group: 0, + tag: 'Value', + reason: 'a-dozen', + }, // ==== PhoneNumber ==== // 1 800 555-1234 { match: '(1|+1) #Value #PhoneNumber', tag: 'PhoneNumber', reason: 'country-code' }, diff --git a/src/3-three/numbers/numbers/parse/toNumber/data.js b/src/3-three/numbers/numbers/parse/toNumber/data.js index b592aa2..8805c4e 100644 --- a/src/3-three/numbers/numbers/parse/toNumber/data.js +++ b/src/3-three/numbers/numbers/parse/toNumber/data.js @@ -83,5 +83,6 @@ export default { sextillion: 1e21, septillion: 1e24, grand: 1000, + dozen: 12, }, } diff --git a/tests/three/numbers/number-parse.test.js b/tests/three/numbers/number-parse.test.js index 1b9625c..c5f2730 100644 --- a/tests/three/numbers/number-parse.test.js +++ b/tests/three/numbers/number-parse.test.js @@ -45,3 +45,18 @@ test('parse numbers', function (t) { }) t.end() }) + +test('parse dozen', function (t) { + const arr = [ + ['a dozen', 12], + ['two dozen eggs', 24], + ['three dozen', 36], + ['i bought a dozen eggs', 12], + ['half a dozen eggs', 6], + ] + arr.forEach(function (a) { + const num = nlp(a[0]).numbers().get()[0] + t.equal(num, a[1], here + a[0]) + }) + t.end() +})