diff --git a/src/2.2.2.js b/src/2.2.2.js index 2887982..ee42796 100644 --- a/src/2.2.2.js +++ b/src/2.2.2.js @@ -156,9 +156,9 @@ function reporter(context) { }; // ignorePatternにマッチしたらmatchFnを呼ばないようにする(エラーを無視する) - const ignoreWhenMatched = (ignorePattern, matchFn) => { + const ignoreWhenMatched = (ignorePatterns, matchFn) => { return (text, pattern, match) => { - if (ignorePattern.test(text)) { + if (ignorePatterns.some(p => p.test(text))) { return null; } else { return matchFn(text, pattern, match); @@ -172,9 +172,19 @@ function reporter(context) { matchToReplace( text, /([一二三四五六七八九十壱弐参拾百〇]+)[兆億万]/g, - ignoreWhenMatched(/(数|何)([一二三四五六七八九十壱弐参拾百〇]+)[兆億万]/g, toNumber) + ignoreWhenMatched([/(数|何)([一二三四五六七八九十壱弐参拾百〇]+)[兆億万]/g], toNumber) + ); + matchToReplace( + text, + /([一二三四五六七八九十壱弐参拾百〇]+)つ/g, + ignoreWhenMatched( + [ + /[一二三四五六七八九]つ(返事|子|ひとつ|星|編|葉|橋|と[無な]い|に一つ)/g, + /(ただ|唯|[女男]手|穴|瓜|馬鹿の)[一二]つ/g + ], + toNumber + ) ); - matchToReplace(text, /([一二三四五六七八九十壱弐参拾百〇]+)つ/g, toNumber); matchToReplace(text, /([一二三四五六七八九十壱弐参拾百〇]+)回/g, toNumber); matchToReplace(text, /([一二三四五六七八九十壱弐参拾百〇]+)か月/g, toNumber); matchToReplace(text, /([一二三四五六七八九十壱弐参拾百〇]+)番目/g, toNumber); diff --git a/test/2.2.2-test.js b/test/2.2.2-test.js index 155ee08..67f2d16 100644 --- a/test/2.2.2-test.js +++ b/test/2.2.2-test.js @@ -97,7 +97,24 @@ tester.run("2.2.2.算用数字と漢数字の使い分け", rule, { "五大陸", "数十億", "何十万", - "しばしば数十万行以上に" + "しばしば数十万行以上に", + "二つ返事でOKした", + "三つ子の魂百まで", + "一つひとつ確かめる", + "ミシュラン二つ星", + "三つ編にする", + "四つ葉のクローバー", + "四つ橋線", + "二つと無い宝石", + "二つとない宝石", + "二つに一つしかない", + "ただ一つの弱点", + "唯一つの欠点", + "女手一つで育てた", + "男手一つで育てた", + "人を呪わば穴二つ", + "瓜二つの姉妹", + "馬鹿の一つ覚えだ" ], invalid: [ {