Skip to content

Instantly share code, notes, and snippets.

@teepark
Last active May 24, 2016 22:05
Show Gist options
  • Save teepark/390374afc6984d4032b32dcba10953dd to your computer and use it in GitHub Desktop.
Save teepark/390374afc6984d4032b32dcba10953dd to your computer and use it in GitHub Desktop.
whitespace-eating tags backport wrapper
// +build !go1.6
package main
import (
"regexp"
"text/template"
)
func parseTemplate(tmpl *template.Template, input string) (*template.Template, error) {
input = wsPrefix.ReplaceAllString(input, "{{ ")
input = wsSuffix.ReplaceAllString(input, " }}")
return tmpl.Parse(input)
}
var (
wsPrefix = regexp.MustCompile(`\s*{{- `)
wsSuffix = regexp.MustCompile(` -}}\s*`)
)
// +build go1.6
package main
import "text/template"
func parseTemplate(tmpl *template.Template, input string) (*template.Template, error) {
return tmpl.Parse(input)
}
package main
import (
"bytes"
"testing"
"text/template"
)
func TestWhitespaceRemoved(t *testing.T) {
tmpl, err := parseTemplate(template.New(""), "\t{{- .VAL -}} \n , text")
if err != nil {
t.Fatalf("error parsing template: %s", err)
}
buf := new(bytes.Buffer)
err = tmpl.Execute(buf, map[string]string{"VAL": "value"})
if err != nil {
t.Errorf("execute error: %s", err)
}
expected := "value, text"
got := buf.String()
if got != expected {
t.Errorf("rendered string: expected %q, got %q", expected, got)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment