Snowballを大幅アップデートしました。といっても、内部処理のことで、外部的にはほとんどかわりません。でも、革命的だったので、書きます。書きたくなったのです。
何があったの?
ついに、前から考えていたCSSをブロックで格納する機能を実装しました。え、そんなこと?とおもうかもしれませんが、意外に大変でした。
まず、なにがわたされるのか、ということです。どういうことかというと、CSSのファイルを渡されない可能性があります。 例えば、いまはあまりないかもしれませんが、style属性の中身です。<span style="color: #CCC;">のようなものです。 他にも、セレクタのみというパターンです。考えましたが、「なにもしなくてもいいんじゃないか?むしろなにかするとダメになるんじゃ?」となったので無視しました。 あとは、@mediaの問題です。これと普通のブロック?の区別が難しかったのです。
でも、JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティスを読んでJavascriptを学び直したら実装できそうな気がしてきてやったらほんとうにできました。実装はこんな感じです。
block=[ { selector:なんとか, properties:なんとか, string:なんとか }, { selector:なんとか, properties:なんとか, string:なんとか } ]
selectorはそのままセレクタ、propertiesもプロパティのかたまりで、stringは、セレクタとプロパティをあわせたものです。こんなかんじでできました。いろいろと応用ができそうです。ご要望があれば公開します。