星期三, 2月 18, 2009

[Note]Seed(1)

Ubuntu裡安裝 Seed 很簡單,參考PPA for Orange Owners裡,把
deb http://ppa.launchpad.net/orange-owners/ppa/ubuntu intrepid main
deb-src http://ppa.launchpad.net/orange-owners/ppa/ubuntu intrepid main
放到 /etc/sources.list 裡,然後用 sudo apt-get update 更新,sudo apt-get install seed 來安裝即可。

執行 script 也很簡單,有兩種方法:
  1. 直接以 seed 執行:seed your_script.js
  2. 把 js 檔的第一行改為 #!/usr/bin/env seed,再以 chmod +x 為 js 檔加上執行權限,就可以用 ./your_script.js 執行。


目前官方沒有文件說明 Seed 內部有哪些類別與方法,這很讓人困擾,這兩天看了 source code 跟 example code 之後,大致上有點了解。

Seed 主要的類別是 Seed,提供了如下方法:
  • include:用來含括其他 js,讓你可以為程式作適當的切割,不至於讓檔案變得太大而難以維護。
    Seed.include("other.js");
  • print:印字串。
    Seed.print("Hello world!");
  • check_syntax:檢查語法,你可以傳 javascript 程式進去檢查,如果有錯,會丟出 exception。
    try { 
    Seed.check_syntax("Seed.print(;");
    Seed.print("syntax ok!");
    }
    catch( e ) {
    Seed.print( e.message );
    }
  • spawn:執行外部程式,執行以後會回傳一個 object,這個 object 有兩個屬性:stdout 與 stderr。
    var result = Seed.spawn("ls");
    Seed.print( "=== spawn result(stdout) ===" );
    Seed.print( result.stdout );
    Seed.print( "=== spawn result(stderr) ===" );
    Seed.print( result.stderr );
  • fork:這跟 C 的 fork() 一樣,回傳值是 0,表示是子行程,-1 表示失敗,大於 0 的值,表示是父行程。
    var pid = Seed.fork();
    if( pid == 0 ) { // child process
    var result = Seed.spawn( "ls" );
    Seed.print( result.stdout );
    Seed.quit();
    }
    else if( pid == -1 ) {
    Seed.print( "cannot create child process." );
    }
    else { // parent process.
    Seed.print( "I am parent process." );
    }
  • quit:離開。
  • introspect:這個函數可以用來探知類別成員函數如何使用,安裝 Seed 以後,/usr/share/doc/seed/examples 下有個 introspect.js,就是一個很好的範例。不過我還不是很懂怎麼去用~
  • import_namespace:含括其他 library 進來使用,不要跟 include 搞混了,include 是含括其他 js 檔。

沒有留言: