Skip to content

Commit 09e6a62

Browse files
authored
fix(2.2.2): 11種類」が「1一種類」と誤検知される問題を修正 (#66)
fix #65
1 parent 174187a commit 09e6a62

17 files changed

+4075
-38
lines changed

src/1.1.1.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,13 @@ module.exports = function(context) {
2828
matches.forEach(match => {
2929
let message;
3030
if (desumasu) {
31-
message = `本文を常体(である調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"${match.value}"が敬体(ですます調)です。`;
31+
message = `本文を常体(である調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"${
32+
match.value
33+
}"が敬体(ですます調)です。`;
3234
} else if (dearu) {
33-
message = `本文を敬体(ですます調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"${match.value}"が常体(である調)です。`;
35+
message = `本文を敬体(ですます調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"${
36+
match.value
37+
}"が常体(である調)です。`;
3438
}
3539
report(
3640
node,

src/1.1.3.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,13 @@ module.exports = function(context) {
4343
matches.forEach(match => {
4444
let message;
4545
if (desumasu) {
46-
message = `箇条書きを敬体(ですます調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"${match.value}"が常体(である調)です。`;
46+
message = `箇条書きを敬体(ですます調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"${
47+
match.value
48+
}"が常体(である調)です。`;
4749
} else if (dearu) {
48-
message = `箇条書きを常体(である調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"${match.value}"が敬体(ですます調)です。`;
50+
message = `箇条書きを常体(である調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"${
51+
match.value
52+
}"が敬体(ですます調)です。`;
4953
}
5054
report(
5155
node,

src/1.1.5.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,13 @@ module.exports = function(context) {
2525
matches.forEach(match => {
2626
let message;
2727
if (desumasu) {
28-
message = `図表のキャプションを敬体(ですます調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"${match.value}"が常体(である調)です。`;
28+
message = `図表のキャプションを敬体(ですます調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"${
29+
match.value
30+
}"が常体(である調)です。`;
2931
} else if (dearu) {
30-
message = `図表のキャプションを常体(である調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"${match.value}"が敬体(ですます調)です。`;
32+
message = `図表のキャプションを常体(である調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"${
33+
match.value
34+
}"が敬体(ですます調)です。`;
3135
}
3236
report(
3337
node,

src/1.2.1.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,13 @@ const reporter = context => {
4444
const indexOfSymbol = match.index;
4545
report(
4646
node,
47-
new RuleError("句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。", {
48-
index: indexOfSymbol,
49-
fix: fixer.replaceTextRange([indexOfSymbol, indexOfSymbol + 1], symbol)
50-
})
47+
new RuleError(
48+
"句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。",
49+
{
50+
index: indexOfSymbol,
51+
fix: fixer.replaceTextRange([indexOfSymbol, indexOfSymbol + 1], symbol)
52+
}
53+
)
5154
);
5255
});
5356
}

src/2.2.2.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"use strict";
33
import { isUserWrittenNode } from "./util/node-util";
44
import ja2num from "japanese-numerals-to-number";
5+
56
function matchToReplace(text, pattern, matchFn) {
67
var match = pattern.exec(text);
78
if (match) {
@@ -129,8 +130,12 @@ function reporter(context) {
129130
report(node, ruleError);
130131
};
131132

132-
// 算用数字 -> 漢数字
133-
133+
/**
134+
* 算用数字 -> 漢数字
135+
* @param {string} text
136+
* @param {RegExp} pattern
137+
* @param {*[]} match
138+
*/
134139
const toKanNumber = (text, pattern, match) => {
135140
const matchedString = match[0];
136141
const expected = matchedString.replace(pattern, function(all, match) {
@@ -183,7 +188,8 @@ function reporter(context) {
183188
matchToReplace(text, /(1)/g, toKanNumber);
184189
matchToReplace(text, /(1)/g, toKanNumber);
185190
matchToReplace(text, /(3)/g, toKanNumber);
186-
matchToReplace(text, /(1)/g, toKanNumber);
191+
// 1種 -> 一種: 11種類などにはマッチしない
192+
matchToReplace(text, /[^\d](1)(?!)/g, toKanNumber);
187193
matchToReplace(text, /(1)/g, toKanNumber);
188194
matchToReplace(text, /(1)/g, toKanNumber);
189195
matchToReplace(text, /([0-9]+)/g, toKanNumber);

src/4.2.4.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,13 @@ function reporter(context) {
2727
const { index } = match;
2828
report(
2929
node,
30-
new RuleError("カタカナ複合語を区切る場合または同格の語句を並列する場合には全角の中黒(・)を使用します。", {
31-
index: index,
32-
fix: fixer.replaceTextRange([index, index + 1], "・")
33-
})
30+
new RuleError(
31+
"カタカナ複合語を区切る場合または同格の語句を並列する場合には全角の中黒(・)を使用します。",
32+
{
33+
index: index,
34+
fix: fixer.replaceTextRange([index, index + 1], "・")
35+
}
36+
)
3437
);
3538
});
3639
}

test/1.1.1-test.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ tester.run("1.1.1.本文", rule, {
2525
それはペンです。`,
2626
errors: [
2727
{
28-
message: '本文を常体(である調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"です。"が敬体(ですます調)です。',
28+
message:
29+
'本文を常体(である調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"です。"が敬体(ですます調)です。',
2930
line: 5,
3031
column: 6
3132
}
@@ -38,7 +39,8 @@ tester.run("1.1.1.本文", rule, {
3839
`,
3940
errors: [
4041
{
41-
message: '本文を敬体(ですます調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"のだが"が常体(である調)です。',
42+
message:
43+
'本文を敬体(ですます調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"のだが"が常体(である調)です。',
4244
line: 1,
4345
column: 8
4446
}
@@ -49,7 +51,8 @@ tester.run("1.1.1.本文", rule, {
4951
text: `今日はいい天気ですね。今日はいい天気である。`,
5052
errors: [
5153
{
52-
message: '本文を敬体(ですます調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"である。"が常体(である調)です。',
54+
message:
55+
'本文を敬体(ですます調)に統一して下さい。\n本文の文体は、敬体(ですます調)あるいは常体(である調)のどちらかで統一します。\n"である。"が常体(である調)です。',
5356
line: 1,
5457
column: 19
5558
}

test/1.1.3-test.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ tester.run("1.1.3.箇条書き", rule, {
2727
`.trim(),
2828
errors: [
2929
{
30-
message: '箇条書きを敬体(ですます調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"である。"が常体(である調)です。',
30+
message:
31+
'箇条書きを敬体(ですます調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"である。"が常体(である調)です。',
3132
line: 3,
3233
column: 14
3334
}
@@ -41,7 +42,8 @@ tester.run("1.1.3.箇条書き", rule, {
4142
`.trim(),
4243
errors: [
4344
{
44-
message: '箇条書きを常体(である調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"です。"が敬体(ですます調)です。',
45+
message:
46+
'箇条書きを常体(である調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"です。"が敬体(ですます調)です。',
4547
line: 1,
4648
column: 15
4749
}
@@ -55,7 +57,8 @@ tester.run("1.1.3.箇条書き", rule, {
5557
`.trim(),
5658
errors: [
5759
{
58-
message: '箇条書きを敬体(ですます調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"である。"が常体(である調)です。',
60+
message:
61+
'箇条書きを敬体(ですます調)に統一して下さい。\nひとまとまりの箇条書きでは、敬体と常体を混在させません。\n"である。"が常体(である調)です。',
5962
line: 2,
6063
column: 14
6164
}
@@ -68,7 +71,8 @@ tester.run("1.1.3.箇条書き", rule, {
6871
`.trim(),
6972
errors: [
7073
{
71-
message: "箇条書きの文末に句点(。)を付けて下さい。\n箇条書きの文末に句点(。)を付けるかを統一します。",
74+
message:
75+
"箇条書きの文末に句点(。)を付けて下さい。\n箇条書きの文末に句点(。)を付けるかを統一します。",
7276
line: 2,
7377
column: 1 // 無指定なので - PR Welcome
7478
}
@@ -82,7 +86,8 @@ tester.run("1.1.3.箇条書き", rule, {
8286
`.trim(),
8387
errors: [
8488
{
85-
message: "箇条書きの文末から句点(。)を外して下さい。\n箇条書きの文末に句点(。)を付けるかを統一します。",
89+
message:
90+
"箇条書きの文末から句点(。)を外して下さい。\n箇条書きの文末に句点(。)を付けるかを統一します。",
8691
line: 1,
8792
column: 1 // 無指定なので - PR Welcome
8893
}

test/1.1.5-test.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ tester.run("1.1.5.図表のキャプション", rule, {
1515
"![これは図です。](http://example.com/img) と ![これは図です。](http://example.com/img) と ![これは図である。](http://example.com/img).",
1616
errors: [
1717
{
18-
message: '図表のキャプションを敬体(ですます調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"である。"が常体(である調)です。',
18+
message:
19+
'図表のキャプションを敬体(ですます調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"である。"が常体(である調)です。',
1920
line: 1,
2021
column: 82
2122
}
@@ -26,7 +27,8 @@ tester.run("1.1.5.図表のキャプション", rule, {
2627
"![これは図です。](http://example.com/img) と ![これは図である。](http://example.com/img) と ![これは図である。](http://example.com/img).",
2728
errors: [
2829
{
29-
message: '図表のキャプションを常体(である調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"です。"が敬体(ですます調)です。',
30+
message:
31+
'図表のキャプションを常体(である調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"です。"が敬体(ですます調)です。',
3032
line: 1,
3133
column: 7 // imgのposition
3234
}
@@ -37,7 +39,8 @@ tester.run("1.1.5.図表のキャプション", rule, {
3739
text: "![これは図です。](http://example.com/img) と ![これは図である。](http://example.com/img).",
3840
errors: [
3941
{
40-
message: '図表のキャプションを敬体(ですます調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"である。"が常体(である調)です。',
42+
message:
43+
'図表のキャプションを敬体(ですます調)に統一して下さい。\n図表のキャプション内で敬体、常体を混在させないことが重要です。\n"である。"が常体(である調)です。',
4144
line: 1,
4245
column: 44
4346
}

test/1.2.1-test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ tester.run("1.2.1.句点(。)と読点(、)", rule, {
1515
output: "これは、見本となる例です。",
1616
errors: [
1717
{
18-
message: "句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。",
18+
message:
19+
"句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。",
1920
column: 4
2021
},
2122
{
22-
message: "句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。",
23+
message:
24+
"句読点には全角の「、」と「。」を使います。和文の句読点としてピリオド(.)とカンマ(,)を使用しません。",
2325
column: 13
2426
}
2527
]

test/2.1.5-test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ tester.run("2.1.5.カタカナ", rule, {
3838
},
3939
{
4040
text: "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚",
41-
output: "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜",
41+
output:
42+
"ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜",
4243
errors: [
4344
{
4445
message: "カタカナは「全角」で表記します。",

test/2.2.2-test.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import TextLintTester from "textlint-tester";
44
import rule from "../src/2.2.2";
55
var tester = new TextLintTester();
66
tester.run("2.2.2.算用数字と漢数字の使い分け", rule, {
7-
valid: ["1億2805 万人", "3つのボタン", "第3回大会", "第3章", "20回", "第3節", "4種類"],
7+
valid: ["1億2805 万人", "3つのボタン", "第3回大会", "第3章", "20回", "第3節", "4種類", "11種類"],
88
invalid: [
99
{
1010
text: "第三章",
@@ -115,6 +115,16 @@ tester.run("2.2.2.算用数字と漢数字の使い分け", rule, {
115115
errors: [
116116
{
117117
message: `1部の => 一部の
118+
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`
119+
}
120+
]
121+
},
122+
{
123+
text: "これは花の1種です",
124+
output: "これは花の一種です",
125+
errors: [
126+
{
127+
message: `の1種 => の一種
118128
慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。`
119129
}
120130
]

test/4.2.4-test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ tester.run("4.2.4.中黒(・)", rule, {
1010
text: "小・中学校",
1111
errors: [
1212
{
13-
message: "カタカナ複合語を区切る場合または同格の語句を並列する場合には全角の中黒(・)を使用します。",
13+
message:
14+
"カタカナ複合語を区切る場合または同格の語句を並列する場合には全角の中黒(・)を使用します。",
1415
column: 2
1516
}
1617
]

0 commit comments

Comments
 (0)