export function parse()

in src/shared/lib/regexparam.ts [48:72]


export function parse(str: string, loose?: boolean) {
	// eslint-disable-next-line functional/no-let -- based on library code
	let tmp,
		pattern = '';
	const arr = str.split('/');
	arr[0] || arr.shift();

	while ((tmp = arr.shift())) {
		const current = tmp[0];
		if (current === '*') {
			pattern += '/(.*)';
		} else if (current === ':') {
			const optional = tmp.indexOf('?', 1);
			const ext = tmp.indexOf('.', 1);
			pattern += !!~optional && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';
			if (~ext) pattern += (~optional ? '?' : '') + '\\' + tmp.substring(ext);
		} else {
			pattern += '/' + tmp;
		}
	}

	return {
		pattern: new RegExp('^' + pattern + (loose ? '(?=$|/)' : '/?$'), 'i'),
	};
}