Skip to content

Commit c4d17ce

Browse files
azuclaude
andcommitted
feat: エラーメッセージの改善とREADMEの更新
- エラーメッセージに理由・修正方法・例を追加 - READMEに句点の重要性と詳細な修正例を追加 - テストケースを新しいメッセージ形式に対応 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 83ebb19 commit c4d17ce

File tree

3 files changed

+132
-21
lines changed

3 files changed

+132
-21
lines changed

README.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,77 @@ english only
5959
絵文字が末尾にある。😆
6060
```
6161

62+
## なぜ句点「。」が必要なのか
63+
64+
日本語の文章では、文末に句点「。」をつけることで:
65+
- **文の区切りが明確になる**: 読み手が文の終わりを認識しやすい
66+
- **読みやすさが向上**: 文章構造が明確になり理解しやすい
67+
- **誤読を防ぐ**: 文と文の境界がはっきりし、意味の取り違えを防ぐ
68+
69+
このルールは、文末の句点の統一性をチェックし、読みやすい文章作成を支援します。
70+
71+
## エラーメッセージと修正方法
72+
73+
### 句点の付け忘れ
74+
75+
**エラーメッセージ:**
76+
```
77+
文末が"。"で終わっていません。
78+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
79+
修正: 適切な文末表現で文を完結させ、句点を追加してください
80+
例: 「〜です。」「〜ます。」「〜でした。」など
81+
```
82+
83+
**修正例:**
84+
```
85+
❌ これは問題ありません
86+
✅ これは問題ありません。
87+
88+
❌ 説明を追加しました
89+
✅ 説明を追加しました。
90+
```
91+
92+
### 末尾の不要なスペース
93+
94+
**エラーメッセージ:**
95+
```
96+
文末が"。"で終わっていません。
97+
理由: 末尾の不要な空白が句点の代わりになっていません
98+
修正: 空白を削除してください
99+
```
100+
101+
**修正例:**
102+
```
103+
❌ 文末に空白がある。
104+
✅ 文末に空白がある。
105+
```
106+
107+
### ピリオドの使用
108+
109+
**エラーメッセージ:**
110+
```
111+
文末が"。"で終わっていません。
112+
理由: 日本語文章では"。"を使用します
113+
修正: "."を"。"に置き換えてください
114+
```
115+
116+
**修正例:**
117+
```
118+
❌ これはピリオドで終わっています.
119+
✅ これはピリオドで終わっています。
120+
```
121+
122+
### 自動修正
123+
124+
`--fix` オプションで以下が自動修正されます:
125+
- 末尾の空白削除
126+
- ピリオドから句点への変換(`.```
127+
- 句点の追加(`forceAppendPeriod: true` 設定時)
128+
129+
```bash
130+
textlint --fix --rule ja-no-mixed-period README.md
131+
```
132+
62133
## Options
63134

64135
- `periodMark`: `string`:

src/textlint-rule-ja-no-mixed-period.ts

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,15 @@ const reporter: TextlintRuleReporter<Options> = (context, options = {}) => {
100100
if (/\s/.test(periodMark)) {
101101
report(
102102
lastNode,
103-
new RuleError(`文末が"${preferPeriodMark}"で終わっていません。末尾に不要なスペースがあります。`, {
104-
index,
105-
fix: fixer.replaceTextRange([index, index + periodMark.length], "")
106-
})
103+
new RuleError(
104+
`文末が"${preferPeriodMark}"で終わっていません。
105+
理由: 末尾の不要な空白が句点の代わりになっていません
106+
修正: 空白を削除してください`,
107+
{
108+
index,
109+
fix: fixer.replaceTextRange([index, index + periodMark.length], "")
110+
}
111+
)
107112
);
108113
return;
109114
}
@@ -112,28 +117,45 @@ const reporter: TextlintRuleReporter<Options> = (context, options = {}) => {
112117
if (classicPeriodMarkPattern.test(periodMark)) {
113118
report(
114119
lastNode,
115-
new RuleError(`文末が"${preferPeriodMark}"で終わっていません。`, {
116-
index: index,
117-
fix: fixer.replaceTextRange([index, index + preferPeriodMark.length], preferPeriodMark)
118-
})
120+
new RuleError(
121+
`文末が"${preferPeriodMark}"で終わっていません。
122+
理由: 日本語文章では"${preferPeriodMark}"を使用します
123+
修正: "${periodMark}"を"${preferPeriodMark}"に置き換えてください`,
124+
{
125+
index: index,
126+
fix: fixer.replaceTextRange([index, index + preferPeriodMark.length], preferPeriodMark)
127+
}
128+
)
119129
);
120130
} else {
121131
// 句点を忘れているパターン
122132
if (forceAppendPeriod) {
123133
// `forceAppendPeriod`のオプションがtrueならば、自動で句点を追加する。
124134
report(
125135
lastNode,
126-
new RuleError(`文末が"${preferPeriodMark}"で終わっていません。`, {
127-
index: index,
128-
fix: fixer.replaceTextRange([index + 1, index + 1], preferPeriodMark)
129-
})
136+
new RuleError(
137+
`文末が"${preferPeriodMark}"で終わっていません。
138+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
139+
修正: 適切な文末表現で文を完結させ、句点を追加してください
140+
例: 「〜です${preferPeriodMark}」「〜ます${preferPeriodMark}」「〜でした${preferPeriodMark}」など`,
141+
{
142+
index: index,
143+
fix: fixer.replaceTextRange([index + 1, index + 1], preferPeriodMark)
144+
}
145+
)
130146
);
131147
} else {
132148
report(
133149
lastNode,
134-
new RuleError(`文末が"${preferPeriodMark}"で終わっていません。`, {
135-
index: index
136-
})
150+
new RuleError(
151+
`文末が"${preferPeriodMark}"で終わっていません。
152+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
153+
修正: 適切な文末表現で文を完結させ、句点を追加してください
154+
例: 「〜です${preferPeriodMark}」「〜ます${preferPeriodMark}」「〜でした${preferPeriodMark}」など`,
155+
{
156+
index: index
157+
}
158+
)
137159
);
138160
}
139161
}

test/textlint-rule-ja-no-mixed-period-test.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, {
121121
},
122122
errors: [
123123
{
124-
message: `文末が"。"で終わっていません。`,
124+
message: `文末が"。"で終わっていません。
125+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
126+
修正: 適切な文末表現で文を完結させ、句点を追加してください
127+
例: 「〜です。」「〜ます。」「〜でした。」など`,
125128
line: 1,
126129
column: 11
127130
}
@@ -136,12 +139,18 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, {
136139
},
137140
errors: [
138141
{
139-
message: `文末が"。"で終わっていません。`,
142+
message: `文末が"。"で終わっていません。
143+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
144+
修正: 適切な文末表現で文を完結させ、句点を追加してください
145+
例: 「〜です。」「〜ます。」「〜でした。」など`,
140146
line: 1,
141147
column: 11
142148
},
143149
{
144-
message: `文末が"。"で終わっていません。`,
150+
message: `文末が"。"で終わっていません。
151+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
152+
修正: 適切な文末表現で文を完結させ、句点を追加してください
153+
例: 「〜です。」「〜ます。」「〜でした。」など`,
145154
line: 3,
146155
column: 11
147156
}
@@ -179,7 +188,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, {
179188
},
180189
errors: [
181190
{
182-
message: `文末が"。"で終わっていません。`,
191+
message: `文末が"。"で終わっていません。
192+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
193+
修正: 適切な文末表現で文を完結させ、句点を追加してください
194+
例: 「〜です。」「〜ます。」「〜でした。」など`,
183195
line: 1,
184196
column: 23
185197
}
@@ -195,7 +207,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, {
195207
},
196208
errors: [
197209
{
198-
message: `文末が"."で終わっていません。`,
210+
message: `文末が"."で終わっていません。
211+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
212+
修正: 適切な文末表現で文を完結させ、句点を追加してください
213+
例: 「〜です.」「〜ます.」「〜でした.」など`,
199214
line: 1,
200215
column: 5
201216
}
@@ -206,7 +221,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, {
206221
text: "絵文字が末尾にある。😆",
207222
errors: [
208223
{
209-
message: `文末が"。"で終わっていません。`,
224+
message: `文末が"。"で終わっていません。
225+
理由: 句点は文の境界を明確にし、読み手の理解を助けます
226+
修正: 適切な文末表現で文を完結させ、句点を追加してください
227+
例: 「〜です。」「〜ます。」「〜でした。」など`,
210228
line: 1,
211229
column: 11
212230
}

0 commit comments

Comments
 (0)