
4.1
今回の開発は、内部的に以下の4つの機能モジュールとしてまとめました。
・カンブリアン・レンダラー(ブラウザ)
リーフをシェールに動的にレイアウトし、リーフのグラフ構造を編集する機能。
・カンブリアン・ページプロデューサーの開発
「カンブリアン文書」のXML表現にもとづき、Webページ群を生成する機能。
・カンブリアン・ルーターの開発
HTTPでリーフを転送するためのCGI
・カンブリアン・エディターの開発
リーフを作成編集するペインター
また、これらを縦断する機能として、以下の新しい機能を新たに作成しました。
・テキストリーフ生成。テキスト表示をリアルタイムのフォント生成でなく、あらかじめ精細な画像化する方法をとった。
・XMLによる内部情報の一元化。
・スクリプト。機能単位を小さくし、それらを内部的にもスクリプトで制御した。またスクリプトは、外部から定義可能にした。
以下、スクリプト言語の説明を軸に、これらがどう実現されているかをまとめてみます。
4.2
カンブリアン・スクリプトは、それぞれのリーフが行動主体になったコマンドの羅列で、単体では複雑なことはできません。しかし、スクリプトをほかのリーフに渡していくことによって、より高次の機能を実現します。
命令は主に、行為の対象を順次限定していくコマンド群と、それらの対象に対する手続き群があります。たとえば以下のスクリプトは、自分にリンクしようとしているリーフを見つけ、それにリンクの矢印を繋ぎます。最後に、リンクしたリーフに対してこのスクリプトそのものを委譲するので、木全体を再帰的に描くことになります。
SetAll;
SelLinkToMe("pxmkeys/linkfrom");
LetLink;
live;
ChainScript(0);

リンク情報をもとに木を作るスクリプトを実行
スクリプトの主な命令には、以下のものがあります。
●対象リーフをセットするコマンド
SetAll
全リーフを選択する
SetSelf
自身だけを選択
●対象リーフをフィルタしていくコマンド
Select(XPath)
自身のXML中にあるXPathの指し示すリーフ群を通す
SelExceptSelf
自身だけを外す
SelKeyMatched(XPath,key)
対象のメタ情報にあるXpathがkeyなら通す
SelLinkToMe(XPath)
対象のメタ情報にあるXpathが自分のIDなら通す
SelContainText
自身のテキストが、相手のテキストに含まれるなら通す
SelRandom(n)
ランダムにn個、通す
SelMyBranch
リンクの矢印が自身より下流の枝にあるリーフだけ通す
SelMarked
マークされたリーフだけ通す
SelUnmarked
マークされていないリーフだけ通す
SelFree
リンクのないリーフだけ通す
●対象のソート
SortById
リーフのID(ファイル名)でソート
SortByKey(XPath)
XPathのキーで、ソート
●対象リーフに対する手続き
Mark
マークする
Unmark
マークを外す
DoLink
対象から矢印が出てくる形でリンク
LetLink
対象へ矢印が向く形でリンク
UnLink
自分のかかわるリンクを外す
Serialize
対象リーフが数珠になるようにリンク
doEmbedding(XPath)
自身のXPathにある埋め込み情報をもとに、埋め込み実施
LetEmbedding(XPath)
相手方のXPathに自身への埋め込みがあるものを、実施
●自身に対する手続き
MarkMe
自身をマーク
UnmarkMe
自身のマークを外す
duplicate
リーフの複製を生成する
EditText
テキスト情報を編集し、再レンダリングする
EditXML
メタ情報を編集する
NewText
近傍に新しいテキストリーフを作る
●環境に対する手続き
UnLinkAll
環境の全リンクを消す
Live
動的レイアウトを開始する
Pause
動的レイアウトを終了する
●スクリプトを転移させるコマンド
ChainScript(t)
選択されているリーフに、時限予約(t単位時間後)でスクリプトを渡す

魚という内容をもつテキストファイルについて、SelContainTextを実行し、魚を含む他のテキストをリンクするスクリプトを実行
|