Add a chomp function.

- Mostly useful in pipelines.
This commit is contained in:
Austin Ziegler 2014-12-09 20:37:51 -05:00 committed by bep
parent 14e93de8a1
commit 6033abe1e7
2 changed files with 19 additions and 0 deletions

View file

@ -252,6 +252,11 @@ Convert all characters in string to titlecase.
e.g. `{{title "BatMan"}}` → "Batman"
### chomp
Removes any trailing newline characters. Useful in a pipeline to remove newlines added by other processing (including `markdownify`).
e.g., `{{chomp "<p>Blockhead</p>\n"``"<p>Blockhead</p>"`
### highlight
Take a string of code and a language, uses Pygments to return the syntax
highlighted code in HTML. Used in the [highlight

View file

@ -29,6 +29,7 @@ import (
"os"
"path/filepath"
"reflect"
"regexp"
"sort"
"strconv"
"strings"
@ -37,6 +38,7 @@ import (
var localTemplates *template.Template
var tmpl Template
var funcMap template.FuncMap
var chompRegexp *regexp.Regexp
type Template interface {
ExecuteTemplate(wr io.Writer, name string, data interface{}) error
@ -667,6 +669,15 @@ func RelRef(page interface{}, ref string) template.HTML {
return refPage(page, ref, "RelRef")
}
func Chomp(text interface{}) (string, error) {
s, err := cast.ToStringE(text)
if err != nil {
return "", err
}
return chompRegexp.ReplaceAllString(s, ""), nil
}
func SafeHtml(text string) template.HTML {
return template.HTML(text)
}
@ -1022,5 +1033,8 @@ func init() {
"partial": Partial,
"ref": Ref,
"relref": RelRef,
"chomp": Chomp,
}
chompRegexp = regexp.MustCompile("[\r\n]+$")
}