mirror of
https://github.com/golang/go
synced 2024-11-12 09:50:21 -07:00
exp/template: url filter.
R=r CC=golang-dev https://golang.org/cl/4837063
This commit is contained in:
parent
ec010fddb5
commit
a09ba8b638
@ -244,6 +244,9 @@ Predefined global functions are named as follows.
|
||||
An alias for fmt.Sprintf
|
||||
println
|
||||
An alias for fmt.Sprintln
|
||||
url
|
||||
Returns the escaped value of the textual representation of
|
||||
its arguments in a form suitable for embedding in a URL.
|
||||
|
||||
The boolean functions take any zero value to be false and a non-zero value to
|
||||
be true.
|
||||
|
@ -283,6 +283,9 @@ var execTests = []execTest{
|
||||
// JavaScript.
|
||||
{"js", `{{js .}}`, `It\'d be nice.`, `It'd be nice.`, true},
|
||||
|
||||
// URL.
|
||||
{"url", `{{"http://www.example.org/"|url}}`, "http%3A%2F%2Fwww.example.org%2F", nil, true},
|
||||
|
||||
// Booleans
|
||||
{"not", "{{not true}} {{not false}}", "false true", nil, true},
|
||||
{"and", "{{and false 0}} {{and 1 0}} {{and 0 true}} {{and 1 1}}", "false 0 0 1", nil, true},
|
||||
|
@ -7,6 +7,7 @@ package template
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"http"
|
||||
"io"
|
||||
"os"
|
||||
"reflect"
|
||||
@ -31,6 +32,7 @@ var funcs = map[string]reflect.Value{
|
||||
"print": reflect.ValueOf(fmt.Sprint),
|
||||
"printf": reflect.ValueOf(fmt.Sprintf),
|
||||
"println": reflect.ValueOf(fmt.Sprintln),
|
||||
"url": reflect.ValueOf(URLEscaper),
|
||||
}
|
||||
|
||||
// addFuncs adds to values the functions in funcs, converting them to reflect.Values.
|
||||
@ -318,3 +320,16 @@ func JSEscaper(args ...interface{}) string {
|
||||
}
|
||||
return JSEscapeString(s)
|
||||
}
|
||||
|
||||
// URLEscaper returns the escaped value of the textual representation of its
|
||||
// arguments in a form suitable for embedding in a URL.
|
||||
func URLEscaper(args ...interface{}) string {
|
||||
s, ok := "", false
|
||||
if len(args) == 1 {
|
||||
s, ok = args[0].(string)
|
||||
}
|
||||
if !ok {
|
||||
s = fmt.Sprint(args...)
|
||||
}
|
||||
return http.URLEscape(s)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user