Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement: add / fix turndown rules, improve CLI #43

Merged
merged 5 commits into from
Jul 28, 2022
Merged

Enhancement: add / fix turndown rules, improve CLI #43

merged 5 commits into from
Jul 28, 2022

Conversation

t-hamano
Copy link
Contributor

@t-hamano t-hamano commented Jul 25, 2022

はじめまして。
現在コアコントリビューターハンドブックの日本語化を進めており、こちらのライブラリを使わせていいただいています。

主に、より正確にパース出来るようにするために、以下の変更を加えさせていただきました。

  • 一部 glossary が除去出来ていなかった点を修正
  • dt タグを srong タグに変換(dtタグはマークダウンでは使えないため、strongタグで代用する)
  • コードブロックをマークダウンに変換する
  • CLIの引数 team を 必須から任意に変更(ここが必須だと、正しいエンドポイントを指定出来ないハンドブックが存在したため)

一度に多くの変更を加えてしまい申し訳ないのですが、ご確認いただけると幸いです。

- `-b, --handbook` <handbook> Specify handbook name. (Default "handbook")
- `-s, --sub-domain` <sub-domain> Specify subdomain name. e.g. "developer" for developer.w.org, "w.org" for w.org (Default "make")
- `-o, --output-dir` <output-dir> Specify the directory to save files (default `en/`)
- `-r, --regenerate` <regenerate> If this option is supplied, the directory you specified as output directory will once deleted, and it will regenerate all the files in the directory

### Example
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いくつかのハンドブックのエンドポイントが変わった?せいか、Exampleのコマンドでは取得出来ないものがあったため、修正に加え、コマンド例も追加しました。

cli.js Outdated
.option(
'-t, --team <team>',
'Specify team name'
)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

現状のテーマハンドブックやプラグインは、team を未指定にしないと正しいURLが生成出来ないのですが、'' と空文字を指定してもCLIでエラーになったため、任意オプションに変更いたしました。

cli.js Outdated
const turndown = require('turndown')
const turndownService = new turndown({
const TurndownService = require('turndown')
const {tables} = require('turndown-plugin-gfm')
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

turndownコアにはtableタグをパースする機能はないため、こちらのコメントにある通り、別のライブラリを導入しました。

turndownService.use(tables);

// Remove Glossary
turndownService.addRule('glossary', {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

glossasy の除去を、文字列置換ではなく turndown の addRule に置き換えた所、正しく除去できるようになりました。

});

// Remove code trigger anchor
turndownService.addRule('code-trigger-anchor', {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コードブロックを開閉するための#リンク(Expand full source code / Collapse full source code)を除去します。

});

// Transform pre code block to code markdown
turndownService.addRule('precode to code', {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このルールが一番ややこしいと思うのですが、以下のロジックで処理しています。

  • filter でコードブロックを検出(preタグで、必ずbrush: というクラス名が含まれている)
  • クラス名に含まれているコード言語を検出(```の後に付与するため)
  • _* などの文字がエスケープされるので、アンエスケープする
  • 不要なpタグやbrタグが入ってくる事があるので、除去する

Copy link
Owner

@mirucon mirucon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR ありがとうございます!
内容に大枠問題なさそうですが細かいところのみコメントしたのでご対応いただけると嬉しいです
難しそうな場合こちらでやっちゃうのでお声がけください

cli.js Outdated Show resolved Hide resolved
cli.js Show resolved Hide resolved
cli.js Outdated Show resolved Hide resolved
cli.js Outdated
turndownService.addRule('glossary', {
filter: node => {
const classList = node.getAttribute('class');
if ( classList ) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarn lint:fix で Prettier をかけていただけるとありがたいです

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

f2fa42e にて対応いたしました。

t-hamano and others added 4 commits July 28, 2022 19:21
Co-authored-by: Toshihiro Kanai <i@miruc.co>
Co-authored-by: Toshihiro Kanai <i@miruc.co>
@t-hamano
Copy link
Contributor Author

ご確認いただきありがとううございます!
Suggestの部分はそのままcommitし、その他の点も対応いたしました。

Copy link
Owner

@mirucon mirucon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご対応ありがとうございました!

@mirucon mirucon merged commit 4ead1f8 into mirucon:main Jul 28, 2022
@t-hamano
Copy link
Contributor Author

こちらこそありがとうございました 😊

@t-hamano t-hamano deleted the update/improve-turndown branch July 28, 2022 10:39
@mirucon
Copy link
Owner

mirucon commented Jul 28, 2022

@t-hamano こちらの対応を取り込んだバージョン v1.0.0 を npm にリリースしました!

@t-hamano
Copy link
Contributor Author

ありがとうございます!
さっそく使わせていただきます😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants