TrayServerなるDOMをいい感じに連想配列にしたり、JSONっぽくしたりするライブラリっぽいやつ書いた

こちら です。やってることっていうかsrc以下のCoffeeScriptのモジュールを説明する記事を書きます(記述が汚すぎるので)

src以下のファイル群

  • demo <- デモページのビルド用のファイル(参照はtrayServeからやってる)
  • trayServe <- メインのスクリプトとか
    • convert.coffee <- DOMのを冗長な連想配列を含む配列に変更する
    • simplify.coffee <- 冗長な連想配列を単純な連想配列に変換する(mathjs とか使った方が良かったかもって後悔してるところ)
    • dataArray.coffee <- 配列が[[a,b,c], [[hoge, fuga, foo], ...] ] みたいな形のときに{head:[...], body:[{obj},...]}みたいなObjectに変換するやつ

非常に汚いファイル構成になってます。

convert.coffee

基本的には再帰関数にDOMをブン投げてがんばるみたいな感じになってます。Array.prototype.mapによって頑張る感じです。
String.prototype.trim使ってるので前後に空白とか改行が必要なデータに対応できてません。

simplify.coffee

これも再帰関数で頑張ってます。ただ、冗長な配列をなんとかするのにmapで頑張ってたら、Stringでもmapしだしたりして最悪でしたのでゴリゴリ配列を条件で代入しなおしたり頑張りました。おかげさまで非常に汚い実装になり悔しいです。
あとconvert.coffeeで出てきたデータの中に空文字列だけ入った配列とか出てきて殺意の波動に目覚めたりして大変でした。いい方法教えてください。

dataArray.cofee

これは普通にいい感じのJSONにできそうだったらそうしてるだけです。ほぼいりません。自分で適宜実装した方が幸せっぽい感じ

使い方

自分で頑張ってgulpfile弄ってビルドしてください。関数だけビルドしちゃって必要なところにぶち込むのが良いと思います。

遊び方

適当なサイトでNode.prototype.toArrayとかにtoArrayとかtoData関数をぶち込んで、document.bodyとかで実行するといい感じにHTMLの最小のネスト構成がわかるので楽しいです。