CSV用データベースライブラリ(2)

データは次のように持つ。


function dataSet(str, header) {
this.header;
this.data = [ ];
...
}

引数は、strがテキスト全体。
これを行ごとに配列で持って、さらにカンマで区切って配列にする。


headerはヘッダ行があるか。
前回のテキストはヘッダ行あり。
ヘッダがある場合は、
this.headerにカンマで区切って配列として格納する。
こうしておくと、
カラムを指定するときにこのヘッダの文字列で行える。


引数がないときは何もしない。


function dataSet(str, header) {
this.header;
this.data = [ ];

if(str != undefined) {
// 改行コードを調べる
var newline;
{
var pos = str.indexOf("\n");
if(str.charAt(pos - 1) == "\r")
newline = "\r\n";
else
newline = "\n";
}
var ary = str.split(newline);
if(ary[ary.length-1] == "") // 末尾の行の処理
ary.length--; // これでいいんだっけ?

// 1行ごとにカンマ区切りでデータ格納
if(header) { // ヘッダあり
this.header = ary[0].split(",");
for(var i = 1; i < ary.length; i++)
this.data[i-1] = ary[i].split(",");
}
else {
for(var i = 1; i < ary.length; i++)
this.data[i-1] = ary[i].split(",");
}
}
...
}

データベースは、まず最初にこのオブジェクトを作り、
これにメソッドを働かせて、新たなオブジェクトを作る、
という方法を取る。