NULL::something

Login via flickr, はてな, TypeKey.

2004-12-12

code をクライアント側で着色

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

Comments (0)

Trackback URI: http://lowreal.net/logs/2004/12/12/2.trackback

NULL

RSS feed meter for http://lowreal.net/logs/latest

Alternates

  1. RSS 1.0
  2. Atom 1.0

Generated with Taglibro

この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。