- SHJS can now automatically load language script files (feature request #2007022 - thanks to Michal Nazarewicz and Eugene Marcotte).
- Highlighting of C/C++ and JavaScript has been improved.
- A new language file for Oracle SQL has been added (thanks to Mike Breeze).
- Case-insensitive regular expressions are now handled more efficiently.
- SHJS now treats <br> tags as line terminators in input (bug #2054144 - thanks to Altforweilerer).
- Compressed .min.js files are now generated with YUI Compressor.
languageファイルの自動読み込みは Msxml2.XMLHTTPか XMLHttpRequestを利用する。
<script>タグを挿入するのかも*と思っていたが今風のやり方だった。(SourceForgeの Feature Requestsで両派の議論があったようで、0.5では Asynchronous XMLHttpRequestを採用したけど将来かわるかもー、だって)
lang/sh_javascript.jsの全変更点(多分)は
新たに対応したものも対応が外れたものもあるが、どちらも JavaScriptの仕様に近づくための変更という点は共通。
それでもやっぱり Javaっぽいのは、java.langまるごとインクルードだった前バージョンの source-highlight-lang/javascript.langが、java.langの中身をベースに足し引きしたものに変わったに過ぎないから。
「大文字小文字を無視する正規表現を効率的に」っていうのは lang/sh_sql.jsを見るにこういうこと。
/[Vv][Aa][Rr][Cc][Hh][Aa][Rr]/ // ver. 0.4.2 /VARCHAR/i // ver. 0.5
……。
YUI Compressorはローカル変数名を縮めることで JSMin以上の圧縮を図る。
他にも、obj["prop"]を obj.propに(可能なら)したり、連結されるリテラル文字列を予め一つにしたり、オブジェクトノーテイション(って言うの?)のプロパティ名部分の引用符を取り除いたり({"p1":v1, "p2":v2} -> {p1:v1, p2:v2})、するらしい。
おれは JSMinでアグレッシブ(level 3 of 3)に最小化する(と、不要な空白と全ての改行が取り除かれるので、セミコロンインサーションの余地がなくなって、一つのセミコロンも省略できなくなる)のが好きなんだけど。何より Javaの実行環境がないから、YUI Compressorは動かない……。
ブラウザ(クライアントサイド)で実行されるのでサーバーの負荷が増えません。
メインスクリプト(最小化されたものが数KB)は必須ですが各言語ファイルはオプションです。名前も知らない言語の定義ファイルまでブラウザにダウンロードしてもらう必要はありません。
自動認識のような不確かなものに頼りません。(自分の書いているものが何語なのか知らない人は少ないでしょう。あえて情報を削ってスクリプトの仕事を増やす必要はありません)
言語ファイルは、状態オブジェクトの配列です。各状態は正規表現のパターンを一つ以上持ち、マッチしたパターンにより配色と遷移先を決定します。状態が増えるのをいとわなければ何でもできます⁑⁂。
ダブルクォーテーション文字列や数字や URLなどにマッチする正規表現を並べて順番にマッチングさせるだけのハイライターより一段上のパターン認識が可能です。(有名どころの SyntaxHighlighter 2.0は XRegExpというライブラリを使用していて、これが Perl5や鬼車や .NET並の正規表現を JavaScriptでも使用可能にしています。これも一歩踏み出す一つの方法ですが、ほとんど XMLのハイライトでしか使われてないようにも見えるのがもったいない)
JavaScriptの方は letみたいな新しいキーワードには対応していないが、JScript5.5(ECMAScript3)に準拠したスクリプトのハイライトに可能な限り対応している。Javaもどきの実装とは全然違います。
Rubyの方もがんばったけど、こちらは正規表現による字句解析レベルでは判断の付かない要素が多くて、例えば
str1 = % hoge ; #=> "hoge" str2 = "%04d-%02d-%02d" % [2008, 8, 20] #=> "2008-08-20"
% をメソッドと判断する(下段)か %!string! とする(上段)かは文脈がないと決められない。現在は後者が誤って %!string! と判断されている(%!string!記法の区切り文字としてスペースを認めなければ、より多くのケースで妥当な表示が得られるのはわかっているが……)。また、改行を含む %!string! リテラルにも対応していない(はてなはこれができる。悔しい)が、かっこを使った %記法( %[string]など )では改行を含むことができる。
既知の不具合はこれだけ。(知らないだけ)
* その場合スクリプトが実行されないことがあったような……(検索結果>http://la.ma.la/blog/diary_200612061928.htm ) と思ったが、IEで innerHTMLを使った場合の話だった。とはいえ、DOMで <script>エレメントを作成することは可能で、実行もされるというのだろうか?
⁑ 厳密ではない。感覚的な言葉。
⁂ この文では普通の正規表現以上の表現力(例えばかっこの対応を調べられる)があるのを説明できていないような。(ある状態から別の状態へ移動するだけでなく後戻りすることもできるから、というのでは説明になっているだろうか?
*4 2008年12月にリリースされた shjs-0.6でフォーマットが変更になったので shjs-0.5用。
最終更新: 2011-05-20T17:45+0900
2003年のモデルが、「Bad Boy かっけー。Cannondaleってところが作ってるのかー。」と、両方の名前を頭に刻みつけるきっかけになったもので、実際に購入したのが 2007年のもの。
両方のスペック表が公開されているので並べてみる。
Frame | 2003 | CAAD3 Mountain |
---|---|---|
2007 | Bad Boy Si | |
Fork | 2003 | Tig-welded chromoly, 1 1/8" |
2007 | Fatty R | |
Rear Shock | 2003 | N/A |
2007 | N/A | |
Rims | 2003 | Mavic X139, 32-hole |
2007 | Mach1 510 w/machined sidewall, 32h | |
Hubs | 2003 | Shimano |
2007 | Shimano M475 | |
Spokes | 2003 | DT Champion |
2007 | DT Swiss Champion | |
Tires | 2003 | Hutchinson Top Slick, 26×1.0" |
2007 | Maxxis Detonator, 700×28c | |
Pedals | 2003 | Wellgo alloy cage w/clips & straps |
2007 | Wellgo alloy cage w/clip and strap | |
Crank | 2003 | Sugino MX300, 22/32/44 |
2007 | TruVatiV ISOflow 3.0, 28/38/48 | |
Chain | 2003 | Shimano 9-speed |
2007 | KMC 8-speed | |
Rear Cogs | 2003 | SRAM 7.0 |
2007 | Sunrace M63, 11-32 | |
Bottom Bracket | 2003 | Shimano 4-Taper |
2007 | Shimano BB-UN26 | |
Front Derailleur | 2003 | Shimano Deore |
2007 | Shimano Alivio | |
Rear Derailleur | 2003 | Shimano XT |
2007 | Shimano Deore | |
Shifters | 2003 | Shimano Deore |
2007 | Shimano Alivio | |
Handlebars | 2003 | Ritchey SC |
2007 | Cannondale C3, 20mm rise | |
Stem | 2003 | Cannondale 3-D forged 25.4 |
2007 | Cannondale XC3 1 1/8", 31.8mm | |
Headset | 2003 | Cane Creek S-1 |
2007 | FSA Alloy integrated | |
Brakeset | 2003 | Cannondale Expert w/cartridge pads |
2007 | Cannondale Fire w/cartridge pad | |
Brakelevers | 2003 | Cannondale Expert |
2007 | Cannondale Fire | |
Saddle | 2003 | Cannondale Expert |
2007 | Selle Royal Viper | |
Seat Post | 2003 | Kalloy SP-263B |
2007 | Cannondale C4 Alloy | |
Colors | 2003 | Ninbus Grey (gloss)(GRY). |
2007 | Jet Black (matte)(BBQ). | |
Sizes | 2003 | P, S, M, L, X |
2007 | P, S, M, L, X | |
Weight | 2003 | N/A |
2007 | ||
Extras | 2003 | |
2007 | Cannondale GRIND Grip, E-13 SRS Chainguide | |
MSRP | 2003 | |
2007 | $779.99* |
価格は税抜き¥110000のまま変わらないが、パーツは毎年変更されている。ほとんどのメーカーと製品名は見てもわからないのだけど、変速装置に使われている Shimanoだけは日本のメーカーでなじみがあるので少し調べた。毎年の変更は、素人目には退化し続けているようにしか見えない。2008年はとうとう Alivioで統一された。
トップグレードの Jekyllはなくなり、変更されたフレームはインパクトがない。そしてパーツは退化していく(ように見える)。志が感じられず商魂しか感じない。
実際のところ、俺みたいな素人が乗ってるんだから、Cannondaleの選択は正しいのかもしれないけど。
リアの話。
やっかいな代物を持ち込んだらしい。変速が決まらないと本当にストレスがたまるので明日には直っててほしい。