UNPKG

e-lado

Version:

[![CircleCI](https://circleci.com/gh/sharetribe/sharetribe/tree/master.svg?style=svg)](https://circleci.com/gh/sharetribe/sharetribe/tree/master) [![Dependency Status](https://gemnasium.com/sharetribe/sharetribe.png)](https://gemnasium.com/sharetribe/shar

70 lines (55 loc) 1.69 kB
var Hack = require('./hack'); var Marker = require('../tokenizer/marker'); var ASTERISK_HACK = '*'; var BACKSLASH_HACK = '\\9'; 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 == Hack.UNDERSCORE) { property.name = UNDERSCORE_HACK + property.name; } else if (property.hack == Hack.ASTERISK) { property.name = ASTERISK_HACK + property.name; } else if (property.hack == Hack.BACKSLASH) { property.value[property.value.length - 1][1] += BACKSLASH_HACK; } else if (property.hack == Hack.BANG) { property.value[property.value.length - 1][1] += Marker.SPACE + BANG_HACK; } } module.exports = restoreFromOptimizing;