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

Method insert

lib/hacks/grid-end.js:8–47  ·  view source on GitHub ↗

* Change repeating syntax for IE

(decl, prefix, prefixes, result)

Source from the content-addressed store, hash-verified

6 * Change repeating syntax for IE
7 */
8 insert(decl, prefix, prefixes, result) {
9 if (prefix !== '-ms-') return super.insert(decl, prefix, prefixes)
10
11 let clonedDecl = this.clone(decl)
12
13 let startProp = decl.prop.replace(/end$/, 'start')
14 let spanProp = prefix + decl.prop.replace(/end$/, 'span')
15
16 if (decl.parent.some(i => i.prop === spanProp)) {
17 return undefined
18 }
19
20 clonedDecl.prop = spanProp
21
22 if (decl.value.includes('span')) {
23 clonedDecl.value = decl.value.replace(/span\s/i, '')
24 } else {
25 let startDecl
26 decl.parent.walkDecls(startProp, d => {
27 startDecl = d
28 })
29 if (startDecl) {
30 if (isPureNumber(startDecl.value)) {
31 let value = Number(decl.value) - Number(startDecl.value) + ''
32 clonedDecl.value = value
33 } else {
34 return undefined
35 }
36 } else {
37 decl.warn(
38 result,
39 `Can not prefix ${decl.prop} (${startProp} is not found)`
40 )
41 }
42 }
43
44 decl.cloneBefore(clonedDecl)
45
46 return undefined
47 }
48}
49
50GridEnd.names = ['grid-row-end', 'grid-column-end']

Callers

nothing calls this directly

Calls 3

cloneBeforeMethod · 0.80
cloneMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected