diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2017-06-14 00:42:15 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2017-06-14 00:42:15 -0400 |
| commit | d57d2c7d60fd5cfa43e83445675a87da9ce19d29 (patch) | |
| tree | 3b1e7220bb71d58a8ec14cca564a9f304d5d42c4 /funcs | |
| parent | 19c7f34bcacded8002fe561a728cfc05a2d6da06 (diff) | |
Enhancing indent function
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'funcs')
| -rw-r--r-- | funcs/strings.go | 35 | ||||
| -rw-r--r-- | funcs/strings_test.go | 8 |
2 files changed, 43 insertions, 0 deletions
diff --git a/funcs/strings.go b/funcs/strings.go index b78fe40c..c5117ccd 100644 --- a/funcs/strings.go +++ b/funcs/strings.go @@ -6,9 +6,12 @@ package funcs // in templates easier. import ( + "log" "sync" "strings" + + gompstrings "github.com/hairyhenderson/gomplate/strings" ) var ( @@ -31,6 +34,7 @@ func AddStringFuncs(f map[string]interface{}) { f["toUpper"] = StrNS().ToUpper f["toLower"] = StrNS().ToLower f["trimSpace"] = StrNS().TrimSpace + f["indent"] = StrNS().Indent // these are legacy aliases with non-pipelinable arg order f["contains"] = strings.Contains @@ -98,3 +102,34 @@ func (f *StringFuncs) ToLower(s string) string { func (f *StringFuncs) TrimSpace(s string) string { return strings.TrimSpace(s) } + +// Indent - +func (f *StringFuncs) Indent(args ...interface{}) string { + input, ok := args[len(args)-1].(string) + if !ok { + log.Fatal("Indent: invalid arguments") + } + indent := " " + width := 1 + switch len(args) { + case 2: + indent, ok = args[0].(string) + if !ok { + width, ok = args[0].(int) + if !ok { + log.Fatal("Indent: invalid arguments") + } + indent = " " + } + case 3: + width, ok = args[0].(int) + if !ok { + log.Fatal("Indent: invalid arguments") + } + indent, ok = args[1].(string) + if !ok { + log.Fatal("Indent: invalid arguments") + } + } + return gompstrings.Indent(width, indent, input) +} diff --git a/funcs/strings_test.go b/funcs/strings_test.go index 69bfabd9..2d2c7b63 100644 --- a/funcs/strings_test.go +++ b/funcs/strings_test.go @@ -14,3 +14,11 @@ func TestReplaceAll(t *testing.T) { assert.Equal(t, "ReplacedReplaced", sf.ReplaceAll("Orig", "Replaced", "OrigOrig")) } + +func TestIndent(t *testing.T) { + sf := &StringFuncs{} + assert.Equal(t, " foo\n bar\n baz", sf.Indent("foo\nbar\nbaz")) + assert.Equal(t, " foo\n bar\n baz", sf.Indent(" ", "foo\nbar\nbaz")) + assert.Equal(t, "---foo\n---bar\n---baz", sf.Indent(3, "-", "foo\nbar\nbaz")) + assert.Equal(t, " foo\n bar\n baz", sf.Indent(3, "foo\nbar\nbaz")) +} |
