npmにでんでんコンバーターのルビ変換があるなら、node.jsにすればいいじゃないと思いついて迷走中。
node.jsの本は何冊か読んでいたのだけれど、chromeで動かすjavascriptとの違いに困惑している。同じV8ではないか、わかるはずだろ思ったがなんか違う気がする。
- jszip.min.js
- FileSaver.js
- uuid.js
- vkbeautify.js
ライブラリとして前はこれらを使ってたがnode.jsだとxmlの生成はもっとましなライブラリがあるかも。テンプレートエンジンを使ったほうが楽できるかもしれない。などといろいろ考えた。さくっと作ったほうが早い気がする。
今までだと、XHTMLテンプレートをDOMパーサーでパースしてから書き換えて、シリアライズしていたが。テンプレートエンジンで、XMLに出力するほうが早いかもしれない。
でんでんコンバーターのルビ変換ライブラリをインストールする
npm install markdown-it --save
npm install markdown-it-ruby --save
npm install ejs
これ、マークダウンパーサーを書き換えるためには、こまごまと追加しないといけないパターンかな。
var md = require('markdown-it')()
var md = require('markdown-it')()
.use(require('markdown-it-ruby'));
var origin = fs.readFileSync(__dirname + '/kurofune/kurofune/kurofunezengo.txt', 'utf-8');
var pagetemplete = fs.readFileSync(__dirname + '/ejs/page.ejs', 'utf-8');
var markFO=[]; markFO = origin.split(/^={3,}$/gm);
var result = md.render(markFO[1])
var data =ejs.render(pagetemplete,{ title: "title" , body: result })
page.ejs
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="ja" lang="ja">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
<title><%= title %></title>
</head>
<body class="bodymatter" epub:type="bodymatter">
<%- body %>
</body>
</html>
黒船読み込んで、マークダウンパーサーでhtmlに変換してejsテンプレートから、page.htmlを生成までをやった。
jszipがnode.jsで動かないのかなと思ったが、下のページにnode.jsでのファイル生成の仕方があったので使ってみた。
How to write a file / give it to the user
var JSZip = require("jszip");
var zip = new JSZip();
zip.file("mimetype", "application/epub+zip");
var meta = zip.folder("META-INF");
meta.file("container.xml", containerXML);
var item = zip.folder("OEBPS");
zip
.generateNodeStream({type:'nodebuffer',streamFiles:true})
.pipe(fs.createWriteStream('out.zip'))
.on('finish', function () {
// JSZip generates a readable stream with a "end" event,
// but is piped here in a writable stream which emits a "finish" event.
console.log("out.zip written.");
});
こうやるだけで、EPUBのフォルダー構造が作成できたので、簡単な気がする。
github.com
github.com
github.com
node.jsの勉強と思ってこの本やってみたんだけで、いきなり文字化けしてしまったのでよくわからない。はじめは文字コードがshift-jisだったのがいけなかったのかなと思って、utf-8にしたのいまだに文字化けしておるは。
github.com
ほかのnode.jsでどうやってEPUBに圧縮しているのかを調べると。epub-genでachiverjsを使っておった。テンプレートエンジンでXML生成したり編集しているようだ。
github.com