Skip to content

Commit 355a87a

Browse files
authored
Fix #1446 (#1457)
* Fix #1446 * Test: cover the `utils#isPureNumber`
1 parent 37f26d6 commit 355a87a

File tree

7 files changed

+56
-4
lines changed

7 files changed

+56
-4
lines changed

lib/hacks/grid-end.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
let Declaration = require('../declaration')
2+
let { isPureNumber } = require('../utils')
23

34
class GridEnd extends Declaration {
45
/**
@@ -26,8 +27,12 @@ class GridEnd extends Declaration {
2627
startDecl = d
2728
})
2829
if (startDecl) {
29-
let value = Number(decl.value) - Number(startDecl.value) + ''
30-
clonedDecl.value = value
30+
if (isPureNumber(startDecl.value)) {
31+
let value = Number(decl.value) - Number(startDecl.value) + ''
32+
clonedDecl.value = value
33+
} else {
34+
return undefined
35+
}
3136
} else {
3237
decl.warn(
3338
result,

lib/hacks/grid-start.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class GridStart extends Declaration {
66
*/
77
check(decl) {
88
let value = decl.value
9-
return !value.includes('/') || value.includes('span')
9+
return !value.includes('/') && !value.includes('span')
1010
}
1111

1212
/**

lib/utils.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,18 @@ module.exports.splitSelector = function (selector) {
7676
})
7777
})
7878
}
79+
80+
/**
81+
* Return true if a given value only contains numbers.
82+
* @param {*} value
83+
* @returns {boolean}
84+
*/
85+
module.exports.isPureNumber = function (value) {
86+
if (typeof value === 'number') {
87+
return true
88+
}
89+
if (typeof value === 'string') {
90+
return /^[0-9]+$/.test(value)
91+
}
92+
return false
93+
}

test/cases/grid.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,9 @@
202202
grid-template-rows: 1fr;
203203
grid-template-columns: [content] 1fr;
204204
}
205+
206+
/** https://github.com/postcss/autoprefixer/issues/1446 */
207+
.issue-1446 {
208+
grid-row-start: span 3;
209+
grid-row-end: 5;
210+
}

test/cases/grid.disabled.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,3 +208,9 @@
208208
grid-template-rows: 1fr;
209209
grid-template-columns: [content] 1fr;
210210
}
211+
212+
/** https://github.com/postcss/autoprefixer/issues/1446 */
213+
.issue-1446 {
214+
grid-row-start: span 3;
215+
grid-row-end: 5;
216+
}

test/cases/grid.out.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,3 +283,9 @@
283283
-ms-grid-row: 1;
284284
-ms-grid-column: 2;
285285
}
286+
287+
/** https://github.com/postcss/autoprefixer/issues/1446 */
288+
.issue-1446 {
289+
grid-row-start: span 3;
290+
grid-row-end: 5;
291+
}

test/utils.test.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,18 @@ test('splits complex selectors into an array', () => {
111111
])
112112
})
113113

114-
test.run()
114+
test('isPureNumber - number', () => {
115+
equal(utils.isPureNumber(42), true)
116+
})
117+
118+
test('isPureNumber - string', () => {
119+
equal(utils.isPureNumber('42'), true)
120+
equal(utils.isPureNumber('autoprefixer'), false)
121+
equal(utils.isPureNumber(''), false)
122+
})
123+
124+
test.run('isPureNumber - neither number nor string', () => {
125+
equal(utils.isPureNumber({}), false)
126+
equal(utils.isPureNumber(undefined), false)
127+
equal(utils.isPureNumber(true), false)
128+
})

0 commit comments

Comments
 (0)