Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Парсер css на js (https://javascript.ru/forum/misc/47322-parser-css-na-js.html)

bio 19.05.2014 08:27

Парсер css на js
 
Есть css в виде текста:

Код:

.title {
  font-size: 13px;
}

.amount {
  background-image: linear-gradient(to bottom, #d84436 0%, #e94c3d 100%);
}

.total {
  background-image: linear-gradient(to bottom, #e94c3d 0%, #d84436 100%);
}

Нужно вытащить селектор и свойство, только если у селектора есть свойство с градиентом.
Подскажите как реализовать наиболее поизводительнее так как число строк может достигать до 10 000.

Octane 19.05.2014 08:38

Если это на клиенте необходимо сделать, можно ничего не парсить, а создать iframe, подключить там CSS файл и пройтись по свойствам:
document.styleSheets[i].rules[j].cssText.indexOf('linear-gradient')

bio 19.05.2014 09:26

document.styleSheets не подходит так как нужна поддержка IE8+, а он(IE) вырезает не стандартные значения свойств.

Aetae 19.05.2014 13:18

Если грубо то примерно так:
<script>var css = function(){/*
.title {
  font-size: 13px;
}

.amount {
  background-image: linear-gradient(to bottom, #d84436 0%, #e94c3d 100%);
}

.total {
  background-image: linear-gradient(to bottom, #e94c3d 0%, #d84436 100%);
}
*/}.toString().replace(/^.*[\n\r]+|[\n\r]+.*$/g,'');

var arr = css.match(/[^}]+?\{[^}]+?linear-gradient[^}]+}/g);

alert(arr.join('\n'))</script>


А тонко и вручную - это вам самостоятельно надо будет делать.


Часовой пояс GMT +3, время: 08:09.