textlintのruleプラグインで見出しのレベルが適切かチェック

matsu-chara/textlint-rule-incremental-headers · GitHub

www.npmjs.com

文章を書く時に見出しに関するルールを決めたので、自動で検査するためのツールを作りました。 ルール自体の実装は簡単だったんですが、

という罠(というか仕様を理解してなくて勝手に)にハマりました(´・_・`)

ルールは以下の3つです。

  • ページの始まりの見出しは#(h1)から始まる。
  • ページの始まりの見出し以外で#(h1)を使ってはいけない
  • 見出しの深さ(h1, h2, h3など)は必ず1つずつ増加する。(h1, h3のように急に深くならない)

以下はルールの例です。(全て別の.mdファイルだと思ってください)

例1:

# ページの先頭の見出しはh1から始まります。

例2:

注意書きを先頭に書くこともあるので
# 見出し以外であれば、ページの先頭に書くことが出来ます。

例3:

## いきなりh2から初めては
### いけません。

例4:

# 見出しの深さは
## 1つずつ増えます。

例5:

# このようにh1から
### 突然h3になってはいけません

例6:

# このように
## 順番に深さを増やしたり
### 並列に同じ深さの
### 見出しを並べたり
# 浅い見出しに戻るのは構いません。

例7:

# このように先頭以外で
# h1を使ってはいけません

だいたい同じようなルールが wooorm/mdast-lint · GitHub にあるので、textlintで完結してなくても良い!って人はそっちを使っても良さそうです