RD2XML for MocaScript

Name

RD2XML for MocaScript - convert rd files to XML

Abstract

主にRubyで使われるドキュメント形式であるRD形式を、 XMLに変換するMocaScriptLibraryです。 一般には、これで生成したXMLをXSLTでHTMLに変換して使うことになります。

Description

RDの存在を知って、いろいろ遊んでみようと思ったのですが、 RDtoolはRubyが必要な上に、外部依存のライブラリを集めるだけで一苦労、 Windowsで動かすためにコンパイル済みのライブラリを探すのでへとへと、 とあまりに大変だったので、あきらめかけました。 そんなこんなで逆に開き直って、自分でRD解析機を作ることにしたのです。

どの言語で作ろうか、少し迷ったのですが、 ここはせっかくなのでMocaScriptで作ることにしました。 MocaScriptで作っておけば、JavaScriptに移植するのも楽ですし、 JavaScriptで動けば、近頃のOSにはたいていブラウザが存在し、JavaScriptが動くので、 まさに“Write Once, Run Anywhere”です。(違

これはRDtoolのように、単体でRDから任意の形式に変換することを目指さず、 一度中間形式としてのXMLに変換して、その後XSLTで任意の形式に変換することにしました。 このため、別の形式に変換したくなったとしても、 このスクリプトのソースを細部まで読まなくてもよく、 XSLTだけを書けばよいのです。

本スクリプトは「RDtoolのMocaScript版」ではなく、 RD working draft 日本語版を参考に、RD解析・表現を独自に実装しているため、 RD処理機の事実上の標準であるRDtoolとは、解釈が異なる場合があります。

これがどのように働くのかわかりにくいときは、 このライブラリ自体の解説もRDで書かれているので、 まずこのファイルを変換してみるとわかりやすいでしょう。

Synopsis

rd2xml.ms:Dialog
ダイアログを表示し、そこで指定したRDファイルを読み込み、 アウトプットウィンドウのスクリプトタブにXMLへの変換結果を書き出すと同時に、 指定したXMLファイルに書き出します。 XMLファイルの指定を省略すると、ファイルへの書き込みは行いません。
rd2xml:Files

ただ実行しても「ファイルが指定されていません」とエラーが出ます。 global.array_of_rd2xml_filesに二次元arrayをあらかじめセットしておいた上で、 他のMocaScriptからrunScript("rd2xml:Files")と呼び出して使います。

global.array_of_rd2xml_files=[
  ['C:/rd/rdtest.rd','C:/xml/rdtest.xml'],
  ['C:/Program Files/Anchor/share/script/rd2xml.ms','C:/xml/rd2xml.xml'
    ,'C:/xml/readme.xsl','C:/xml/rd2xml.html']
];

runScript("rd2xml.ms:Files");
rd2xml.ms:View
現在編集中のウィンドウの内容をRDとみなして、XMLに変換した結果を、 アウトプットウィンドウのスクリプトタブに表示します。
#include "rd2xml.ms"
MocaScriptLibraryとしても使えます。 ただし、呼び出し元のスクリプトのファイル名がrd2xml.msだと誤動作します。

Bugs and Limitations

脚注が処理できない
実装する必要があるかどうか、どうやって実装するか、迷ってます。
コードが汚い
解析にInterpreterパターンを使い、XML書き出しをMSXML ParserをcreateObjectで呼び出して行う、 ということも夢見たのですが、現時点ではどちらも良くわからなかったので、こうなってしまいました。 コードの綺麗さよりもとりあえず動くものが欲しかったもので。。。 将来的に書き直したいとは思っているのですが。
RDtoolと変換結果が異なる
仕様です。
ファイル名をrd2xml.ms以外にすると動作しない
仕様です。
ファイルに書き出すときのエンコードがShift_JIS固定
仕様です。

See also

RD working draft 日本語版
≪http://www.ruby-lang.org/~rubikitch/RDP.cgi?cmd=view;name=RD≫
Ruby Documentation Project
≪http://www.ruby-lang.org/~rubikitch/RDP.cgi?cmd=view;name=top≫
RD事始め
≪http://www.ruby-lang.org/~rubikitch/computer/rd-intro/≫
CGI版RDコンバータ
≪http://www.ruby-lang.org/~rubikitch/makerd.html≫
RDtool
≪http://www2.pos.to/~tosh/ruby/rdtool/ja/≫

License

一切を放棄し、PublicDomainとします。 このソースの一部または全部を利用しても、著作権表示をする必要はありませんし、 派生物のソースを公開する義務もありません。 このスクリプトを綺麗に書き直して下さった場合、公開してくださると助かりますが、 これもやはり義務ではありません。

ちなみに、RDtoolのソースは一切見ていません。 参考にしたのは、RD working draft 日本語版と、RD事始めの紹介の部分です。 CGI版RDコンバータのソースは見ていません。 言語規格に著作権は無いはずなので、このスクリプトの著作権は成瀬のみに属していました。

History

Revision: 1.4 (2003-05-26)
Revision: 1.3 (2003-05-23)
Revision: 1.2 (2003-03-22)
Revision: 1.2 (2003-01-23)
initial Release

Author

成瀬ゆい ≪mailto:naruse@airemix.com≫

Copyright

Copyright (c) 2001-2003 Airemix. No rights reserved.