冗長なユニバーサル・セレクターを削除する機能を追加して、CSSWring v5.1.0をリリースした。かなり前にやろうと考えていたもののすっかり忘れていた。v5.1.0には少し前に書いた単位の変換機能も含まれている。

冗長なユニバーサル・セレクターとは、省略可能な*のことだ。

*#foo,
*.bar,
*:link,
*[baz] {
  color: red;
}

このような*は、あってもなくてもセレクターの解釈へ影響を与えることはないため、削除できる。

.foo * .bar {
  color: red;
}

実際にはこのような*も削除可能だ。ただ実装がかなり面倒くさい。例えば以下のようなセレクターでは削除することはできない。

.foo > * + .bar {
  color: red;
}

前後がシンプル・セレクターでなければならないというわけだ。シンプル・セレクターかどうかを判定する機能をうまく実装出来たら、削除できるようにしたい。