<@> <@> Application <@> Introduction

Introduction

Satuki sysytemを使う上での基本的な構文等です

タグ

<@...> あるいは <$...> がSatsuki systemのタグとして認識されます.

@$の違い

ともにSatsuki systemが評価することに代わりはありませんが,@は評価した結果が出力され,$は評価した結果が出力されません. 単にメソッドを呼びたいだけ,変数に値を代入するときなどは$を使うようにします.
ソース
変数xに値を代入 [<@x=100>]<br> <@> 代入した結果を出力する
変数yに値を代入 [<$y=200>]<br> <@> 代入した結果を出力しない
x = <@x><br>
y = <@y><br>
<@ifexec(1, begin)>
    ここは表示される
<$end>
<$ifexec(1, begin)>
    ここは表示されない
<$end>
実行結果
変数xに値を代入 [<@x=100>]
<@> 代入した結果を出力する 変数yに値を代入 [<$y=200>]
<@> 代入した結果を出力しない. x = <@x>
y = <@y>
<@ifexec(1, begin)> ここは表示される <$end> <$ifexec(1, begin)> ここは表示されない <$end>

コメント

<@>以降はコメント扱いになります.
ソース
↓<br>
<@> この部分はコメントになる<br>
↑<br>
行の途中であっても <@> この部分はコメントになります<br>
実行例

<@> この部分はコメントになる

行の途中であっても <@> この部分はコメントになります

基本構文

変数への値の代入

変数に値を入れます.値の代入は = で行います.

ソース
<$x = 100><$y = 200>
x = <@x>, y = <@y>
実行例
<$x = 100><$y = 200> x = <@x>, y = <@y>

配列

配列を作成するときに利用します.値は#を利用することで取り出すことができます.

ソース
<$a = array(100, 200)>
<@a#0>, <@a#1>
実行例
<$a = array(100, 200)> <@a#0>, <@a#1>

連想配列(ハッシュ)

連想配列(ハッシュ)を作成するときに利用します.値は.を利用することで取り出すことができます.

ソース
<$h = begin_hash>
    x = 100
    y = 200
<$end>
<@h.x>, <@h.y>
実行例
<$h = begin_hash> x = 100 y = 200 <$end> <@h.x>, <@h.y>

分岐

if

処理を分岐させるときに利用します.

ソース
absolute(<@x=-10>) = <@if(x<0, -1*x, x)><br>

<@if(Now.mon == 1 && Now.day == 1, "あけましておめでとう<br>")>
<@if(Now.hour < 12, "AM", "PM")> <@Now.hour>:<@Now.min><br>
実行例
absolute(<@x=-10>) = <@if(x < 0, -1*x, x)>
<@if(Now.mon == 1 && Now.day == 1, "あけましておめでとう
")> <@if(Now.hour < 12, "AM", "PM")> <@Now.hour>:<@Now.min>

ifexec

処理を分岐させるときに利用します.ifとは違いブロックを実行します.
ifでできることはifexecでもすることもできます.

ブロックはbegin, endで指定します.この2つは必ず1対1で対応します. ネストが複雑になった場合などは,.を利用しブロックに名前を付けることもできます. ただし,この名前はソースを分かりやすくするために付けるものなので,指定した名前のブロックを抜けるといった使い方はできません. ですが,1対1の対応関係が間違えている場合にはエラーが出るため,不安な場所には付ける方がいいかもしれません.

ソース
absolute(<@x=-10>) = <@ifexec(x < 0, begin, begin)><@-1*x><$end><@x><$end><br>

<@ifexec(Now.mon == 1 && Now.day == 1, begin)>
    あけましておめでとう<br>
<$end>
<br>
<@ifexec(Now.hour < 12, begin, begin)>
    AM
<$end>
    PM
<$end>
<@Now.hour>:<@Now.min><br>

Good
<@ifexec(Now.hour < 12, begin.am, begin.pm)> <@> ブロックにそれぞれAM, PMの名前を付けておく.
    morning
<$end.am>
    <@ifexec(Now.hour < 18, begin, begin)> <@> ネストすることもできます.
        afternoon
    <$end>
        evening
    <$end>
<$end.pm>.
実行例
absolute(<@x=-10>) = <@ifexec(x < 0, begin, begin)><@-1*x><$end><@x><$end>
<@ifexec(Now.mon == 1 && Now.day == 1, begin)> あけましておめでとう
<$end> <@ifexec(Now.hour < 12, begin, begin)> AM <$end> PM <$end> <@Now.hour>:<@Now.min>
Good <@ifexec(Now.hour < 12, begin.am, begin.pm)> <@> ブロックにそれぞれAM, PMの名前を付けておく. morning <$end.am> <@ifexec(Now.hour < 18, begin, begin)> <@> ネストすることもできます. afternoon <$end> evening <$end> <$end.pm>.

繰り返し

forexec

配列の処理など,繰り返しを行いたいときに利用します.

ソース
<$x = array('a', 'b', 'c')>
<@forexec(t, x, begin)>
    <@t><br>
<$end>
<$undef(t)>
実行例
<$x = array('a', 'b', 'c')> <@forexec(t, x, begin)> <@t>
<$end> <$undef(t)>

forexec_num

指定した回数だけ繰り返しを行いたいときに利用します.

ソース
<@forexec_num(t, 3, begin)>
    <@t><br>
<$end>
<$undef(t)>
実行例
<@forexec_num(t, 3, begin)> <@t>
<$end> <$undef(t)>

forexec_hash

連想配列を処理する点を除き,forexecと同じです.

ソース
<@forexec_hash(t, Now, begin)>
    <@t.key> = <@t.val><br>
<$end>
<$undef(t)>
実行例
<@forexec_hash(t, Now, begin)> <@t.key> = <@t.val>
<$end> <$undef(t)>

メソッドの呼び出し

システムのメソッド

システムの持つメソッドを呼び出す場合はそのまま呼び出します.

ソース
<@undef(t)> <@> undefというメソッドを引数tを渡して呼び出している.
実行例
<@undef(t)> <@> undefというメソッドを引数tを渡して呼び出している.

自作モジュールのメソッド

システムの持つメソッドを呼び出す場合は変数vを通して呼び出します.
vは自作モジュールを指す変数です.これはconfファイルにおいてメインクラスをロードした時点で作成されます.

ソース
<@v.add(10, 20)><br>
<@v.greeting()><br>
<@v.version()>
実行例
<@v.add(10, 20)>
<@v.greeting()>
<@v.version()>

組み込み変数

システム変数など,定義しなくても利用できる変数です.

変数vはロードされているメインオブジェクトを指す変数です.

  Value Source
メインオブジェクト<@v> <@v>
Satsuki systemのversion <@VERSION> <@VERSION>
サーバのURL <@Server_url> <@Server_url>
cgi本体 <@Myself> <@Myself>
現在時刻 <@Timestamp> <@Timestamp>
<@Now.mon> <@Now.mon>
<@Now.day> <@Now.day>
<@Now.hour> <@Now.hour>
<@Now.min> <@Now.min>

copyright

<@v.copyright()>