From c4d17ce0e0fcc606c7a483f80cd90af87da91eb2 Mon Sep 17 00:00:00 2001 From: azu Date: Fri, 12 Sep 2025 21:19:05 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=AE=E6=94=B9?= =?UTF-8?q?=E5=96=84=E3=81=A8README=E3=81=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - エラーメッセージに理由・修正方法・例を追加 - READMEに句点の重要性と詳細な修正例を追加 - テストケースを新しいメッセージ形式に対応 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 71 +++++++++++++++++++ src/textlint-rule-ja-no-mixed-period.ts | 52 ++++++++++---- test/textlint-rule-ja-no-mixed-period-test.ts | 30 ++++++-- 3 files changed, 132 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index b165e47..34129de 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,77 @@ english only 絵文字が末尾にある。😆 ``` +## なぜ句点「。」が必要なのか + +日本語の文章では、文末に句点「。」をつけることで: +- **文の区切りが明確になる**: 読み手が文の終わりを認識しやすい +- **読みやすさが向上**: 文章構造が明確になり理解しやすい +- **誤読を防ぐ**: 文と文の境界がはっきりし、意味の取り違えを防ぐ + +このルールは、文末の句点の統一性をチェックし、読みやすい文章作成を支援します。 + +## エラーメッセージと修正方法 + +### 句点の付け忘れ + +**エラーメッセージ:** +``` +文末が"。"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です。」「〜ます。」「〜でした。」など +``` + +**修正例:** +``` +❌ これは問題ありません +✅ これは問題ありません。 + +❌ 説明を追加しました +✅ 説明を追加しました。 +``` + +### 末尾の不要なスペース + +**エラーメッセージ:** +``` +文末が"。"で終わっていません。 +理由: 末尾の不要な空白が句点の代わりになっていません +修正: 空白を削除してください +``` + +**修正例:** +``` +❌ 文末に空白がある。 +✅ 文末に空白がある。 +``` + +### ピリオドの使用 + +**エラーメッセージ:** +``` +文末が"。"で終わっていません。 +理由: 日本語文章では"。"を使用します +修正: "."を"。"に置き換えてください +``` + +**修正例:** +``` +❌ これはピリオドで終わっています. +✅ これはピリオドで終わっています。 +``` + +### 自動修正 + +`--fix` オプションで以下が自動修正されます: +- 末尾の空白削除 +- ピリオドから句点への変換(`.` → `。`) +- 句点の追加(`forceAppendPeriod: true` 設定時) + +```bash +textlint --fix --rule ja-no-mixed-period README.md +``` + ## Options - `periodMark`: `string`: diff --git a/src/textlint-rule-ja-no-mixed-period.ts b/src/textlint-rule-ja-no-mixed-period.ts index 3c43135..6facf8d 100644 --- a/src/textlint-rule-ja-no-mixed-period.ts +++ b/src/textlint-rule-ja-no-mixed-period.ts @@ -100,10 +100,15 @@ const reporter: TextlintRuleReporter = (context, options = {}) => { if (/\s/.test(periodMark)) { report( lastNode, - new RuleError(`文末が"${preferPeriodMark}"で終わっていません。末尾に不要なスペースがあります。`, { - index, - fix: fixer.replaceTextRange([index, index + periodMark.length], "") - }) + new RuleError( + `文末が"${preferPeriodMark}"で終わっていません。 +理由: 末尾の不要な空白が句点の代わりになっていません +修正: 空白を削除してください`, + { + index, + fix: fixer.replaceTextRange([index, index + periodMark.length], "") + } + ) ); return; } @@ -112,10 +117,15 @@ const reporter: TextlintRuleReporter = (context, options = {}) => { if (classicPeriodMarkPattern.test(periodMark)) { report( lastNode, - new RuleError(`文末が"${preferPeriodMark}"で終わっていません。`, { - index: index, - fix: fixer.replaceTextRange([index, index + preferPeriodMark.length], preferPeriodMark) - }) + new RuleError( + `文末が"${preferPeriodMark}"で終わっていません。 +理由: 日本語文章では"${preferPeriodMark}"を使用します +修正: "${periodMark}"を"${preferPeriodMark}"に置き換えてください`, + { + index: index, + fix: fixer.replaceTextRange([index, index + preferPeriodMark.length], preferPeriodMark) + } + ) ); } else { // 句点を忘れているパターン @@ -123,17 +133,29 @@ const reporter: TextlintRuleReporter = (context, options = {}) => { // `forceAppendPeriod`のオプションがtrueならば、自動で句点を追加する。 report( lastNode, - new RuleError(`文末が"${preferPeriodMark}"で終わっていません。`, { - index: index, - fix: fixer.replaceTextRange([index + 1, index + 1], preferPeriodMark) - }) + new RuleError( + `文末が"${preferPeriodMark}"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です${preferPeriodMark}」「〜ます${preferPeriodMark}」「〜でした${preferPeriodMark}」など`, + { + index: index, + fix: fixer.replaceTextRange([index + 1, index + 1], preferPeriodMark) + } + ) ); } else { report( lastNode, - new RuleError(`文末が"${preferPeriodMark}"で終わっていません。`, { - index: index - }) + new RuleError( + `文末が"${preferPeriodMark}"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です${preferPeriodMark}」「〜ます${preferPeriodMark}」「〜でした${preferPeriodMark}」など`, + { + index: index + } + ) ); } } diff --git a/test/textlint-rule-ja-no-mixed-period-test.ts b/test/textlint-rule-ja-no-mixed-period-test.ts index 0e399a1..dd98f9c 100644 --- a/test/textlint-rule-ja-no-mixed-period-test.ts +++ b/test/textlint-rule-ja-no-mixed-period-test.ts @@ -121,7 +121,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, { }, errors: [ { - message: `文末が"。"で終わっていません。`, + message: `文末が"。"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です。」「〜ます。」「〜でした。」など`, line: 1, column: 11 } @@ -136,12 +139,18 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, { }, errors: [ { - message: `文末が"。"で終わっていません。`, + message: `文末が"。"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です。」「〜ます。」「〜でした。」など`, line: 1, column: 11 }, { - message: `文末が"。"で終わっていません。`, + message: `文末が"。"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です。」「〜ます。」「〜でした。」など`, line: 3, column: 11 } @@ -179,7 +188,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, { }, errors: [ { - message: `文末が"。"で終わっていません。`, + message: `文末が"。"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です。」「〜ます。」「〜でした。」など`, line: 1, column: 23 } @@ -195,7 +207,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, { }, errors: [ { - message: `文末が"."で終わっていません。`, + message: `文末が"."で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です.」「〜ます.」「〜でした.」など`, line: 1, column: 5 } @@ -206,7 +221,10 @@ tester.run("textlint-rule-ja-no-mixed-period", rule, { text: "絵文字が末尾にある。😆", errors: [ { - message: `文末が"。"で終わっていません。`, + message: `文末が"。"で終わっていません。 +理由: 句点は文の境界を明確にし、読み手の理解を助けます +修正: 適切な文末表現で文を完結させ、句点を追加してください +例: 「〜です。」「〜ます。」「〜でした。」など`, line: 1, column: 11 } From 5b13688989fc4fc089617832da05c063f35e4f69 Mon Sep 17 00:00:00 2001 From: azu Date: Fri, 12 Sep 2025 22:53:38 +0900 Subject: [PATCH 2/2] fix(ci): add permissions to test job for zizmor security audit - Add explicit 'contents: read' permission to test job - Fixes excessive-permissions warning from zizmor security audit --- .github/workflows/test.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b35a187..c274cbe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,14 +4,18 @@ jobs: test: name: "Test on Node.js ${{ matrix.node-version }}" runs-on: ubuntu-latest + permissions: + contents: read strategy: matrix: node-version: [ 16, 18 ] steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0 + with: + persist-credentials: false - name: setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@7c12f8017d5436eb855f1ed4399f037a36fbd9e8 # v2.5.2 with: node-version: ${{ matrix.node-version }} - name: Install