KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

turndownを改造してHTMLを青空文庫形式に変換するツールを作れないか試してみた。

 turndownを改造してHTMLを青空文庫形式に変換するツールを作れないか試している。HTMLからマークダウンへの変換するツールはいくつかある、それならば、少し手を加えるだけで青空文庫形式に変換できるのでは。

turndown github.com

turndownのコードを見ると、domパーサーとmarkdownに変換部分が分離されているようなので、markdown変換部分を置き換えるだけでよさそう。

forkしてみるとテスト環境がそろっているのでテストがしやすそうだった。 クローンしたフォルダーで npm install npm i domino npm test を実行すると、ビルドされてdistフォルダーにウェブ用のjsが作られるようだ。 index.htmlを実行すると動作テストができるが、読み込先をdistフォルダーに変更した

<script src="https://unpkg.com/turndown/dist/turndown.js"></script>

<script src="./dist/turndown.js"></script>

マークダウンの変換はsrc/commonmark-rulesで行っているので、commonmark-rulesを書き換えてからnpm testを実行すると全体をビルドされるようだ。ビルドに時間がかかるので、lib/turndown.cjs.jsを直接書き換えて実行しつつ、たまにビルドして確認するのが早そうだ。

var TurndownService = require('./lib/turndown.cjs.js')

github.com

設定はオブジェクトを渡す

var TurndownService = require('./lib/turndown.cjs.js')
option={
    "headingStyle": "atx",
    "hr": "* * *",
    "bulletListMarker": "*",
    "codeBlockStyle": "fenced",
    "fence": "```",
    "emDelimiter": "_",
    "strongDelimiter": "**",
    "linkStyle": "inlined",
    "linkReferenceStyle": "full"
}
var turndownService = new TurndownService(option)
var markdown = turndownService.turndown('<h1>Hello world!</h1><h2>Hello world!</h2><h3>Hello world!</h3>')
console.log(markdown)