Skip to content

Commit

Permalink
Setup multiple CSS at-tules
Browse files Browse the repository at this point in the history
  • Loading branch information
artf committed Jan 24, 2018
1 parent a16b045 commit 51b1c33
Showing 1 changed file with 31 additions and 7 deletions.
38 changes: 31 additions & 7 deletions src/parser/model/ParserCss.js
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit 51b1c33

Please sign in to comment.