Browse Source

Refactor CSS Generator

pull/803/head
Artur Arseniev 9 years ago
parent
commit
563eb2d954
  1. 19
      src/code_manager/model/CssGenerator.js
  2. 7
      src/css_composer/model/CssRule.js
  3. 6
      test/specs/css_composer/e2e/CssComposer.js

19
src/code_manager/model/CssGenerator.js

@ -43,19 +43,18 @@ module.exports = require('backbone').Model.extend({
if (cssc) { if (cssc) {
const rules = cssc.getAll(); const rules = cssc.getAll();
const mediaRules = {}; const atRules = {};
const dump = []; const dump = [];
rules.each(rule => { rules.each(rule => {
const media = rule.get('mediaText'); const atRule = rule.getAtRule();
// If media is setted, I'll render it later if (atRule) {
if (media) { const mRules = atRules[atRule];
const mRules = mediaRules[media];
if (mRules) { if (mRules) {
mRules.push(rule); mRules.push(rule);
} else { } else {
mediaRules[media] = [rule]; atRules[atRule] = [rule];
} }
return; return;
} }
@ -63,14 +62,14 @@ module.exports = require('backbone').Model.extend({
code += this.buildFromRule(rule, dump); code += this.buildFromRule(rule, dump);
}); });
// Get media rules // Get at-rules
for (let media in mediaRules) { for (let atRule in atRules) {
let rulesStr = ''; let rulesStr = '';
const mRules = mediaRules[media]; const mRules = atRules[atRule];
mRules.forEach(rule => (rulesStr += this.buildFromRule(rule, dump))); mRules.forEach(rule => (rulesStr += this.buildFromRule(rule, dump)));
if (rulesStr) { if (rulesStr) {
code += `@media ${media}{${rulesStr}}`; code += `${atRule}{${rulesStr}}`;
} }
} }

7
src/css_composer/model/CssRule.js

@ -61,9 +61,10 @@ module.exports = Backbone.Model.extend(Styleable).extend({
getAtRule() { getAtRule() {
const type = this.get('atRuleType'); const type = this.get('atRuleType');
const condition = this.get('mediaText'); const condition = this.get('mediaText');
return ( // Avoid breaks with the last condition
(type ? `@${type}` : '') + (condition && type ? ` ${condition}` : '') const typeStr = type ? `@${type}` : condition ? '@media' : '';
);
return typeStr + (condition && typeStr ? ` ${condition}` : '');
}, },
/** /**

6
test/specs/css_composer/e2e/CssComposer.js

@ -140,6 +140,8 @@ module.exports = {
protected: false protected: false
} }
], ],
atRuleType: '',
singleAtRule: 0,
important: 0, important: 0,
selectorsAdd: '', selectorsAdd: '',
state: '', state: '',
@ -178,6 +180,8 @@ module.exports = {
rule1Out = JSON.parse(JSON.stringify(rule1Out)); rule1Out = JSON.parse(JSON.stringify(rule1Out));
rule2Out = JSON.parse(JSON.stringify(rule2Out)); rule2Out = JSON.parse(JSON.stringify(rule2Out));
var rule1Result = { var rule1Result = {
atRuleType: '',
singleAtRule: 0,
important: 0, important: 0,
mediaText: '', mediaText: '',
selectors: [], selectors: [],
@ -190,6 +194,8 @@ module.exports = {
} }
}; };
var rule2Result = { var rule2Result = {
atRuleType: '',
singleAtRule: 0,
important: 0, important: 0,
mediaText: '', mediaText: '',
selectors: [], selectors: [],

Loading…
Cancel
Save