| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | function removeWhitespace(match, value) {  return '[' + value.replace(/ /g, '') + ']';}function selectorSorter(s1, s2) {  return s1[0] > s2[0] ? 1 : -1;}function whitespaceReplacements(_, p1, p2, p3) {  if (p1 && p2 && p3.length)    return p1 + p2 + ' ';  else if (p1 && p2)    return p1 + p2;  else    return p2;}var CleanUp = {  selectors: function (selectors, removeUnsupported, adjacentSpace) {    var list = [];    var repeated = [];    for (var i = 0, l = selectors.length; i < l; i++) {      var selector = selectors[i];      var reduced = selector[0]        .replace(/\s+/g, ' ')        .replace(/ ?, ?/g, ',')        .replace(/\s*(\\)?([>+~])(\s*)/g, whitespaceReplacements)        .trim();      if (adjacentSpace && reduced.indexOf('nav') > 0)        reduced = reduced.replace(/\+nav(\S|$)/, '+ nav$1');      if (removeUnsupported && (reduced.indexOf('*+html ') != -1 || reduced.indexOf('*:first-child+html ') != -1))        continue;      if (reduced.indexOf('*') > -1) {        reduced = reduced          .replace(/\*([:#\.\[])/g, '$1')          .replace(/^(\:first\-child)?\+html/, '*$1+html');      }      if (reduced.indexOf('[') > -1)        reduced = reduced.replace(/\[([^\]]+)\]/g, removeWhitespace);      if (repeated.indexOf(reduced) == -1) {        selector[0] = reduced;        repeated.push(reduced);        list.push(selector);      }    }    return list.sort(selectorSorter);  },  selectorDuplicates: function (selectors) {    var list = [];    var repeated = [];    for (var i = 0, l = selectors.length; i < l; i++) {      var selector = selectors[i];      if (repeated.indexOf(selector[0]) == -1) {        repeated.push(selector[0]);        list.push(selector);      }    }    return list.sort(selectorSorter);  },  block: function (values, spaceAfterClosingBrace) {    values[0] = values[0]      .replace(/\s+/g, ' ')      .replace(/(,|:|\() /g, '$1')      .replace(/ \)/g, ')');    if (!spaceAfterClosingBrace)      values[0] = values[0].replace(/\) /g, ')');  },  atRule: function (values) {    values[0] = values[0]      .replace(/\s+/g, ' ')      .trim();  }};module.exports = CleanUp;
 |