Browse Source

Setup multiple CSS at-tules

pull/803/head
Artur Arseniev 8 years ago
parent
commit
51b1c33888
  1. 38
      src/parser/model/ParserCss.js

38
src/parser/model/ParserCss.js

@ -1,3 +1,20 @@
import { keys } from 'underscore';
// At-rules
// https://developer.mozilla.org/it/docs/Web/API/CSSRule#Type_constants
const atRules = {
4: 'media',
5: 'font-face',
6: 'page',
7: 'keyframes',
11: 'counter-style',
12: 'supports',
13: 'document',
14: 'font-feature-values',
15: 'viewport'
};
const atRuleKeys = keys(atRules);
module.exports = config => ({
/**
* Parse selector string to array.
@ -37,28 +54,35 @@ module.exports = config => ({
/**
* Fetch data from node
* @param {StyleSheet|CSSMediaRule} el
* @param {StyleSheet|CSSRule} el
* @return {Array<Object>}
*/
parseNode(el) {
var result = [];
var nodes = el.cssRules;
var nodes = el.cssRules || [];
for (var i = 0, len = nodes.length; i < len; i++) {
var node = nodes[i];
var sels = node.selectorText;
var selsAdd = [];
const type = node.type.toString();
// It's a CSSMediaRule
if (node.cssRules) {
if (atRuleKeys.indexOf(type) >= 0) {
console.log(node);
var subRules = this.parseNode(node);
var mediaText = node.media.mediaText;
const condition =
node.conditionText ||
(node.media && node.media.mediaText) ||
node.selectorText ||
node.name ||
'';
for (var s = 0, lens = subRules.length; s < lens; s++) {
var subRule = subRules[s];
subRule.mediaText = mediaText ? mediaText.trim() : '';
subRule.mediaText = condition.trim();
subRule.atRuleType = atRules[type];
}
console.log(subRules);
result = result.concat(subRules);
}

Loading…
Cancel
Save