in packages/route-manifest/src/index.ts [258:322]
export function createRoutePath(routeId: string): string | undefined {
let result = '';
let rawSegmentBuffer = '';
let inEscapeSequence = 0;
let skipSegment = false;
const partialRouteId = removeLastLayoutStrFromId(routeId);
for (let i = 0; i < partialRouteId.length; i++) {
const char = partialRouteId.charAt(i);
const lastChar = i > 0 ? partialRouteId.charAt(i - 1) : undefined;
const nextChar = i < partialRouteId.length - 1 ? partialRouteId.charAt(i + 1) : undefined;
const isNewEscapeSequence = !inEscapeSequence && char === escapeStart && lastChar !== escapeStart;
const isCloseEscapeSequence = inEscapeSequence && char === escapeEnd && nextChar !== escapeEnd;
if (skipSegment) {
if (char === '/' || char === '.' || char === path.win32.sep) {
skipSegment = false;
}
continue;
}
// We try to get the string in the escape sequence. For example, try to get the `index` string in `[index]`.
if (isNewEscapeSequence) {
inEscapeSequence++;
continue;
}
if (isCloseEscapeSequence) {
inEscapeSequence--;
continue;
}
if (inEscapeSequence) {
result += char;
continue;
}
if (char === '/' || char === path.win32.sep || char === '.') {
if (rawSegmentBuffer === 'index' && result.endsWith('index')) {
result = result.replace(/\/?index$/, '');
} else {
result += '/';
}
rawSegmentBuffer = '';
continue;
}
rawSegmentBuffer += char;
if (char === '$') {
result += typeof nextChar === 'undefined' ? '*' : ':';
continue;
}
result += char;
}
if (rawSegmentBuffer === 'index' && result.endsWith('index')) {
result = result.replace(/\/?index$/, '');
}
return result || undefined;
}