31 lines
697 B
Go
31 lines
697 B
Go
package url
|
|
|
|
import "net/url"
|
|
import "html/template"
|
|
import "git.tebibyte.media/sashakoshka/step"
|
|
|
|
var _ step.FuncProvider = new(Provider)
|
|
|
|
// Provider provides URL functions.
|
|
type Provider struct {
|
|
|
|
}
|
|
|
|
// FuncMap fulfills the step.FuncProvider interface.
|
|
func (this *Provider) FuncMap () template.FuncMap {
|
|
return template.FuncMap {
|
|
"parseQuery": funcParseQuery,
|
|
}
|
|
}
|
|
|
|
func funcParseQuery (query string) url.Values {
|
|
// wrapped here because the query might contain all sorts of nonsense,
|
|
// and returning an error in a template function causes everything to
|
|
// stop rather ungracefully
|
|
values, err := url.ParseQuery(query)
|
|
if err != nil {
|
|
values = make(url.Values)
|
|
}
|
|
return values
|
|
}
|