@@ -7,19 +7,23 @@ const moment = require('moment');
77 * @type {[RegExp] }
88 */
99const supportedLang = [
10- [ / ^ E N / , "en" ] ,
11- [ / ^ J P / , "ja" ] ,
12- [ / ^ E S / , "es" ] ,
13- [ / ^ F R / , "fr" ] ,
14- [ / ^ Z H / , "zh" ]
10+ [ / ^ E N / i , "en" ] ,
11+ [ / ^ J P / i , "ja" ] ,
12+ [ / ^ E S / i , "es" ] ,
13+ [ / ^ F R / i , "fr" ] ,
14+ [ / ^ Z H / i , "zh" ]
1515] ;
1616
1717/**
1818 * detect lang and return language string
1919 * @param {string[] } tags
20+ * @param {string } [preferLang]
2021 * @returns {string|null }
2122 */
22- const detectLang = ( tags ) => {
23+ const detectLang = ( tags , preferLang ) => {
24+ if ( preferLang ) {
25+ return preferLang ;
26+ }
2327 const targetLangs = supportedLang . filter ( ( [ langRegExp ] ) => {
2428 return tags . some ( tag => langRegExp . test ( tag ) ) ;
2529 } ) ;
@@ -29,7 +33,13 @@ const detectLang = (tags) => {
2933 const selectedLang = targetLangs [ 0 ] ;
3034 return selectedLang [ 1 ] ;
3135} ;
32- function reporter ( context ) {
36+ /**
37+ *
38+ * @param context
39+ * @param {Object } [config]
40+ */
41+ function reporter ( context , config = { } ) {
42+ const preferLang = config . lang ;
3343 const { Syntax, RuleError, report, fixer, getSource} = context ;
3444 if ( typeof Intl === "undefined" ) {
3545 throw new Error ( "Not support your Node.js/browser. should be use latest version." ) ;
@@ -39,13 +49,11 @@ function reporter(context) {
3949 const text = getSource ( node ) ;
4050 const chronoDate = chrono . parse ( text ) ;
4151 chronoDate . forEach ( chronoDate => {
42- const lang = detectLang ( Object . keys ( chronoDate . tags ) ) ;
52+ const lang = detectLang ( Object . keys ( chronoDate . tags ) , preferLang ) ;
4353 if ( ! lang ) {
4454 // not found lang
4555 return ;
4656 }
47- // change lang
48- moment . locale ( lang ) ;
4957 // get weekday from actual date string
5058 const kV = chronoDate . start . knownValues ;
5159 const $moment = moment ( `${ kV . year } -${ kV . month } -${ kV . day } ` , "YYYY-MM-DD" , lang ) ;
@@ -67,9 +75,9 @@ function reporter(context) {
6775 // format http://momentjs.com/docs/#/parsing/string-format/
6876 const weekdayPatterns = [
6977 // date-format , symbols
70- [ "dd" , moment . weekdaysMin ( ) ] ,
71- [ "ddd" , moment . weekdaysShort ( ) ] ,
72- [ "dddd" , moment . weekdays ( ) ]
78+ [ "dd" , moment . localeData ( lang ) . weekdaysMin ( ) ] ,
79+ [ "ddd" , moment . localeData ( lang ) . weekdaysShort ( ) ] ,
80+ [ "dddd" , moment . localeData ( lang ) . weekdays ( ) ]
7381 ] ;
7482 weekdayPatterns . forEach ( ( [ format , symbols ] ) => {
7583 if ( symbols . indexOf ( maybeWeekdayText ) === - 1 ) {
0 commit comments