css (0.8.1) | 2012-02-27 14:32 |
html (0.9.13) | 2012-02-27 14:29 |
blingbling HTMLは、JavaScript向けのHTML規格です。blingbling DSLシリーズのひとつで、HTMLでできることの大部分を実現できる他、PHPスタイルの埋め込み式や、拡張タグを使ったマークアップにも対応しています。
blingbling HTMLには次のような機能・特徴があります。シリーズを通しての特徴はblingbling DSLを参照下さい。
blingbling HTMLは、HTMLさながらに開始タグ、内容、終了タグを使って記述します。HTMLとの文法上の違いは、タグの記述に山括弧ではなく丸括弧を、属性の記述に角括弧を用いることぐらいで、HTML同様に見やすくインデントすることもできます。ただし、エクステンション(プラグイン拡張)により文法そのものが拡張されている場合はこの限りではありません。以下に、いくつかのサンプルコードを示します。
ドキュメントの始まりのHTMLタグでそれがblingbling HTMLで記述されていることを示し、その中に内容を追加していきます。タグの終了は基本的に空タグで表現します。HTMLはインタプリタが提供するグローバル変数 です。
このコードは以下のJavaScriptコードと等価です。
タグの頭に"="をつければ、そのタグをテキストとして解釈します。
"BR"タグを使うと文章がそこで改行されます。BRをはじめ、LINK、IMGなどの子を持たない要素は終了タグが不要です。
"("と")"で囲まれた部分はJavaScriptとして認識されます。グローバルはもちろんスコープ内のすべての変数にアクセスできるので、名前空間を汚染する心配もありません。
blingbling HTMLの出力はDOMNodeListです。ブラウザへ画面結果を出力するためには、DOM APIやjQueryなどのフレームワークを利用し、以下のように記述します。※DOM Documentのロードが完了している事が前提です
DOMを使った例 :
jQueryを使った例 :
blingbling HTMLのインタプリタは、そのほとんどの機能(例えばここまでで紹介した文法の全てもそう)が標準ライブラリ添付のエクステンションとして実装されているので、ディベロッパはこれを追加したり差し替えたりするだけで、自分で開発した要素や独自構文が使用できるようになります。この項では2つのエクステンションを例に、拡張の使い方や実装例を示します。
例 1 : Comment Extension
blingbling HTMLにはいくつかの公認エクステンションがあります。そのひとつ「Comment」は次のような拡張構文を提供します。
Commentは、コードの頭が"!"で始まっている場合にそのコードをコメントノードとして解釈するエクステンションです。これは次のように実装されています。
Commentはインタプリタにビルドするタイプのエクステンションです。ビルドは、jsLexなどのツールを使って次のような手順で行います。
エクステンションは相互に依存しているものもあれば、競合しているものもあるので、正しい順番でそれらをビルドしなければなりません。blingbling HTMLには、限定的ではあるものの、こうしたビルド作業を軽減するための拡張構文も用意されています。
例 2 : DTD Extension
以下のコードは標準ライブラリ添付の「DTD」エクステンションが提供する拡張構文を用いたFUGAレンダラーの実装例です。
DTDは、新しい要素や属性を登録するためのエクステンションです。新しく登録された要素(この場合はFUGA)は一般的な要素と同じように扱うことができます。
DTDで実装されたエクステンション(レンダラー)は、インタプリタの後に<SCRIPT>から読込むだけで使用できます。