fix: migrate placeholders after encoded path separators
This commit is contained in:
@@ -11,6 +11,9 @@ const excluded = new Set([".git", "node_modules", "dist", "build", "out", ".next
|
||||
".venv", "venv", "__pycache__", "target", "vendor", "coverage", ".cache", ".turbo",
|
||||
".idea", ".vscode", "Pods", "DerivedData"]);
|
||||
const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
||||
// In URL-kodierten Dateinamen steht nach %2f unmittelbar ein "f" vor dem Platzhalter.
|
||||
// Das ist ein Pfadtrenner, kein angrenzender Buchstabe des Bezeichners.
|
||||
const strictPrefix = "(?:(?<![\\p{L}\\p{N}])|(?<=%2[fF]))";
|
||||
const hasSeparator = (value) => /[^\p{L}\p{N}]/u.test(value);
|
||||
const shape = (value) => !/\p{L}/u.test(value) ? "mixed"
|
||||
: value === value.toUpperCase() ? "upper" : value === value.toLowerCase() ? "lower" : "mixed";
|
||||
@@ -52,7 +55,7 @@ export function createConverter(manifest, globalTerms = []) {
|
||||
})).sort((a, b) => b.needle.length - a.needle.length || a.needle.localeCompare(b.needle));
|
||||
const lookup = new Map(needles.map((item) => [item.needle, item]));
|
||||
const pattern = needles.length ? new RegExp(needles.map((item) => item.strict
|
||||
? `(?<![\\p{L}\\p{N}])${escapeRegex(item.needle)}(?![\\p{L}\\p{N}])`
|
||||
? `${strictPrefix}${escapeRegex(item.needle)}(?![\\p{L}\\p{N}])`
|
||||
: escapeRegex(item.needle)).join("|"), "gu") : null;
|
||||
const mapping = {};
|
||||
const matchModes = {};
|
||||
|
||||
Reference in New Issue
Block a user