Skip to content

Commit

Permalink
Fix #1446 (#1457)
Browse files Browse the repository at this point in the history
* Fix #1446

* Test: cover the `utils#isPureNumber`
  • Loading branch information
SukkaW committed Apr 23, 2022
1 parent 37f26d6 commit 355a87a
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 4 deletions.
9 changes: 7 additions & 2 deletions lib/hacks/grid-end.js
@@ -1,4 +1,5 @@
let Declaration = require('../declaration')
let { isPureNumber } = require('../utils')

class GridEnd extends Declaration {
/**
Expand Down Expand Up @@ -26,8 +27,12 @@ class GridEnd extends Declaration {
startDecl = d
})
if (startDecl) {
let value = Number(decl.value) - Number(startDecl.value) + ''
clonedDecl.value = value
if (isPureNumber(startDecl.value)) {
let value = Number(decl.value) - Number(startDecl.value) + ''
clonedDecl.value = value
} else {
return undefined
}
} else {
decl.warn(
result,
Expand Down
2 changes: 1 addition & 1 deletion lib/hacks/grid-start.js
Expand Up @@ -6,7 +6,7 @@ class GridStart extends Declaration {
*/
check(decl) {
let value = decl.value
return !value.includes('/') || value.includes('span')
return !value.includes('/') && !value.includes('span')
}

/**
Expand Down
15 changes: 15 additions & 0 deletions lib/utils.js
Expand Up @@ -76,3 +76,18 @@ module.exports.splitSelector = function (selector) {
})
})
}

/**
* Return true if a given value only contains numbers.
* @param {*} value
* @returns {boolean}
*/
module.exports.isPureNumber = function (value) {
if (typeof value === 'number') {
return true
}
if (typeof value === 'string') {
return /^[0-9]+$/.test(value)
}
return false
}
6 changes: 6 additions & 0 deletions test/cases/grid.css
Expand Up @@ -202,3 +202,9 @@
grid-template-rows: 1fr;
grid-template-columns: [content] 1fr;
}

/** https://github.com/postcss/autoprefixer/issues/1446 */
.issue-1446 {
grid-row-start: span 3;
grid-row-end: 5;
}
6 changes: 6 additions & 0 deletions test/cases/grid.disabled.css
Expand Up @@ -208,3 +208,9 @@
grid-template-rows: 1fr;
grid-template-columns: [content] 1fr;
}

/** https://github.com/postcss/autoprefixer/issues/1446 */
.issue-1446 {
grid-row-start: span 3;
grid-row-end: 5;
}
6 changes: 6 additions & 0 deletions test/cases/grid.out.css
Expand Up @@ -283,3 +283,9 @@
-ms-grid-row: 1;
-ms-grid-column: 2;
}

/** https://github.com/postcss/autoprefixer/issues/1446 */
.issue-1446 {
grid-row-start: span 3;
grid-row-end: 5;
}
16 changes: 15 additions & 1 deletion test/utils.test.js
Expand Up @@ -111,4 +111,18 @@ test('splits complex selectors into an array', () => {
])
})

test.run()
test('isPureNumber - number', () => {
equal(utils.isPureNumber(42), true)
})

test('isPureNumber - string', () => {
equal(utils.isPureNumber('42'), true)
equal(utils.isPureNumber('autoprefixer'), false)
equal(utils.isPureNumber(''), false)
})

test.run('isPureNumber - neither number nor string', () => {
equal(utils.isPureNumber({}), false)
equal(utils.isPureNumber(undefined), false)
equal(utils.isPureNumber(true), false)
})

0 comments on commit 355a87a

Please sign in to comment.