| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | var Hack = require('./hack');var Marker = require('../tokenizer/marker');var ASTERISK_HACK = '*';var BACKSLASH_HACK = '\\';var IMPORTANT_TOKEN = '!important';var UNDERSCORE_HACK = '_';var BANG_HACK = '!ie';function restoreFromOptimizing(properties, restoreCallback) {  var property;  var restored;  var current;  var i;  for (i = properties.length - 1; i >= 0; i--) {    property = properties[i];    if (property.unused) {      continue;    }    if (!property.dirty && !property.important && !property.hack) {      continue;    }    if (restoreCallback) {      restored = restoreCallback(property);      property.value = restored;    } else {      restored = property.value;    }    if (property.important) {      restoreImportant(property);    }    if (property.hack) {      restoreHack(property);    }    if ('all' in property) {      current = property.all[property.position];      current[1][1] = property.name;      current.splice(2, current.length - 1);      Array.prototype.push.apply(current, restored);    }  }}function restoreImportant(property) {  property.value[property.value.length - 1][1] += IMPORTANT_TOKEN;}function restoreHack(property) {  if (property.hack[0] == Hack.UNDERSCORE) {    property.name = UNDERSCORE_HACK + property.name;  } else if (property.hack[0] == Hack.ASTERISK) {    property.name = ASTERISK_HACK + property.name;  } else if (property.hack[0] == Hack.BACKSLASH) {    property.value[property.value.length - 1][1] += BACKSLASH_HACK + property.hack[1];  } else if (property.hack[0] == Hack.BANG) {    property.value[property.value.length - 1][1] += Marker.SPACE + BANG_HACK;  }}module.exports = restoreFromOptimizing;
 |