rfc4180.js : CSV文字列を二次元配列やtable要素ノードに変換する
CSV文字列を二次元配列やtable要素ノードに変換する rfc4180.js ( http://goo.gl/TSLP ) を書いてみました。 toObject() と一行目をth要素にするオプションをつける予定。 #JavaScript
2010-10-02 12:49:29帰宅。 やはり、rfc4180plus.js は ,, なCSV文字列を渡したとき、isCSV() が false を返していたので修正しました。
2010-10-02 19:52:34rfc4180.js, rfc4180plus.js の toTable() に第三引数 (theadFlag) を実装しました。
2010-10-02 22:39:49theadFlag = true にすると、一行目のセルが thead > th 要素になります。 theadFlag はオプションであり、未指定時はこの処理を行いません。
2010-10-02 22:39:55残るは toObject() のみ。 オブジェクトのフォーマットは2通り考えられる。 toArray() で [['row1','row2']['A1','A2']['B1','B2']] に変換されるCSV文字列があったとして、
2010-10-02 23:14:37(format2) [[{row1: 'A1', row2:'A2'}], [{row1: 'B1', row2: 'B2'}]]
2010-10-02 23:15:13format1 がシンプルなのでそちらを採用することに。 Array.prototype.indexOf や Array.prototype.filter で配列を検索すると便利そうな気がする。(いずれも ES5 規定)
2010-10-02 23:15:48rfc4180.js ( http://gist.github.com/606500 ) を更新しました。 rfc4180plus.js は rfc4180.js に統合されました。(今後、rfc4180plus.js は更新しません)
2010-10-09 05:31:12コンストラクタ関数実行時の第一引数 (isLoose) が true の時、日本語にもマッチする挙動 (元来の rfc4180plus.js と同じ挙動) にスイッチするようになりました。 csvファイルをtable要素に変換する fileToTable() を追加しました。
2010-10-09 05:31:29rfc4180.js の使い方 ( http://goo.gl/TSLP ) を書いておきました。 rfc4180.js の方も一昨日前から微妙に更新しました。
2010-10-11 05:10:21機能的には大差ありません。 引数の順番とかクロージャの扱いとか。RFC4180 を関数実行されたときの例外処理は拘ったところ。
2010-10-11 05:13:15readystatechange ハンドラで IE8 が this や event.target でXHRを得られないので、かなりややこしいことをして取得しています。 個人的にはまだ不満。あまり、クロージャを使いたくないんだけどなあ…。
2010-10-11 05:17:05toTable() で改行をbr要素ノードに変換する処理を忘れてました。 オプションにするとして、デフォルトは「br要素に変換しない」でいいかな…。
2010-10-11 06:21:11