Haskell のパーサコンビネータがやばいくらい面白い。これはいいなあ。 花谷さん訳の「Parsec, 高速なコンビネータパーサ」を見ながらやってます。
http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tmp/Parsec.html
(22:50)
Haskell 標準ライブラリの Text.Html の出力がなんか嫌だ。 エレメントに大文字使うな! インデントなんてせんでいい!
~ % cat html.hs import Text.Html main = putStr . show $ [ (h1 $ stringToHtml "string"), (p $ stringToHtml "body") ] ~ % ghc-6.4.1 -package text html.hs -o html && ./html <H1> string </H1> <P> body </P>
この pretty print を止める方法はないものか……。
(22:58)
おいおいおい、href 作っても URL はエスケープしてくれないのかよ。 なんだよそれ。ほとんどそれだけを当てにしてライブラリ使ってたのに。
Text.Html 捨て!
URI を Network の下に置くのはいかがなものか。
それはともあれ、URL が含まれてるテキストを Parsec でパースしたいんだけど、 なんかうまい方法はないのだろうか。こんなのしか思いつかないよ……。
url = do a <- string "http" b <- option "" (string "s") c <- string "://" d <- many1 urlChar return $ concat [a,b,c,d] urlChar = alphaNum <|> oneOf ";/?:@&=+$,-_.!~*'#%" -- omit '(' and ')'
(02:53)
とりあえず今日の成果
~/c/xxxxxx % cat src = テストページ 普通のパラグラフな感じで まあ普通の WikiName だったり http://www.example.com だったり * 箇条書き * あいてむ * アイテム # 番号付きだ # ナンバー :単語:説明かもしれない :Alpha:DEC :SPARC:Sun :Itanium:Intel :Opteron:AMD ~/c/xxxxxx % nkf -e src | ./compile <h1> テストページ</h1> <p>普通のパラグラフな感じで</p> <p>まあ普通の <a href="WikiName.html">WikiName</a> だったり <a href="http://www.example.com">http://www.example.com</a> だったり</p> <ul><li> 箇条書き</li> <li> あいてむ</li> <li> アイテム</li> </ul> <ol><li> 番号付きだ</li> <li> ナンバー</li> </ol> <dl><dt>単語</dt> <dd>説明かもしれない</dd> <dt>Alpha</dt> <dd>DEC</dd> <dt>SPARC</dt> <dd>Sun</dd> <dt>Itanium</dt> <dd>Intel</dd> <dt>Opteron</dt> <dd>AMD</dd> </dl>
うーむちょっと余分な空白が……。
(03:06)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
それ以前に Text.Html は HTML 3.2 なのが……。
そろそろ 4.x か XHTML になってほしいところではありますが。
あ、やっぱりそうなんですか。
このへん誰も使ってないんですかねえ。
補足ですが、 WASH を使えば xhtml が生成されます。
なるほど。WASH のほうがよさげですね。
できるだけ外部ライブラリは使いたくなかったんですが、
これはしょうがないかなあ。
実は個人的な XHTML 対応版があります。積極的に開発陣にアピールしないと置き換えられなそうですが……
http://www.cs.chalmers.se/~bringert/darcs/haskell-xhtml/
あっ、Björn Bringert さんによる、ね。
> 個人的な XHTML 対応版