Closed sounisi5011 closed 4 years ago
とりあえずHTMLのルビ用インラインマクロは設計できた。
// ext-ruby.js
module.exports = registry => {
registry.inlineMacro('ruby', function() {
this.positionalAttributes(['rb', 'rpStart', 'rpEnd']);
this.process((_, target, {rb, rpStart = '', rpEnd = ''}) => {
if (!rb) return target;
if (!rpStart && !rpEnd) {
rpStart = '(';
rpEnd = ')';
}
return `<ruby>${target}<rp>${rpStart}</rp><rt>${rb}</rt><rp>${rpEnd}</rp></ruby>`;
});
});
};
// build.js
const asciidoctor = require('asciidoctor')();
const registry = asciidoctor.Extensions.create();
require('./ext-ruby')(registry);
const doc = asciidoctor.loadFile('example.adoc', {
safe: 'safe',
extension_registry: registry,
});
const htmlText = doc.convert();
// example.adoc
これが俺の技っ!ruby:阿鼻叫喚[パンデモニウム]ッ!!!
君はruby:我々[脳内声, ─]と話せる。
後ろruby:括弧[かっこ, rpEnd=;]のみのルビ?意味あんの??
青空文庫形式のルビ:ruby:日本語[にほんご, 《, 》]
ruby:ルビの中で**太字**は機能するのか[るびのなかで**ふとじ**はきのうするのか]?
ruby:このルビは**無効じゃ**っ[]!!!
ruby:ここまで来たらもはやマクロですら無い。
<p>これが俺の技っ!<ruby>阿鼻叫喚<rp>(</rp><rt>パンデモニウム</rt><rp>)</rp></ruby>ッ!!!</p>
<p>君は<ruby>我々<rp>─</rp><rt>脳内声</rt><rp></rp></ruby>と話せる。</p>
<p>後ろ<ruby>括弧<rp></rp><rt>かっこ</rt><rp>;</rp></ruby>のみのルビ?意味あんの??</p>
<p>青空文庫形式のルビ:<ruby>日本語<rp>《</rp><rt>にほんご</rt><rp>》</rp></ruby></p>
<p><ruby>ルビの中で<strong>太字</strong>は機能するのか<rp>(</rp><rt>るびのなかで<strong>ふとじ</strong>はきのうするのか</rt><rp>)</rp></ruby>?</p>
<p>このルビは<strong>無効じゃ</strong>っ!!!</p>
<p>ruby:ここまで来たらもはやマクロですら無い。</p>
参考文献:
Pugファイルを直接編集している現状から、AsciiDocによるページ内容の定義を提案したい。 AsciiDocは、特に、小説やキャラクターシートのような共通性のあるファイル群で有効だと思われる。
使用ライブラリ
導入に必要な作業