MCPcopy
hub / github.com/postcss/autoprefixer / preprocess

Method preprocess

lib/prefixes.js:235–325  ·  view source on GitHub ↗

* Cache prefixes data to fast CSS processing

(selected)

Source from the content-addressed store, hash-verified

233 * Cache prefixes data to fast CSS processing
234 */
235 preprocess(selected) {
236 let add = {
237 '@supports': new Supports(Prefixes, this),
238 'selectors': []
239 }
240 for (let name in selected.add) {
241 let prefixes = selected.add[name]
242 if (name === '@keyframes' || name === '@viewport') {
243 add[name] = new AtRule(name, prefixes, this)
244 } else if (name === '@resolution') {
245 add[name] = new Resolution(name, prefixes, this)
246 } else if (this.data[name].selector) {
247 add.selectors.push(Selector.load(name, prefixes, this))
248 } else {
249 let props = this.data[name].props
250
251 if (props) {
252 let value = Value.load(name, prefixes, this)
253 for (let prop of props) {
254 if (!add[prop]) {
255 add[prop] = { values: [] }
256 }
257 add[prop].values.push(value)
258 }
259 } else {
260 let values = (add[name] && add[name].values) || []
261 add[name] = Declaration.load(name, prefixes, this)
262 add[name].values = values
263 }
264 }
265 }
266
267 let remove = { selectors: [] }
268 for (let name in selected.remove) {
269 let prefixes = selected.remove[name]
270 if (this.data[name].selector) {
271 let selector = Selector.load(name, prefixes)
272 for (let prefix of prefixes) {
273 remove.selectors.push(selector.old(prefix))
274 }
275 } else if (name === '@keyframes' || name === '@viewport') {
276 for (let prefix of prefixes) {
277 let prefixed = `@${prefix}${name.slice(1)}`
278 remove[prefixed] = { remove: true }
279 }
280 } else if (name === '@resolution') {
281 remove[name] = new Resolution(name, prefixes, this)
282 } else {
283 let props = this.data[name].props
284 if (props) {
285 let value = Value.load(name, [], this)
286 for (let prefix of prefixes) {
287 let old = value.old(prefix)
288 if (old) {
289 for (let prop of props) {
290 if (!remove[prop]) {
291 remove[prop] = {}
292 }

Callers 1

constructorMethod · 0.95

Calls 3

declMethod · 0.95
loadMethod · 0.80
oldMethod · 0.45

Tested by

no test coverage detected