@@ -18,6 +18,8 @@ import pathToRegexp "github.com/soongo/path-to-regexp"
1818// pathToRegexp.PathToRegexp(path, tokens, options) // tokens and options can be nil
1919// pathToRegexp.Parse(path, options) // options can be nil
2020// pathToRegexp.Compile(path, options) // options can be nil
21+ // pathToRegexp.MustCompile(path, options) // like Compile but panics if the error is non-nil
22+ // pathToRegexp.Must(regexp, err) // wraps a call to a function returning (*regexp2.Regexp, error) and panics if the error is non-nil.
2123```
2224
2325- ** path** A string, array or slice of strings, or a regular expression with type * github.com/dlclark/regexp2.Regexp.
@@ -40,7 +42,7 @@ import pathToRegexp "github.com/soongo/path-to-regexp"
4042
4143``` go
4244var tokens []pathToRegexp.Token
43- regexp , err := pathToRegexp.PathToRegexp (" /foo/:bar" , &tokens, nil )
45+ regexp := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /foo/:bar" , &tokens, nil ) )
4446// regexp: ^\/foo\/([^\/]+?)(?:\/)?$
4547// tokens: [{name:"bar", prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:"[^\\/]+?"}}]
4648```
@@ -56,7 +58,7 @@ The path argument is used to define parameters and populate the list of tokens.
5658Named parameters are defined by prefixing a colon to the parameter name (` :foo ` ). By default, the parameter will match until the next prefix (e.g. ` [^/]+ ` ).
5759
5860``` go
59- regexp , err := pathToRegexp.PathToRegexp (" /:foo/:bar" , nil , nil )
61+ regexp := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /:foo/:bar" , nil , nil ) )
6062// tokens: [
6163// {name:"foo", prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:"[^\\/]+?"},
6264// {name:"bar", prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:"[^\\/]+?"}
@@ -79,7 +81,7 @@ fmt.Printf("%d, %q\n", match.Index, match)
7981Parameters can be suffixed with a question mark (` ? ` ) to make the parameter optional.
8082
8183``` go
82- regexp , err := pathToRegexp.PathToRegexp (" /:foo/:bar?" , nil , nil )
84+ regexp := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /:foo/:bar?" , nil , nil ) )
8385// tokens: [
8486// {name:"foo", prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:"[^\\/]+?"},
8587// {name:"bar", prefix:"/", delimiter:"/", optional:true, repeat:false, pattern:"[^\\/]+?"}
@@ -107,7 +109,7 @@ fmt.Printf("%d, %q\n", match.Index, match)
107109Parameters can be suffixed with an asterisk (` * ` ) to denote a zero or more parameter matches. The prefix is used for each match.
108110
109111``` go
110- regexp , err := pathToRegexp.PathToRegexp (" /:foo*" , nil , nil )
112+ regexp := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /:foo*" , nil , nil ) )
111113// tokens: [{name:"foo", prefix:"/", delimiter:"/", optional:true, repeat:true, pattern:"[^\\/]+?"}]
112114
113115match , err := regexp.FindStringMatch (" /" )
@@ -130,7 +132,7 @@ fmt.Printf("%d, %q\n", match.Index, match)
130132Parameters can be suffixed with a plus sign (` + ` ) to denote a one or more parameter matches. The prefix is used for each match.
131133
132134``` go
133- regexp , err := pathToRegexp.PathToRegexp (" /:foo+" , nil , nil )
135+ regexp := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /:foo+" , nil , nil ) )
134136// tokens: [{name:"foo", prefix:"/", delimiter:"/", optional:false, repeat:true, pattern:"[^\\/]+?"}]
135137
136138match , err := regexp.FindStringMatch (" /" )
@@ -150,7 +152,7 @@ fmt.Printf("%d, %q\n", match.Index, match)
150152It is possible to write an unnamed parameter that only consists of a matching group. It works the same as a named parameter, except it will be numerically indexed.
151153
152154``` go
153- regexp , err := pathToRegexp.PathToRegexp (" /:foo/(.*)" , nil , nil )
155+ regexp := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /:foo/(.*)" , nil , nil ) )
154156// tokens: [
155157// {name:"foo", prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:"[^\\/]+?"},
156158// {name:0, prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:".*"}
@@ -169,7 +171,7 @@ fmt.Printf("%d, %q\n", match.Index, match)
169171All parameters can have a custom regexp, which overrides the default match (` [^/]+ ` ). For example, you can match digits or names in a path:
170172
171173``` go
172- regexpNumbers , err := pathToRegexp.PathToRegexp (" /icon-:foo(\\ d+).png" , nil , nil )
174+ regexpNumbers := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /icon-:foo(\\ d+).png" , nil , nil ) )
173175// tokens: {name:"foo", prefix:"-", delimiter:"-", optional:false, repeat:false, pattern:"\\d+"}
174176
175177match , err := regexpNumbers.FindStringMatch (" /icon-123.png" )
@@ -182,7 +184,7 @@ match, err = regexpNumbers.FindStringMatch("/icon-abc.png")
182184fmt.Println (match)
183185// => nil
184186
185- regexpWord , err := pathToRegexp.PathToRegexp (" /(user|u)" , nil , nil )
187+ regexpWord := pathToRegexp.Must (pathToRegexp. PathToRegexp (" /(user|u)" , nil , nil ) )
186188// tokens: {name:0, prefix:"/", delimiter:"/", optional:false, repeat:false, pattern:"user|u"}
187189
188190match, err = regexpWord.FindStringMatch (" /u" )
@@ -222,7 +224,7 @@ fmt.Printf("%#v\n", tokens[2])
222224Path-To-RegExp exposes a compile function for transforming a string into a valid path.
223225
224226``` go
225- toPath , err := pathToRegexp.Compile (" /user/:id" , nil )
227+ toPath := pathToRegexp.MustCompile (" /user/:id" , nil )
226228
227229toPath (map [string ]int {" id" : 123 }, nil ) // => "/user/123"
228230toPath (map [string ]string {" id" : " café" }, nil ) // => "/user/caf%C3%A9"
@@ -237,12 +239,12 @@ toPath(map[string]string{"id": ":&"}, &Options{encode: func(value string, token
237239 return value
238240}}) // => /user/:&
239241
240- toPathRepeated , err := pathToRegexp.Compile (" /:segment+" , nil )
242+ toPathRepeated := pathToRegexp.MustCompile (" /:segment+" , nil )
241243
242244toPathRepeated (map [string ]string {" segment" : " foo" }, nil ) // => "/foo"
243245toPathRepeated (map [string ][]string {" segment" : {" a" , " b" , " c" }}, nil ) // => "/a/b/c"
244246
245- toPathRegexp , err := pathToRegexp.Compile (" /user/:id(\\ d+)" , nil )
247+ toPathRegexp := pathToRegexp.MustCompile (" /user/:id(\\ d+)" , nil )
246248
247249toPathRegexp (map [string ]int {" id" : 123 }, nil ) // => "/user/123"
248250toPathRegexp (map [string ]string {" id" : " 123" }, nil ) // => "/user/123"
0 commit comments