UNPKG

alinea

Version:
30 lines (28 loc) 830 B
// node_modules/regexparam/dist/index.mjs function parse(str, loose) { if (str instanceof RegExp) return { keys: false, pattern: str }; var c, o, tmp, ext, keys = [], pattern = "", arr = str.split("/"); arr[0] || arr.shift(); while (tmp = arr.shift()) { c = tmp[0]; if (c === "*") { keys.push("wild"); pattern += "/(.*)"; } else if (c === ":") { o = tmp.indexOf("?", 1); ext = tmp.indexOf(".", 1); keys.push(tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length)); pattern += !!~o && !~ext ? "(?:/([^/]+?))?" : "/([^/]+?)"; if (!!~ext) pattern += (!!~o ? "?" : "") + "\\" + tmp.substring(ext); } else { pattern += "/" + tmp; } } return { keys, pattern: new RegExp("^" + pattern + (loose ? "(?=$|/)" : "/?$"), "i") }; } export { parse };