package httprule
import (
"fmt"
"strings"
)
type template struct {
segments []segment
verb string
template string
}
type segment interface {
fmt .Stringer
compile() (ops []op )
}
type wildcard struct {}
type deepWildcard struct {}
type literal string
type variable struct {
path string
segments []segment
}
func (wildcard ) String () string {
return "*"
}
func (deepWildcard ) String () string {
return "**"
}
func (l literal ) String () string {
return string (l )
}
func (v variable ) String () string {
var segs []string
for _ , s := range v .segments {
segs = append (segs , s .String ())
}
return fmt .Sprintf ("{%s=%s}" , v .path , strings .Join (segs , "/" ))
}
func (t template ) String () string {
var segs []string
for _ , s := range t .segments {
segs = append (segs , s .String ())
}
str := strings .Join (segs , "/" )
if t .verb != "" {
str = fmt .Sprintf ("%s:%s" , str , t .verb )
}
return "/" + str
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .