/**
 * Converts a path specification into a regular expression.
 * Originally from the server-side sibling of this (client-side) router.
 * @param	{string}	pathspec	The path specification to convert.
 * @param	{Boolean}	verbose		Optional. Whether to be verbose and log some stuff to the console. Default: false
 * @return	{RegExp}	The resulting regular expression
 */
export default function pathspec_to_regex(pathspec, verbose = false) {
	if(pathspec == "*") // Support wildcards
		return { regex: /^/, tokens: [] };
	
	let tokens = [];
	let regex = new RegExp("^" + pathspec.replace(/::?([a-zA-Z0-9\-_]+)/g, (substr/*, index, template (not used)*/) => {
		tokens.push(substr.replace(/:/g, ""));
		
		// FUTURE: We could add optional param support here too
		if(substr.startsWith("::"))
			return `(.+)`;
		else
			return `([^\/]+)`; 
	}) + "$", "i");
	
	if(verbose) console.info("[router/verbose] Created regex", regex);
	
	return { regex, tokens };
}