2004-12-12
code をクライアント側で着色
- Reference URI
- http://lowreal.net/logs/2004/12/12/2
- Written Time
- 2004-12-12T03:00:30+09:00
- Tags
-
- prog
- web
pre に現れるコードを Javascript で着色 (Javascript でやってるのはマークアップ) してみる。重い?
少し前からこれがやってみたかったので class 属性に使用してる言語を書いていたりした。言語ごとにトークンを使いわけたようと思ってたわけだけど、実際そこまでやるのってどうなのよ、とか思い始めた。そのうちやってみて、いけそうだったら採用してみよう。
現状でもかなり重い気が……長くとれるトークンを増やせば (ループ量が減って) 軽くなるかもしれないけど微妙。実際一文字ずつループまわしてるからなぁ。やりすぎか。
Inserted at 2004-12-12T03:05:35+09:00
Ruby と ECMAScript は別のトークンテーブル使うようにしてみた。別にパースしてるわけじゃない (スキャンだけ) なので微妙にアレな状況が既にいくつか思いつくわけですが……例えば式展開の引数で括ってるクオーテーションつかっちゃうとかが絶対おかしくなる。
それとループ回数を減らすために /[a-z][a-z0-9]*/i は identifer ってことにしてスキップしてる。
Inserted at 2004-12-12T03:42:25+09:00
Lisp と XML もすっごい適当に加えた。
Inserted at 2004-12-12T05:33:42+09:00
サンプル 重いので移した。
正規表現はブラウザ毎の違いが殆どない気もする。気付いてないだけかもしれないけど。
FF で右クリックから View Selection Source すると内部 DOM の内容もソースとして出てくるのが役に立った……
そもそもスキャナの実装が激しく間違ってたので修正。根本的な部分を変えたのでバグがあるかもしれない。
Inserted at 2004-12-14T13:54:12+09:00
Trackback URI: http://lowreal.net/logs/2004/12/12/2.trackback
NULL
Generated with Taglibro
この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。
Comments (0)