2023-02-09 textlint-rule-prhがlinkのテキストをチェックしてくれない
READMEへのtypoのPRが来たのでTextLintを導入することにした。しかし、Linkのテキスト部分のチェックができない問題に遭遇した。どうにかできるのか調べたときのメモ
先に結論
checkLink optionsが使える。READMEに書いてある
code: .textlintrc
{
"rules": {
"prh": {
"checkLink": true,
}
}
}
学べたこと
textlintのruleの作り方
調査メモ
挙動から推測するに、Link自体のチェックが無視されていると仮説をたてた。
しかし、ソースコードが読めないのでドキュメントをみる。
この例はリンクにある todoを無視したいという流れのようだ。
code: plugin.js
// Ignore the node if the node is child of some Node types
return;
}
コードを見る限り文字列のときに親にLinkがいるときに無視するような処理が入っている。
textlint-rule-prhの実装を確認する。
code: textlint-rule-prh.js
if (helper.isChildNode(node, ignoreNodeTypes)) {
return;
}
子Nodeを無視するNodeTypeが存在するようだ。
code: textLint-rule-prh.js
const ignoreNodeTypes = createIgnoreNodeTypes(options, Syntax);
optiontsで無視するルールを帰れそうな雰囲気である。
code: textlint-rule-prh.js
const createIgnoreNodeTypes = (options, Syntax) => {
const nodeTypes = [];
if (!options.checkLink) {
nodeTypes.push(Syntax.Link);
}
if (!options.checkBlockQuote) {
nodeTypes.push(Syntax.BlockQuote);
}
if (!options.checkEmphasis) {
nodeTypes.push(Syntax.Emphasis);
}
if (!options.checkHeader) {
nodeTypes.push(Syntax.Header);
}
return nodeTypes;
};
optionでLinkとBlockQueteとEmとHeaderは無視できるようだ。
code: textlint-rule-prh.js
const defaultOptions = {
checkLink: false,
checkBlockQuote: false,
checkEmphasis: false,
checkHeader: true,
/**
* Check CodeBlock text
* Default: []
*/
checkCodeComment: [],
/**
* Report parsing error for debug
*/
debug: false
};
デフォルト値があった。
というか、ドキュメントにないんだろうか。
checkLink(optional) : Check Link node type (default: false)