diff --git a/cssesc.js b/cssesc.js index 1c0928e..2e28abc 100644 --- a/cssesc.js +++ b/cssesc.js @@ -72,7 +72,10 @@ var cssesc = function cssesc(string, options) { } if (isIdentifier) { - if (/^-[-\d]/.test(output)) { + if (output == '-') { + // A lone `-` is not a valid identifier; escape it. + output = '\\-'; + } else if (/^-[-\d]/.test(output)) { output = '\\-' + output.slice(1); } else if (/\d/.test(firstChar)) { output = '\\3' + firstChar + ' ' + output.slice(1); diff --git a/src/cssesc.js b/src/cssesc.js index adeac60..f0f3c76 100644 --- a/src/cssesc.js +++ b/src/cssesc.js @@ -83,7 +83,10 @@ const cssesc = (string, options) => { } if (isIdentifier) { - if (/^-[-\d]/.test(output)) { + if (output == '-') { + // A lone `-` is not a valid identifier; escape it. + output = '\\-'; + } else if (/^-[-\d]/.test(output)) { output = '\\-' + output.slice(1); } else if (/\d/.test(firstChar)) { output = '\\3' + firstChar + ' ' + output.slice(1); diff --git a/tests/tests.js b/tests/tests.js index 6cabb6d..0e105f2 100644 --- a/tests/tests.js +++ b/tests/tests.js @@ -25,6 +25,16 @@ describe('common usage', () => { '\\--foo', '--foo with `isIdentifier: true`' ); + assert.equal( + cssesc('-', { 'isIdentifier': false }), + '-', + 'lone - with `isIdentifier: false`' + ); + assert.equal( + cssesc('-', { 'isIdentifier': true }), + '\\-', + 'lone - with `isIdentifier: true`' + ); assert.equal( cssesc('-0foo', { 'isIdentifier': false }), '-0foo',