Skip to content

Commit cb98bf5

Browse files
committed
MBS-12229: Parse Japanese letter code dates as proper year numbers
See https://reference.discogs.com/wiki/japanese-release-dates#date-format
1 parent 6e83893 commit cb98bf5

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

root/static/scripts/common/utility/parseNaturalDate.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,28 @@ function cleanDateString(
2626
},
2727
);
2828

29+
// See https://reference.discogs.com/wiki/japanese-release-dates#date-format
30+
const japaneseYearCodes = {
31+
/* eslint-disable sort-keys */
32+
N: '1984',
33+
I: '1985',
34+
H: '1986',
35+
O: '1987',
36+
R: '1988',
37+
E: '1989',
38+
C: '1990',
39+
D: '1991',
40+
K: '1992',
41+
L: '1993',
42+
/* eslint-enable sort-keys */
43+
};
44+
cleanedString = cleanedString.replace(
45+
/([NIHORECDKL])-([0-9]{1,2}-[0-9]{1,2})/,
46+
function (match, year, date) {
47+
return japaneseYearCodes[year] + '-' + date;
48+
},
49+
);
50+
2951
return cleanedString;
3052
}
3153

root/static/scripts/tests/utility/parseNaturalDate.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import test from 'tape';
1212
import parseNaturalDate from '../../common/utility/parseNaturalDate.js';
1313

1414
test('parseNaturalDate', function (t) {
15-
t.plan(10);
15+
t.plan(12);
1616

1717
/* eslint-disable sort-keys */
1818
const parseDateTests = [
@@ -42,6 +42,10 @@ test('parseNaturalDate', function (t) {
4242
date: '1999 01 02',
4343
expected: {year: '1999', month: '01', day: '02'},
4444
},
45+
46+
// Japanese year codes
47+
{date: 'O-2-25', expected: {year: '1987', month: '2', day: '25'}},
48+
{date: 'D-12-10', expected: {year: '1991', month: '12', day: '10'}},
4549
];
4650
/* eslint-enable sort-keys */
4751

0 commit comments

Comments
 (0)