Explorar o código

When the path is a plain string, there is no need to create a pattern

Shaun %!s(int64=2) %!d(string=hai) anos
pai
achega
b748ea15aa
Modificáronse 1 ficheiros con 14 adicións e 11 borrados
  1. 14 11
      src/pattern.js

+ 14 - 11
src/pattern.js

@@ -1,19 +1,22 @@
 export class URLPattern {
   static build (path) {
+    if (path.indexOf(':') === -1) {
+      return path
+    }
     const pattern = path.split('/').map(e => {
-      if (e.startsWith(':')) {
-        let field = e.substr(1)
-        let fieldPattern = '[^/]+'
-        const ef = field.match(/\((.+?)\)/)
-        if (ef) {
-          field = field.substr(0, field.indexOf('('))
-          fieldPattern = ef[1]
-        }
-        return `(?<${field}>${fieldPattern})`
+      if (!e.startsWith(':')) {
+        return e
+      }
+      let field = e.substr(1)
+      let fieldPattern = '[^/]+'
+      const ef = field.match(/\((.+?)\)/)
+      if (ef) {
+        field = field.substr(0, field.indexOf('('))
+        fieldPattern = ef[1]
       }
-      return e
+      return `(?<${field}>${fieldPattern})`
     }).join('/')
-    return pattern.indexOf('(?') > -1 ? new RegExp(`^${pattern}$`) : pattern
+    return new RegExp(`^${pattern}$`)
   }
 
   static match (path, pattern) {