diff options
| -rw-r--r-- | README.md | 18 | ||||
| -rw-r--r-- | gomplate.go | 3 | ||||
| -rw-r--r-- | stringfunc.go | 10 | ||||
| -rw-r--r-- | stringfunc_test.go | 16 |
4 files changed, 46 insertions, 1 deletions
@@ -46,6 +46,7 @@ Gomplate is an alternative that will let you process templates which also includ - [`slice`](#slice) - [`split`](#split) - [`splitN`](#splitn) + - [`replaceAll`](#replaceAll) - [`title`](#title) - [`toLower`](#tolower) - [`toUpper`](#toupper) @@ -355,6 +356,23 @@ $ gomplate -i '{{ range splitN "foo:bar:baz" ":" 2 }}{{.}}{{end}}' foo bar:baz ``` +#### `replaceAll` + +Replaces all occurrences of a given string with another. + +##### Example + +```console +$ gomplate -i '{{ replaceAll "." "-" "172.21.1.42" }}' +172-21-1-42 +``` + +##### Example (with pipeline) + +```console +$ gomplate -i '{{ "172.21.1.42" | replaceAll "." "-" }}' +172-21-1-42 +``` #### `title` diff --git a/gomplate.go b/gomplate.go index 28e623ab..c2490e81 100644 --- a/gomplate.go +++ b/gomplate.go @@ -4,7 +4,6 @@ import ( "io" "log" "net/url" - "strings" "text/template" @@ -39,6 +38,7 @@ func (g *Gomplate) RunTemplate(text string, out io.Writer) { func NewGomplate(data *Data, leftDelim, rightDelim string) *Gomplate { env := &Env{} typeconv := &TypeConv{} + stringfunc := &stringFunc{} ec2meta := aws.NewEc2Meta() ec2info := aws.NewEc2Info() return &Gomplate{ @@ -65,6 +65,7 @@ func NewGomplate(data *Data, leftDelim, rightDelim string) *Gomplate { "contains": strings.Contains, "hasPrefix": strings.HasPrefix, "hasSuffix": strings.HasSuffix, + "replaceAll": stringfunc.replaceAll, "split": strings.Split, "splitN": strings.SplitN, "title": strings.Title, diff --git a/stringfunc.go b/stringfunc.go new file mode 100644 index 00000000..ff51b80a --- /dev/null +++ b/stringfunc.go @@ -0,0 +1,10 @@ +package main + +import "strings" + +// stringFunc - string manipulation function wrappers +type stringFunc struct{} + +func (t stringFunc) replaceAll(old, new, s string) string { + return strings.Replace(s, old, new, -1) +} diff --git a/stringfunc_test.go b/stringfunc_test.go new file mode 100644 index 00000000..62d95dcb --- /dev/null +++ b/stringfunc_test.go @@ -0,0 +1,16 @@ +package main + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestReplaceAll(t *testing.T) { + sf := &stringFunc{} + + assert.Equal(t, "Replaced", + sf.replaceAll("Orig", "Replaced", "Orig")) + assert.Equal(t, "ReplacedReplaced", + sf.replaceAll("Orig", "Replaced", "OrigOrig")) +} |
