Narwhalが提供するAPI

Narwhalはサーバサイドで利用することを想定したJavaScriptライブラリだ。概要については『サーバサイドJavaScriptライブラリ「Narwhal」を使ってみよう』を参照して欲しい。

今回はNarwhalが提供する各種のAPIについて踏み込んでみようと思う。ただし、Narwhalが提供するライブラリはまだドキュメント等が整備されておらず、実験的な実装と思われるものも多い。そのため将来のバージョンではAPIが変更になる可能性もあるので注意して欲しい。

システムインタフェース

systemオブジェクトを通してコマンドライン引数や環境変数、標準入出力などを参照することができる。

systemオブジェクトの使用例

// 標準出力への出力
system.stdout.println("Hello Narwhal!");

// 環境変数
var path = system.env['PATH'];

// コマンドライン引数
var file = system.args[0]; // ファイル名
var arg1 = system.args[1]; // 第一引数
var arg2 = system.args[2]; // 第一引数

また、osモジュールを使うと任意のコマンドを実行することができる。

コマンドの実行例

var os = require("os");
print(os.command("ls"));

ファイルシステムへのアクセス

続いてファイルシステムにアクセスするためのAPIを見てみよう。以下はファイルの入出力を行う簡単な例だ。

var File = require("file");

// ファイルの読み込み
var data = File.read("test.txt");
// ファイルの書き出し
File.write("test.txt", data);

fileモジュールではこの他にも様々な関数が用意されている。主なものを以下に示す。

ファイル入出力

  • read(ファイルパス, オプション): ファイルパスで指定したファイルを読み込む

  • write(ファイルパス, データ, オプション): ファイルパスで指定したファイルにデータを書き出す

  • copy(コピー元, コピー先): コピー元からコピー先へファイルをコピーする

  • move(移動元, 移動先): 移動元から移動先へファイルを移動する

  • mkdir(パス): パスで指定したフォルダを作成する

  • remove(パス): パスで指定したファイルを削除する

  • rmdir(パス): パスで指定したディレクトリを削除する

  • rmtree(パス): パスで指定したディレクトリを削除する。ディレクトリ内にファイルやディレクトリが存在する場合、再帰的に削除される

ファイルの検索

  • list(パス): 指定したパス直下のファイル、ディレクトリのリストを取得する

  • listTree(パス): 指定したパス配下のサブディレクトリを含むファイル、ディレクトリのリストを取得する

  • glob(パターン): 指定したパターン(ワイルドカードを使用可能)でファイルもしくはディレクトリを検索する

パス操作

  • relative(比較元のパス, 比較対象のパス): 比較元のパスと比較対象のパスとの間の相対パスを求める

  • absolute(パス): 指定したパスを絶対パスに変換する

  • dirname(パス): 指定したパスのうちディレクトリ部分を取得する

  • basename(パス): 指定したパスのうちファイル名もしくがフォルダ名にあたる部分のみを取得する

ファイルテスト

  • exists(パス): 指定したパスが存在するかどうかを調べる

  • isFile(パス): 指定したパスがファイルかどうかを調べる

  • isDirectory(パス): 指定したパスがディレクトリかどうかを調べる

  • isLink(パス): 指定したパスがリンクかどうかを調べる

  • isReadable(パス): 指定したパスが読み取り可能かどうかを調べる

  • isWritable(パス): 指定したパスが書き込み可能かどうかを調べる