Skip to content

Commit

Permalink
fix: JPStandardParser.js year checking
Browse files Browse the repository at this point in the history
  • Loading branch information
wanasit committed Jan 13, 2020
2 parents ca12dfc + e342a2f commit 237a85c
Show file tree
Hide file tree
Showing 6 changed files with 110 additions and 32 deletions.
29 changes: 14 additions & 15 deletions chrono.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion chrono.map.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions chrono.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -11,7 +11,7 @@
"testURL": "http://localhost/"
},
"license": "MIT",
"version": "1.4.1",
"version": "1.4.2",
"directories": {
"source": "./src",
"test": "./test"
Expand Down
25 changes: 12 additions & 13 deletions src/parsers/ja/JPStandardParser.js
@@ -1,10 +1,12 @@
const dayjs = require('dayjs');
var parser = require('../parser');
var ParsedResult = require('../../result').ParsedResult;

var util = require('../../utils/JP');
var PATTERN = /(?:(同|今|本|((昭和|平成|令和)?([0-90-9]{2,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i;

var YEAR_GROUP = 2;

var SPECIAL_YEAR_GROUP = 1;
var TYPICAL_YEAR_GROUP = 2;
var ERA_GROUP = 3;
var YEAR_NUMBER_GROUP = 4;
var MONTH_GROUP = 5;
Expand All @@ -16,8 +18,6 @@ exports.Parser = function JPStandardParser(){
this.pattern = function() { return PATTERN; }

this.extract = function(text, ref, match, opt){


var result = new ParsedResult({
text: match[0],
index: match.index,
Expand All @@ -35,15 +35,8 @@ exports.Parser = function JPStandardParser(){
result.start.assign('day', day);
result.start.assign('month', month);

if (!match[YEAR_GROUP]) {
year = parser.findYearClosestToRef(ref, day, month);
result.start.imply('year', year);

} else if (match[YEAR_GROUP].match('同年|今年|本年')) {

result.start.assign('year', startMoment.year());
if (match[TYPICAL_YEAR_GROUP]) {

} else {
var year = match[YEAR_NUMBER_GROUP];
if (year == '元') {
year = 1;
Expand All @@ -61,9 +54,15 @@ exports.Parser = function JPStandardParser(){
}

result.start.assign('year', year);

} else if (match[SPECIAL_YEAR_GROUP] && match[SPECIAL_YEAR_GROUP].match('同|今|本')) {
const moment = dayjs(ref)
result.start.assign('year', moment.year());
} else {
const year = parser.findYearClosestToRef(ref, day, month);
result.start.imply('year', year);
}


result.tags['JPStandardParser'] = true;
return result;
};
Expand Down
80 changes: 80 additions & 0 deletions test/ja/ja_standard.test.js
Expand Up @@ -42,6 +42,25 @@ test("Test - Single Expression", function() {
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}

var text = "主な株主(2020年2月29日現在)";
var results = chrono.parse(text, new Date(2019,8-1,10));
expect(results.length).toBe(1)

var result = results[0];
if (result) {
expect(result.index).toBe(5)
expect(result.text).toBe('2020年2月29日')

expect(result.start).not.toBeNull()
expect(result.start.get('year')).toBe(2020)
expect(result.start.get('month')).toBe(2)
expect(result.start.get('day')).toBe(29)

var resultDate = result.start.date();
var expectDate = new Date(2020, 2-1, 29, 12);
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}

var text = "主な株主(9月3日現在)";
var results = chrono.parse(text, new Date(2012,8-1,10));
expect(results.length).toBe(1)
Expand Down Expand Up @@ -174,6 +193,67 @@ test("Test - Single Expression", function() {
var expectDate = new Date(2012, 7-1, 27, 12);
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}

var text = "主な株主(今年11月27日)";
var results = chrono.parse(text, new Date(2012,1-1,10));
expect(results.length).toBe(1)

var result = results[0];
if (result) {
expect(result.index).toBe(5)
expect(result.text).toBe('今年11月27日')

expect(result.start).not.toBeNull()
expect(result.start.get('year')).toBe(2012)
expect(result.start.get('month')).toBe(11)
expect(result.start.get('day')).toBe(27)

var resultDate = result.start.date();
var expectDate = new Date(2012, 11-1, 27, 12);
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}
});


test("Test - Single Expression without year", function() {

var text = "7月27日";
var results = chrono.parse(text, new Date(2012,8-1,10));
expect(results.length).toBe(1)

var result = results[0];
if (result) {
expect(result.index).toBe(0)
expect(result.text).toBe('7月27日')

expect(result.start).not.toBeNull()
expect(result.start.get('year')).toBe(2012)
expect(result.start.get('month')).toBe(7)
expect(result.start.get('day')).toBe(27)

var resultDate = result.start.date();
var expectDate = new Date(2012, 7-1, 27, 12);
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}

var text = "11月27日";
var results = chrono.parse(text, new Date(2012,1-1,10));
expect(results.length).toBe(1)

var result = results[0];
if (result) {
expect(result.index).toBe(0)
expect(result.text).toBe('11月27日')

expect(result.start).not.toBeNull()
expect(result.start.get('year')).toBe(2011)
expect(result.start.get('month')).toBe(11)
expect(result.start.get('day')).toBe(27)

var resultDate = result.start.date();
var expectDate = new Date(2011, 11-1, 27, 12);
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}
});


Expand Down

0 comments on commit 237a85c

Please sign in to comment.