code をクライアント側で着色
pre に現れるコードを Javascript で着色 (Javascript でやってるのはマークアップ) してみる。重い?
少し前からこれがやってみたかったので class 属性に使用してる言語を書いていたりした。言語ごとにトークンを使いわけたようと思ってたわけだけど、実際そこまでやるのってどうなのよ、とか思い始めた。そのうちやってみて、いけそうだったら採用してみよう。
現状でもかなり重い気が……長くとれるトークンを増やせば (ループ量が減って) 軽くなるかもしれないけど微妙。実際一文字ずつループまわしてるからなぁ。やりすぎか。
Ruby と ECMAScript は別のトークンテーブル使うようにしてみた。別にパースしてるわけじゃない (スキャンだけ) なので微妙にアレな状況が既にいくつか思いつくわけですが……例えば式展開の引数で括ってるクオーテーションつかっちゃうとかが絶対おかしくなる。
それとループ回数を減らすために /[a-z][a-z0-9]*/i は identifer ってことにしてスキップしてる。
Lisp と XML もすっごい適当に加えた。
サンプル 重いので移した。
正規表現はブラウザ毎の違いが殆どない気もする。気付いてないだけかもしれないけど。
FF で右クリックから View Selection Source すると内部 DOM の内容もソースとして出てくるのが役に立った……
そもそもスキャナの実装が激しく間違ってたので修正。根本的な部分を変えたのでバグがあるかもしれない。
関連エントリー
- コードに色をつける bookmarkletcode coloring bookmarklet コードに色づけ Firefox でしか試してません。Opera ではもしかしたら動くかもしれないけれど、IE では絶対動きません。コアな部分...
- L2スイッチとルーター 今更ながらいまいち理解できてないポイントがあったので、いっかい自分でまとめてみることにする。当たり前のことではあるが…… L2スイッチ セグ...
- Canvas を使った gimp like な Triangle Color Selector Canvas を使った gimp like な Triangle Color Selector ぐるぐる回ります。透過 PNG 版より正確で...
- G あー、少人数グループで何かやりて。とか思うんだけど、協調性を持てとか中学のころに糞体育教師に言われ、まぁ確かにグループワークが苦手な自分的に...
- ✖ そういえばはてなのサービス間移動のために javascript:location='http://%s.hatena.ne.jp/'+loc...