Example #1
0
exports.getPreservedText = function(css, options, ignoredPseudos) {
  var parsed = mensch.parse(css, {position: true, comments: true});
  var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];
  var preserved = [];
  var lastStart = null;

  for (var i = rules.length - 1; i >= 0; i--) {
    if ((options.fontFaces && rules[i].type === 'font-face') ||
        (options.mediaQueries && rules[i].type === 'media') ||
        (options.keyFrames && rules[i].type === 'keyframes') ||
        (options.pseudos && rules[i].selectors && this.matchesPseudo(rules[i].selectors[0], ignoredPseudos))) {
      preserved.unshift(
        mensch.stringify(
          { stylesheet: { rules: [ rules[i] ] }},
          { comments: false, indentation: '  ' }
        )
      );
    }
    lastStart = rules[i].position.start;
  }

  if (preserved.length === 0) {
    return false;
  }
  return '\n' + preserved.join('\n') + '\n';
};
Example #2
0
	xhr.onreadystatechange = function() {
		if (xhr.readyState === 4) {
			try {
				var ast = mensch.parse(xhr.responseText);
				callback({ast: JSON.stringify(ast)});
			} catch (e) {
				callback({err: e});
			}
		}
	};
Example #3
0
File: utils.js Project: bago/juice
exports.parseCSS = function(css) {
  var parsed = mensch.parse(css, {position: true, comments: true});
  var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];
  var ret = [];

  for (var i = 0, l = rules.length; i < l; i++) {
    if (rules[i].type == 'rule') {
      var rule = rules[i];
      var selectors = rule.selectors;

      for (var ii = 0, ll = selectors.length; ii < ll; ii++) {
        ret.push([selectors[ii], rule.declarations]);
      }
    }
  }

  return ret;
};
Example #4
0
exports.getPreservedText = function(css, options) {
  var parsed = mensch.parse(css, {position: true, comments: true});
  var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];
  var preserved = css;
  var preserved2 = [];
  var lastStart = null;

  for (var i = rules.length - 1; i >= 0; i--) {
    if (options.fontFaces && rules[i].type === 'font-face') {
      // preserve
      // TODO remove the replace once we decide we don't need to mimic the previous outputs
      // we'll also have to remove the multiline hack in normalizeLineEndings
      preserved2.push(
        mensch.stringify(
          { stylesheet: { rules: [ rules[i] ] }}, 
          { comments: false, indentation: '    ' }
        ).replace(/}/g,os.EOL+'}')
      );
    } else if (options.mediaQueries && rules[i].type === 'media') {
      // preserve
      preserved2.push(
        mensch.stringify(
          { stylesheet: { rules: [ rules[i] ] }},
          { comments: false, indentation: '  ' }
        )
      );
    } else {
      // remove
      preserved = removeStyle(preserved, rules[i].position.start, lastStart, 0, 0, 0, '');
    }
    lastStart = rules[i].position.start;
  }
  // preserved works by removing unwanted stuff, preserved2 by generating a new style with "stuff to keep"
  // We have to decide what is our strategy (the preserved2 produces the same output of the cssom based version <= 2.0.0)
  /* method 1: clean up original style and keep the remaining "as is" */
  /*
    if (preserved.trim().length === 0) return false;
    return preserved;
  */
  /* method 2: create style from AST */
  if (preserved2.length === 0) return false;
  return os.EOL+preserved2.join(os.EOL)+os.EOL;
};
Example #5
0
exports.getPreservedText = function(css, options) {
  var parsed = mensch.parse(css, {position: true, comments: true});
  var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];
  var preserved = [];
  var lastStart = null;

  for (var i = rules.length - 1; i >= 0; i--) {
    if ((options.fontFaces && rules[i].type === 'font-face') ||
        (options.mediaQueries && rules[i].type === 'media')) {
      preserved.push(
        mensch.stringify(
          { stylesheet: { rules: [ rules[i] ] }},
          { comments: false, indentation: '  ' }
        )
      );
    }
    lastStart = rules[i].position.start;
  }

  if (preserved.length === 0) return false;
  return os.EOL+preserved.join(os.EOL)+os.EOL;
};
Example #6
0
 fn: function () {
     mensch.stringify( mensch.parse(css) );
 }