Skip to content

Commit adaa6d9

Browse files
committed
chore(2.2.2): エラー表示を改善
1 parent 4695532 commit adaa6d9

File tree

2 files changed

+59
-24
lines changed

2 files changed

+59
-24
lines changed

src/2.2.2.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"use strict";
33
import {isUserWrittenNode} from "./util/node-util";
44
function matchToReplace(text, pattern, matchFn) {
5-
var match = text.match(pattern);
5+
var match = pattern.exec(text);
66
if (match) {
77
return matchFn(text, pattern, match);
88
}
@@ -115,26 +115,34 @@ export default function (context) {
115115
let text = getSource(node);
116116
// 漢数字 -> 算用数字
117117
let toNumber = (text, pattern, match) => {
118-
var expected = text.replace(pattern, function (all, match) {
118+
let matchedString = match[0];
119+
let index = match.index;
120+
var expected = matchedString.replace(pattern, function (all, match) {
119121
let result = 0;
120122
match.split("").forEach(kanNumber => {
121123
result += numberMap[kanNumber];
122124
});
123125
return all.replace(match, result);
124126
});
125-
report(node, new RuleError(`${text} => ${expected}
126-
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`));
127+
var ruleError = new RuleError(`${matchedString} => ${expected}
128+
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`, {
129+
column: index
130+
});
131+
report(node, ruleError);
127132
};
128133

129134

130135
// 算用数字 -> 漢数字
131136

132137
let toKanNumber = (text, pattern, match) => {
133-
var expected = text.replace(pattern, function (all, match) {
138+
var matchedString = match[0];
139+
var expected = matchedString.replace(pattern, function (all, match) {
134140
return all.replace(match, _num2ja(match, {'with_arabic': false}));
135141
});
136-
report(node, new RuleError(`${text} => ${expected}
137-
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`));
142+
report(node, new RuleError(`${matchedString} => ${expected}
143+
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`, {
144+
column: matchedString.index
145+
}));
138146
};
139147

140148
// 数えられる数字は算用数字を使う

test/2.2.2-test.js

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,41 @@ tester.run("2.2.2.算用数字と漢数字の使い分け", rule, {
1414
{
1515
text: "一億百十万人",
1616
errors: [
17-
{message: `一億百十万人 => 1億110万人
18-
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`}
17+
{
18+
message: `一億 => 1億
19+
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`,
20+
line: 1,
21+
column: 1
22+
}
1923
]
2024
},
2125
{
2226
text: "百八つのボタン",
2327
errors: [
24-
{message: `百八つのボタン => 108つのボタン
25-
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`}
28+
{
29+
message: `百八つ => 108つ
30+
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`
31+
}
2632
]
2733
},
2834
{
2935
text: "第三回大会",
3036
errors: [
31-
{message: `第三回大会 => 第3回大会
32-
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`}
37+
{
38+
message: `三回 => 3回
39+
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`
40+
}
41+
]
42+
},
43+
{
44+
text: "サンフランシスコマラソン第三回大会",
45+
errors: [
46+
{
47+
message: `三回 => 3回
48+
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。`,
49+
line: 1,
50+
column: 14
51+
}
3352
]
3453
}
3554
]
@@ -55,31 +74,39 @@ tester.run("2.2.2.算用数字と漢数字の使い分け", rule, {
5574
],
5675
invalid: [
5776
{
58-
text: "世界1",
77+
text: "これは世界1",
5978
errors: [
60-
{message: `世界1 => 世界一
61-
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`}
79+
{
80+
message: `世界1 => 世界一
81+
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`
82+
}
6283
]
6384
},
6485
{
65-
text: "1部の",
86+
text: "1部の文章",
6687
errors: [
67-
{message: `1部の => 一部の
68-
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`}
88+
{
89+
message: `1部の => 一部の
90+
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`
91+
}
6992
]
7093
},
7194
{
72-
text: "1番に",
95+
text: "朝1番に",
7396
errors: [
74-
{message: `1番に => 一番に
75-
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`}
97+
{
98+
message: `1番に => 一番に
99+
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`
100+
}
76101
]
77102
},
78103
{
79104
text: "数100倍",
80105
errors: [
81-
{message: `数100倍 => 数百倍
82-
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`}
106+
{
107+
message: `数100倍 => 数百倍
108+
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`
109+
}
83110
]
84111
}
85112
]

0 commit comments

Comments
 (0)