私は一連の CSS (10,000 行以上) をリファクタリングしており、行ごとに手動で変換するのではなく、次のようにしています。
-webkit-transition: .1s linear all;
-moz-transition: .1s linear all;
transition: .1s linear all;
これに:
.transition(.1s linear all);
これを正規表現で高速化する方法はありますか?
ありがとう!
私は一連の CSS (10,000 行以上) をリファクタリングしており、行ごとに手動で変換するのではなく、次のようにしています。
-webkit-transition: .1s linear all;
-moz-transition: .1s linear all;
transition: .1s linear all;
これに:
.transition(.1s linear all);
これを正規表現で高速化する方法はありますか?
ありがとう!
#!/usr/bin/python
import re
with open('/tmp/test.txt') as f:
for line in f:
m = re.match(r'(.*)(transition):\s*(.*);', line)
if m:
print(".%s(%s);" % (m.group(2), m.group(3)))
使用しているエディターが正規表現でのfind-replaceをサポートするかどうかはわかりません。(Eclipse IDEで次の手順を試しました)
ステップ1:「。-webkit-。」を検索して空白に置き換えます
ステップ2:「。-moz-。」を検索して空白に置き換えます
ステップ3:「(transition):(。*);」を検索します そして、「。$ 1($ 2);」に置き換えます。
お役に立てれば。
変換を支援するためにできることの 1 つは、CSS パーサーを使用して CSS を読み取り、独自のメソッドを記述して LESS コードを発行することです。Java 用のそのようなパーサーの 1 つを次に示します。
なぜこれが必要なのかわかりません。古い CSS を残して、LESS だけで新しいスタイルシートを作成してみませんか?
しかし、いずれにせよ、正規表現がこのタスクに最適なオプションであるとは思いません。なぜなら、それが機能するには CSS が非常に特殊な方法で書かれている必要があり、10000 行を超える CSS にはおそらく当てはまらないからです。
また、このコンバーターを使用することもできます。ただし、あなたが言及しているタイプの変換は行いません。
最初にすべての接頭辞付きのもの (http://refiddle.com/2t4) を削除してから、接頭辞なしのものを mixin (http://refiddle.com/2t5) に置き換えます。
それは実際にはデータがどの程度変動するかによって異なりますが、これは良い出発点です:
/(?:\s*(?:-(?:webkit|moz)-)?transition:\s*\.1s linear all;\n)+/
値が可変の場合は、データに一致するパターンに置き換えます。