cl-who をつかう
なぜか HTML を生成するのに ASP.NET を使っているのだが、、、ASP.NET 自体は悪くなく、むしろ、素晴らしい技術だと思うが、使っている人が(契約している開発者)があまり素晴らしくなく、結果としてものすごくネストしたHTMLソースがちらばっている。
なんだか、めんどくさいので cl-who をつかい、圧縮することにした。まずは html を who の形式に変換。変換は簡単パーザを作った。Java
Script が混ざっていたりするとうまく変換できないが、、、、まぁ簡易的には使える。
(:div (:P) (:DIV :CLASS "pgNsSectionKolona" :ID "ip-cores" (:TABLE :STYLE "float: right; margin-left: 4px" :BORDER "0" :CELLSPACING "0" :CELLPADDING "0" (:TBODY (:TR (:TD ....
と、これだけでは括弧が増えただけ。vi 使いにはうれしいかもしれないが、ネストは解消されない。そこで、括弧を評価しつつ who 形式に変換する関数を作った。結果として、次のようになる。-aspx で終わるシンボルが泣ける。
(:div (:DIV :CLASS "pgDesnaKolonaTablicaTop") (:DIV :CLASS "pgDesnaKolonaTablicaContent" (:H2 "Read More ") (:UL (:LI logiCRAFT-CC-Kits-aspx) (:LI logiCRAFT-CC-Reference-FPGA-aspx ....
展開も全部自動でしてほしいので、つぎのようなデータを与えると自動的に変換してくれるようにした。
(((contents-data-dir #P"created-html/")) ("217.html" main-page ((main-page :file "217.who") (right-menu :file "right-menu.who") (right-menu-lib :file "right-menu-lib.props") ...
これでネストが浅くなって見通しがよくなる。