The Gift

華和梨をSAORI化する 23:52(http://d.hatena.ne.jp/satos/20060617#1150555971より転載)

手順1

以下の内容を「kawarirc.kis」に保存する。必要に応じ、「コマンド定義部」以下は書き換える。

この例では、ishankakuコマンド(Argument0にishankaku)を実装している。
Argument1に文字列を与え、全て半角文字だけからなる文字列の場合は1、そうでない場合は0を返す。
Argument1なしでishankakuコマンドを読んだ場合、何も返らない。


#=============================================================================
# さおりシステム部
#
# 仕様:
#   ・「saori.<Argument0>」エントリが存在する場合、Argument0をコマンドとして
#     「saori.<Argument0>」エントリをget呼ぶ
#   ・戻り値があれば200、戻り値が無ければ204を返す
#   ・コマンド定義が無い場合、400を返す
#=============================================================================

=kis
# Argumentを返すコマンド "Argument"
function Argument $(
	# 引数がなかった場合、何も返さない
	if $[ $(size @arg) <= 1 ] $(return);

	# System.Request.Argument?エントリの一つ目の単語を得る
	get System.Request.Argument$@arg[1][0];
);
=end

# さおりコールバック
# Argument0をコマンドとする
System.Callback.OnSaoriExecute : $(
	if $(size saori.${System.Request.Argument0}) $(
		# コマンドがあった
		setstr System.Response.Result $(get saori.$(encode_entryname ${System.Request.Argument0}));
		if $(length ${System.Response.Result}) $(
			# コマンドがあって、戻り値がある
			setstr System.Response 200;
		) else $(
			# コマンドはあったが、戻り値がない
			clear System.Response.Result;
			setstr System.Response 204;
		);
	) else $(
		# 存在しないコマンドだった、もしくはコマンドがない
		setstr System.Response 400;
	);
)

#=============================================================================

#=============================================================================
# コマンド定義部
# 以下の行に、次の仕様に従って機能を書いてください。
#
# 仕様:
#   「saori.<コマンド> : <定義>」の形式で書く
#=============================================================================

# 例:文字列が半角のみから出来ているか判定する
saori.ishankaku : $(
	if $[ $(length $(Argument 1)) == 0 ] $(return);

	setstr @length $(length $(Argument 1));
	loop ${@length} $(
		setstr @i ${-1};
		# 指定文字列の@i文字目が半角文字リストにない→全角を含んでいる
		if $[ $(find hankakulist $(char_at $(Argument 1) ${@i})) < 0 ] $(
			return 0;
		);
	);
	# 指定文字列に一度も半角文字以外がなかった→半角のみの文字列
	return 1;
)

# 半角文字のリスト
=kis
clear hankakulist;
setstr @i 32;
while $[ ${@i} < 127 ] $(pushstr hankakulist $(chr ${@i});inc @i);
=end

手順2

kawarirc.kisを、華和梨(shiori.dll)と同じフォルダに置く。

手順3

使用しているSHIORIに、華和梨(shiori.dll)をSAORIとして登録する。


#里々の場合の登録例
@SAORI
ishankaku,shiori.dll,ishankaku

手順4

SAORIとして呼び出す。


#里々の場合の使用例
$半角判定      (ishankaku,(判定する文字列))

なお、私設「華和梨」応援団内アーカイブ「華和梨 Phase8用サンプルスクリプト詰め合わせ」にも
「20c001.kis」と言うさおり化サンプルスクリプトが同梱されています。