Skip to content

Releases: 223n/node_japanese_lint_template

v3.0.0

Choose a tag to compare

@223n 223n released this 03 Oct 23:14
4d80866

ですます調の設定で、普通体の文末も拾うようにした版です。互換性のない変更を含みます。

何が変わったか

ですます調の設定(config/textlint-desumasu.js、style: 'ですます')に、規則 @223n/lint-config-ja/rules/desumasu-ending が既定で入ります(#22)。

これまでの文体の検査(no-mix-dearu-desumasu)は、「である」「だ」のような明示的な常体しか拾わず、表のセルも見ていませんでした。そのため、ですます調の文書に普通体の文末が混ざっても、検査を通っていました。

文 2.x 3.0.0
これは例である。 指摘する 指摘する
動作を確かめる。 素通りする 指摘する
表のセルの 動作を確かめる。 素通りする 指摘する

新しい規則は、本文、箇条書き、表のセルの文末を形態素解析で見て、「です」「ます」の無い文末を報告します。名詞で終わるもの(体言止め)や、引用で終わるもの、文末の注記は、報告しないか外してから見ます。自動の修正(--fix)は付けていません。

利用側への影響

ですます調の設定を読むリポジトリでは、上げると指摘が増えます。 表の値として「行う」「行わない」を並べた書き方も報告されます。

すぐに直せないときは、desumasuEnding: false で外してから、少しずつ直してください。

// .textlintrc.js
const { createTextlintConfig } = require('@223n/lint-config-ja/config/textlint-base.js')
module.exports = createTextlintConfig({ style: 'ですます', desumasuEnding: false })

書き換えられない語(表の値やラベル名など)は、規則のオプション allow に足すか、<!-- textlint-disable @223n/lint-config-ja/rules/desumasu-ending --> で止めます。詳しくは README の「普通体の文末も拾う」にあります。

である調の設定(既定)は変わりません。

依存

kuromojin と textlint-util-to-string を依存に明示しました。どちらも既に推移的に入っていた版で、入るパッケージの数は変わりません。

v2.1.1

Choose a tag to compare

@223n 223n released this 20 Sep 18:51
d101746

CodeQL の指摘に対応した修正の版です。

利用側への影響

動きは変わりません。 上げ直す必要はありません。

直したのは、lint-vocabulary が exclude の glob を正規表現に直すところです。記号をエスケープする置き換えに g が付いておらず、CodeQL が「最初の1つしか置き換えていない」(js/incomplete-sanitization、high)と指摘しました。

実際には、そこへ渡る文字は常に1文字なので、置き換えが1回でも足りていました。読み手に誤解を与える書き方を直し、なぜ1文字で足りるのかをコメントに残しています。

エスケープが効いていること自体は、exclude: ["a.b.ts"] のときに a.b.ts が除かれ aXb.ts は拾われることで確かめました。

配布物に入らない変更

この版から、リポジトリ側の守りを整えています。いずれも npm の配布物には入りません。

変更
CodeQL での走査 javascript-typescript と actions、週1回
Dependabot 本体は毎週、見本とワークフローは毎月
SECURITY.md 弱点の知らせ方と、扱う範囲
検査の起動条件 main と develop の両方で走るように
配布物の検査 npm の出力形式の変化と、辞書の欠落を捕まえるように
見本の依存 markdownlint-cli2 を上げ、GHSA-7w5x-hrqm-74c2 を外した

あわせて、リポジトリのデフォルトブランチを main から develop に変えました。

v2.1.0

Choose a tag to compare

@223n 223n released this 20 Sep 17:55
bde5e4f

VS Code 拡張「テキスト校正くん」(ics.japanese-proofreading)の校正ルールを取り込みました(#8)。

利用側に新しい警告が出ます

指摘はすべて warning です。終了コードは変わらないため、CI は落ちません。

追加したのは、語の対応表で表記ゆれと誤用を拾う7種の辞書と、康煕部首の規則です。

辞書 拾うもの
誤字 アボガド → アボカド
重言 馬から落馬 → 落馬
ひらく漢字 出来る → できる
冗長な表現 することができます → できます
外来語カタカナ表記 プリンタ → プリンター
固有名詞 東京ビックサイト → 東京ビッグサイト
技術用語 Github → GitHub

康煕部首は、見た目が同じでも別の文字である漢字(⽤ と 用)を拾います。検索に掛からない、環境によって化けるといった実害があるためです。

止め方と絞り方

// .textlintrc.js
const { createTextlintConfig } = require('@223n/lint-config-ja/config/textlint-base.js')

// 丸ごと切る
module.exports = createTextlintConfig({ proofreading: false })

// 辞書を選ぶ
module.exports = createTextlintConfig({ proofreadingDictionaries: ['誤字', '技術用語'] })

// 警告ではなく検査を止める扱いにする
module.exports = createTextlintConfig({ proofreadingSeverity: 'error' })

文書の一部だけ止めるときは、その範囲を <!-- textlint-disable prh --> と <!-- textlint-enable prh --> で囲みます。

取り込まなかったもの

テキスト校正くんの32規則のうち、次の2つは入れていません。

規則 理由
かっこ類と隣接する文字の間のスペースの有無 --fix が箇条書きの字下げを削り、構造を壊すためです
ハイフン(-) A-B-C のようなキーや識別子の書式に使うためです

残る30規則のうち25は、2.0.0 の時点ですでに有効でした。実際に足りなかったのは辞書7種と康煕部首です。

辞書について

辞書は dict/ に同梱しています。取得元は ics-creative/textlint-rule-preset-icsmedia(MIT)です。npm に公開されていないため、配布物の依存に git 参照を混ぜずに済む形を選びました。出典と更新のしかたは dict/README.md にあります。

辞書は文脈を見ないため、誤検出もあります(「そのとおりで」を「道理で」に直そうとするなど)。また textlint --fix は辞書の指摘も直すので、誤用を例として載せている箇所は、書いた時点で textlint-disable で囲んでおくのが安全です。

そのほか

  • .claude/** を検査対象から外しました(#9)。配布物には影響しません

v2.0.0

Choose a tag to compare

@223n 223n released this 11 Sep 08:42
0e28af0

textlint-rule-preset-ja-spacing の規則を、v3 の既定のまま効かせるようにしました(#5)。

利用側の検査が落ちうる変更です

1.1.0 まで切っていた次の2つが有効になります。どちらも error です。

規則 1.1.0 2.0.0
ja-space-around-code(コードスパンの前後) 切る 有効
ja-space-around-link(リンクの前後) 切る 有効
規則は `markdownlint-cli2` が読む。    ← 2.0.0 では指摘される
規則は`markdownlint-cli2`が読む。      ← 通る
詳しくは [README](README.md) を見る。  ← 2.0.0 では指摘される

見るのは、日本語の文字と接する側だけです。`i` `m` `s` `u` のように、コードスパンどうしを空白で区切って並べるのは通ります。表の中でも指摘されます。

どれも textlint --fix で直せます。

変わらないもの

  • ja-no-space-around-slash(スラッシュの前後)は、1.1.0 と同じく有効です。前後の文字を問わずスペースがあれば指摘し、表の中は見ません
  • 強調と斜体の前後は、v3.0.3 の既定どおり見ません
  • ja-no-space-around-parentheses(かっこの前後)は、箇条書きの字下げを --fix が壊すため、引き続き切っています
  • halfWidthSpacing の意味は変わりません。ただし 'always' にしても、コードスパン・リンク・スラッシュの前後は「入れない」を求めます

前の挙動に戻すには

README「規則を個別に上書きする」の手順で切れます。

// .textlintrc.js
const { createTextlintConfig } = require('@223n/lint-config-ja/config/textlint-base.js')

const config = createTextlintConfig()
config.rules['preset-ja-spacing']['ja-space-around-code'] = false
config.rules['preset-ja-spacing']['ja-space-around-link'] = false

module.exports = config

上げ方

npm install --save-dev @223n/lint-config-ja@^2.0.0

^1.0.0 のように 1.x を指定している利用側には、自動では入りません。

確認した範囲

  • npm run check: 文書の指摘・警告とも0件、語彙検査35件通過、利用見本も通過
  • bash test/install.sh: 28件通過(うち6件が新規)
  • 公開の前に、実際の tarball を入れた利用側で、規則が読み込まれることと上の挙動を確かめました

Full Changelog: v1.1.0...v2.0.0

v1.1.0

Choose a tag to compare

@223n 223n released this 08 Sep 06:53

textlint-rule-preset-ja-spacing を 2.4.3 から 3.0.3 へ更新しました。

既存の規則の挙動は変わりません

v3.0.0 の破壊的変更で ja-space-around-code と ja-space-around-link の既定が有効になりましたが、明示的に無効化して v2 と同じ挙動を保っています。

この設定の ja-space-between-half-and-full-width の但し書きは「半角の語をコードスパンに入れれば前後のスペースは通る」としており、これらの規則が無効であることを前提にしています。有効にすると、この配布物が案内している書き方そのものが違反になります(実際にこのリポジトリの docs で19件出ました)。

ja-space-around-strong は v3.0.0 で追加され v3.0.3 で既定が無効に戻された経緯があり、既定に揺れがあるため同様に固定しています。

増える指摘

ja-no-space-around-slash(v3.0.2 で追加、既定で有効)の1つだけです。スラッシュ前後のスペースを禁じます。

上記の但し書きとは競合しないため有効のままにしました。不要であれば config/textlint-base.js の spacing に次を足してください。

'ja-no-space-around-slash': false,

確認した範囲

  • npm run lint: 0件
  • npm run example: markdownlint・textlint・語彙検査すべて通過
  • preset v3.0.3 の既定値を rulesConfig から読み出して確認

Full Changelog: v1.0.1...v1.1.0

v1.0.1

Choose a tag to compare

@223n 223n released this 07 Sep 01:24

What's Changed

  • 公開済みの版は飛ばす by @223n in #2
  • 依存の警告を確かめた結果を書く by @223n in #3

Full Changelog: v1.0.0...v1.0.1

v1.0.0

Choose a tag to compare

@223n 223n released this 07 Sep 01:24
d7cdaa3

What's Changed

  • 日本語Lintの共有設定と語彙検査をテンプレート化する by @223n in #1

Full Changelog: https://github.com/223n/node_japanese_lint_template/commits/v1.0.0