123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- var compactable = require('./compactable');
- var BACKSLASH_HACK = '\\9';
- var IMPORTANT_TOKEN = '!important';
- var STAR_HACK = '*';
- var UNDERSCORE_HACK = '_';
- var BANG_HACK = '!ie';
- function restoreImportant(property) {
- property.value[property.value.length - 1][0] += IMPORTANT_TOKEN;
- }
- function restoreHack(property) {
- if (property.hack == 'underscore')
- property.name = UNDERSCORE_HACK + property.name;
- else if (property.hack == 'star')
- property.name = STAR_HACK + property.name;
- else if (property.hack == 'backslash')
- property.value[property.value.length - 1][0] += BACKSLASH_HACK;
- else if (property.hack == 'bang')
- property.value[property.value.length - 1][0] += ' ' + BANG_HACK;
- }
- function restoreFromOptimizing(properties, simpleMode) {
- for (var i = properties.length - 1; i >= 0; i--) {
- var property = properties[i];
- var descriptor = compactable[property.name];
- var restored;
- if (property.unused)
- continue;
- if (!property.dirty && !property.important && !property.hack)
- continue;
- if (!simpleMode && descriptor && descriptor.shorthand) {
- restored = descriptor.restore(property, compactable);
- property.value = restored;
- } else {
- restored = property.value;
- }
- if (property.important)
- restoreImportant(property);
- if (property.hack)
- restoreHack(property);
- if (!('all' in property))
- continue;
- var current = property.all[property.position];
- current[0][0] = property.name;
- current.splice(1, current.length - 1);
- Array.prototype.push.apply(current, restored);
- }
- }
- module.exports = restoreFromOptimizing;
|