注意
GitBook version 3.2.2で修正されているようなので、この記事は無視してください
gitbook-plugin-markdown-parse-add-br
をご利用の皆様は直ちにgitbookのバージョンを上げ、package.json
およびbook.json
からこのパッケージを除去してください。
背景
http://blog.kengo-toda.jp/entry/2015/03/29/124356
文中の改行が空白に変換されてしまうため、段落をすべて1行で書ききる必要があります。
どういうわけか、GitBookのMarkdown parserは段落内改行、つまりスペース2つでの改行をさせてくれません。これは困ります。
gitbook-plugin-japanese-support
という改行を強制除去することで空白挿入を回避するプラグインもありますが、このプラグインはコードブロック内まで改行除去してくるので、問題になることがあります。
作ったもの
https://github.com/yumetodo/gitbook-plugin-markdown-parse-add-br/tree/master
https://www.npmjs.com/package/gitbook-plugin-markdown-parse-add-br
写真は昔読んでた某二次創作サイトの小説をとりあえずGitBookに変換してみたもの。
ようは行末のスペース2つを<br>
に置き換えればいいわけです。が、先程も言ったようにコードブロック内は無視してくれないと困るので、正規表現での置換ができず、String.prototype.indexOf
をforで回すとかいう荒業を使っています。
{
"devDependencies": {
"gitbook-cli": "^2.1.2",
"gitbook-plugin-markdown-parse-add-br": "^1.0.3",
}
}
{
"gitbook": ">=3.0.0",
"plugins": [
"markdown-parse-add-br"
]
}
こんな感じで書き足せば使えます。
苦労したこと
- 普段C++erなもんで、まずはC++で置換コード書いたんだけど、どうやってJavaScriptに移植しようかで5時間くらい悩んだ。あってよかった、
String.prototype.indexOf
と~~String.prototype.substr
~~(追記:String.prototype.substr
はAnnex BだからString.prototype.substring
を使うべきらしい) - npmのパッケージ作るのなんて初めてだから結構試行錯誤した。
初めてのnpm パッケージ公開
に感謝 -
package.json
のengine
にgitbookを書かないとエラーになることに気がつくのに時間かかった。