Парсинг CSS в JavaScript/jQueryCSS

Разбираемся в CSS
Ответить
Anonymous
 Парсинг CSS в JavaScript/jQuery

Сообщение Anonymous »

Я пытаюсь реализовать синтаксический анализ CSS в JavaScript, чтобы:

Код: Выделить всё

a {
color: red;
}
< /code>

анализируется в объект: < /p>

{
'a' {
'color': 'red'
}
}
Во-первых, есть ли библиотека JavaScript/jQuery, которую я могу использовать?

Моя реализация довольно проста, поэтому я уверен, что она ни в коем случае не надежна. Например, он отлично работает для базового CSS, но для свойства типа:

Код: Выделить всё

background: url(data:image/png;base64, ....);
он не работает, потому что я использую Split (';') для отдельного свойства: value пары. Здесь; встречается в значении , поэтому оно тоже расщепляется.

Есть ли альтернативный способ сделать это? p>

Вот код: < /p>

Код: Выделить всё

parseCSS: function(css) {
var rules = {};
css = this.removeComments(css);
var blocks = css.split('}');
blocks.pop();
var len = blocks.length;
for (var i = 0; i < len; i++)
{
var pair = blocks[i].split('{');
rules[$.trim(pair[0])] = this.parseCSSBlock(pair[1]);
}
return rules;
},

parseCSSBlock: function(css) {
var rule = {};
var declarations = css.split(';');
declarations.pop();
var len = declarations.length;
for (var i = 0; i < len; i++)
{
var loc = declarations[i].indexOf(':');
var property = $.trim(declarations[i].substring(0, loc));
var value = $.trim(declarations[i].substring(loc + 1));

if (property != "" && value != "")
rule[property] = value;
}
return rule;
},

removeComments: function(css) {
return css.replace(/\/\*(\r|\n|.)*\*\//g,"");
}
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/332 ... ipt-jquery
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»