« (再掲/転載モノ)ステップ入力MIDIシーケンサSTed2のZaurus向けパッケージ | Main | Mac OS X Tiger上にAVR-GCC環境を構築する@2006 »

2006.09.15

JavaScript shell (js)、OSSP js 1.6.20060820のZaurus向けパッケージ

autoconf化されてビルドが楽なOSSP版JavaScript shell (js) 1.6.2006082版のZaurus向けパッケージを作りました。mal_blueさん情報ありがとうございました。

JavaScript shellであるところの「js」は、JavaScriptエンジンであるSpiderMonkeyの応用例の一つに過ぎず、SpiderMonkeyそのものじゃないんですね。

以降、JavaScript shell (js)と表記します。

「OSSP-js_1.6.20060820_arm.ipk.bin」をダウンロード

インタラクティブモードのコマンドライン編集のためにGNU Readline 5.1を組み込んであります。

./configure --with-utf8 --with-editline

JavaScript shell (js)についていろいろ分かってきたので書きます。

JavaScript shell (js)のドキュメント

JavaScript shell (js)のドキュメントがありました。
コマンドラインオプションやECMA標準外のことが書いてあります。

Introduction to the JavaScript shell

引数の参照

前のエントリに補足しましたが、引数の参照の仕方が分かりました。
シェバング行を書いて実行権を付け、

#!/usr/bin/env js
for(i = 0; i < arguments.length)
{
print(arguments[i]);
}

上記のように書き、でもって、

$ ./test.js a b c
a
b
c
$

あるいは、-fオプション無しでスクリプトを実行すると引数が参照できます。

js test.js a b c

-fオプション付きだと失敗します。

js -f test.js a b c

ダメ

標準入力から読み取る

var buf = readline();
print(buf);

変数宣言の強制

変数を使う際はvarで宣言しないとエラーが出るようになります。これはいい。

options('strict');


このオプション付きのスクリプト内でundefinedな変数を参照するとエラーで止まるようにもなるので、
undefinedかどうかtypeof()で判定します。

options('strict');

if( typeof( arguments[0] ) != "undefined" )
{
arguments.length;
print( arguments[0] );
}

変数は必ず初期化するか、argumentsならarguments.lengthを見てから参照するのが本道ですが。

Fileオブジェクト

今回のJavaScrip shell (js)はFileオブジェクトが使えます。

Fileオブジェクトのメソッドやプロパティは以下のFreeSwitchのリファレンスのものが適用できるみたいです。例外もありましたが。
FreeSwitchのFileオブジェクトはSpiderMonkey由来のものみたいです。

http://www.voip-info.org/wiki/view/FreeSwitch+Javascript+File

Fileオブジェクトを使って動かしてみたサンプル

// assign string value to variable "buf".

var f = new File("/home/zaurus"); // dir name pass to constructor.
var buf = f.list(); // return directory list

// write to file.

f = new File("list.txt");
f.open("create,write");
f.write(buf);
f.close();

// read from file.

f = new File("list.txt");
f.open("read");
buf = "";
buf = f.readAll();
f.close();
print(buf);

// remove file.

f = new File("list.txt");
f.remove();

関連リンク

JavaScript によるオブジェクト指向プログラミング

javascript-mode.el

JavaScript shell (js)のインタラクティブモードを使った、javascript-shell-mode、javascript-shellというのが定義されてます。
Emacsの中からJavaScript shell (js)!

|

« (再掲/転載モノ)ステップ入力MIDIシーケンサSTed2のZaurus向けパッケージ | Main | Mac OS X Tiger上にAVR-GCC環境を構築する@2006 »