SlideShare a Scribd company logo
1 of 14
Download to read offline
NoraMark
新Transformer
小嶋智
@skoji
2014年2月13日 第二回パーサー勉強会
NoraMark
• EPUB制作(主に雑誌的な)で困って作った
• プレーンテキスト + α
• kpeg使っています
• マークアップ結果の出力をカスタマイズできる
実例
特徴
• パターン化された文法: 原則として以下の3つ
• ブロック構文
• 一行構文
• インライン構文
• このほかに、Markdownぽいものがいくつか。
パターン
「コマンド部分」は共通
command-name#id.class(parameter)[named: parameter]
パースすれば単なるツリーになる
木の変形
• ソーステキストをパースしてASTを作る
• ASTを変換してXHTMLにほぼ対応する木を作る
• 出力する
• 「XHTMLに対応する木を作る」部分にプラグイン
を差し込める
• 特定の条件を満たすノードを、専用のルールで
XHTMLに変形するルールを書く
• Transformerと呼んでいます
課題
• APIがださい
• マークアップのカスタマイズ(変形ルール)をRuby
で書かないといけない
• JavaScriptにポート中のNoraMarkには
Tranformerを流用できない
解決案
• 変形ルールもNoraMarkの文法で書く
• XSLTからの連想
@@transformer {
@replace(speak) {
div {
[span.speaker{[@parameters(0)]}] [@content]
}
}
}@@
speak(Alice): Alice is speaking.
speak(Bob): and this is Bob.
実装中
• 実装はできそう
• 文法に悩んでいます
• というか筋悪くない? 大丈夫?

More Related Content

Similar to Nora mark 2014-02-13

Designing data intensive applications-ch4
Designing data intensive applications-ch4Designing data intensive applications-ch4
Designing data intensive applications-ch4Motohiro Kanda
 
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...広樹 本間
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用Tetsu Yama
 

Similar to Nora mark 2014-02-13 (6)

Designing data intensive applications-ch4
Designing data intensive applications-ch4Designing data intensive applications-ch4
Designing data intensive applications-ch4
 
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
read parse-css
read parse-cssread parse-css
read parse-css
 
20150513 legobease
20150513 legobease20150513 legobease
20150513 legobease
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用
 

Nora mark 2014-02-13