rfc4180.js : CSV文字列を二次元配列やtable要素ノードに変換する

RFC 4180 に準拠したCSV構文解析ライブラリです。 Twitter (Togetter) には更新履歴を書く予定。 rfc4180.js http://vird2002.s8.xrea.com/javascript/rfc4180.html 続きを読む
2
think49 @think49

CSV文字列を二次元配列やtable要素ノードに変換する rfc4180.js ( http://goo.gl/TSLP ) を書いてみました。 toObject() と一行目をth要素にするオプションをつける予定。 #JavaScript

2010-10-02 12:49:29
think49 @think49

rfc4180plus.js は ,, なCSV文字列で isCSV() に失敗するかも。帰宅後に確認しよう。

2010-10-02 13:01:23
think49 @think49

帰宅。 やはり、rfc4180plus.js は ,, なCSV文字列を渡したとき、isCSV() が false を返していたので修正しました。

2010-10-02 19:52:34
think49 @think49

rfc4180.js, rfc4180plus.js の toTable() に第三引数 (theadFlag) を実装しました。

2010-10-02 22:39:49
think49 @think49

theadFlag = true にすると、一行目のセルが thead > th 要素になります。 theadFlag はオプションであり、未指定時はこの処理を行いません。

2010-10-02 22:39:55
think49 @think49

残るは toObject() のみ。 オブジェクトのフォーマットは2通り考えられる。 toArray() で [['row1','row2']['A1','A2']['B1','B2']] に変換されるCSV文字列があったとして、

2010-10-02 23:14:37
think49 @think49

(format1) {row1: ['A1','B1'], row2: ['A2','B2']}

2010-10-02 23:14:57
think49 @think49

(format2) [[{row1: 'A1', row2:'A2'}], [{row1: 'B1', row2: 'B2'}]]

2010-10-02 23:15:13
think49 @think49

format1 がシンプルなのでそちらを採用することに。 Array.prototype.indexOf や Array.prototype.filter で配列を検索すると便利そうな気がする。(いずれも ES5 規定)

2010-10-02 23:15:48
think49 @think49

rfc4180.js ( http://gist.github.com/606500 ) を更新しました。 rfc4180plus.js は rfc4180.js に統合されました。(今後、rfc4180plus.js は更新しません)

2010-10-09 05:31:12
think49 @think49

コンストラクタ関数実行時の第一引数 (isLoose) が true の時、日本語にもマッチする挙動 (元来の rfc4180plus.js と同じ挙動) にスイッチするようになりました。 csvファイルをtable要素に変換する fileToTable() を追加しました。

2010-10-09 05:31:29
think49 @think49

ドキュメントの更新は後でやります。

2010-10-09 05:32:39
think49 @think49

rfc4180.js の使い方 ( http://goo.gl/TSLP ) を書いておきました。 rfc4180.js の方も一昨日前から微妙に更新しました。

2010-10-11 05:10:21
think49 @think49

機能的には大差ありません。 引数の順番とかクロージャの扱いとか。RFC4180 を関数実行されたときの例外処理は拘ったところ。

2010-10-11 05:13:15
think49 @think49

readystatechange ハンドラで IE8 が this や event.target でXHRを得られないので、かなりややこしいことをして取得しています。 個人的にはまだ不満。あまり、クロージャを使いたくないんだけどなあ…。

2010-10-11 05:17:05
think49 @think49

toTable() で改行をbr要素ノードに変換する処理を忘れてました。 オプションにするとして、デフォルトは「br要素に変換しない」でいいかな…。

2010-10-11 06:21:11