Skip to content

Commit f38ba36

Browse files
committed
refactor: add reversedChartMapper support
1 parent 6bd4494 commit f38ba36

File tree

5 files changed

+289
-205
lines changed

5 files changed

+289
-205
lines changed

src/utils.js

+18-2
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,10 @@ function normalizePath(file) {
259259
return path.sep === "\\" ? file.replace(/\\/g, "/") : file;
260260
}
261261

262+
const reversedChartMapper = {};
263+
262264
// eslint-disable-next-line no-control-regex
263-
const filenameReservedRegex = /[<>:"/\\|?*\s]/g;
265+
const filenameReservedRegex = /([<>:"/\\|?*\s])/g;
264266
// eslint-disable-next-line no-control-regex
265267
const reControlChars = /[\u0000-\u001f\u0080-\u009f]/g;
266268

@@ -270,7 +272,21 @@ function escapeLocalIdent(localident) {
270272
localident
271273
// For `[hash]` placeholder
272274
.replace(/^((-?[0-9])|--)/, "_$1")
273-
.replace(filenameReservedRegex, "-")
275+
.replace(filenameReservedRegex, (_, $1) => {
276+
// normalize Windows path `\` as unix `/` for constancy
277+
const char = $1 === "\\" && path.sep === "\\" ? "/" : $1;
278+
279+
if (reversedChartMapper[char]) {
280+
return reversedChartMapper[char];
281+
}
282+
283+
const hex = char.charCodeAt(0).toString(16).toUpperCase();
284+
const escaped = `\\C${hex}`;
285+
286+
reversedChartMapper[char] = escaped;
287+
288+
return escaped;
289+
})
274290
.replace(reControlChars, "-")
275291
.replace(/\./g, "-"),
276292
);

0 commit comments

Comments
 (0)