# SeaBass Framework 1.0 タグライブラリ 基本仕様

このドキュメントは、SeaBass Framework 1.0 の タグライブラリ 基本仕様を説明します。
SeaBass Frameworkのタグライブラリ変換条件は以下の条件が存在します.
・${...}
括弧内の演算結果を表示します.
・@{...}
括弧内の演算結果をHTMLタグ文字変換を行って表示します.
・#{...}
括弧内の演算結果を数値表現(1000の場合、1,000に変換)で表示します.
・/* */
コメント情報
・<$...>
タグライブラリを表します.以下より詳しい説明を行います
＜タグライブラリ書式＞
<$タグライブラリ名 要素="要素内容" 要素="要素内容" ・・・> ～～～～～<$/タグライブラリ名>
通常のHTMLタグに対して、タグ開始 < の後に $ (ドルマーク)を付加すること以外は、HTMLタグと同じ既述が行えます.
また、HTMLタグとは違い、SeaBass Frameworkタグライブラリは、要素に対して、SeaBass Framework内のスクリプトが利用できます。 たとえば、msidタグライブラリは、キャッシュデータベースを利用して、テーブルIDの内容(デフォルトではnameカラム)の内容を表示させることができます。
TestMasterテーブル内容.

id | name
--- | ---
1 | テスト１
2 | テスト２

例:<$msid value="1" master=(cacheDB.TestMaster)>
結果:テスト１
このように、要素に対して、(...)で括ることでSeaBass Framework内のスクリプトを直接指定することができます.
＜#include＞
#include定義について説明します。
#include定義は、スクリプト実行前に実行されるので、利用する場合は、それを意識した上で定義を行う必要があります.
#includeは「#include」を定義した位置に対して、#include対象のファイルを読み込み、結合させます。
例として、下記のように、「ファイルA」と「ファイルB」が存在して、「ファイルA」が「ファイルB」を#include定義で結合させたい場合は、以下のような実装を行うことで、「ファイルA」内に「ファイルB」の内容をマージさせることができます。

    [Seabass実行ディレクトリ]
      |
      +--application
           |
           +--_include
           |    |
           |    +--ファイルB
           |
           +--ファイルA

このような関係の時、ファイルAでは、以下のように
＜＜ファイルA＞＞
テスト
テスト
#include "/application/_include/ファイルB"
テスト
定義されており、ファイルBでは、以下のように
＜＜ファイルB＞＞
XYZ
定義されている場合ｈ、これらを実行した場合、
＜＜結合結果＞＞
テスト
テスト
XYZ
テスト
のようになります。
＜#define定義＞
#define定義について説明します。
#define定義は、スクリプト実行前に実行されるので、利用する場合は、それを意識した上で定義を行う必要があります.
#define定義は、定義対象のキー名と定義内容を設定し、定義対象を利用する場合は定義対象のキーを設定することで、定義内容に変換します。
また、#define定義は、これらは、プログラムの定義ではなく、文字列を定義するので、定義内容がそのまま反映されることを意識した定義を行う必要があります。
定義方法と使い方については、以下のようになります。
#define (スペースorタブ) キー名 (スペースorタブ) 定義内容(改行コード)
>例
#define _TEST テスト
<a href="#">_TEST</a>
>結果
<a href="#">テスト</a>
また、#define定義は基本的に１行で定義を実行する必要がありますが、複数行に分けた方が見やすい定義などもあると思うので、この場合は、以下のように、改行前に￥コードを付加することで、１行で定義を行ったものと同じような形で定義できます。

    #define _CALC (a + b + c \
                 ) / d

    a = 1 ;
    b = 2 ;
    c = 3 ;
    d = 4 ;
    z = _CALC ;

これが展開された場合は、下記のような感じで変換されます。

    a = 1 ;
    b = 2 ;
    c = 3 ;
    d = 4 ;
    z = (a + b + c ) / d ;

また、#define定義のキーは、_ABC_DEF のように、はじめにアンダーバーで、定義文字は、英語大文字で英文の区切りにはアンダーバーを用いた定義を行うことを推奨します。