summaryrefslogtreecommitdiff
path: root/funcs
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2017-06-14 00:42:15 -0400
committerDave Henderson <dhenderson@gmail.com>2017-06-14 00:42:15 -0400
commitd57d2c7d60fd5cfa43e83445675a87da9ce19d29 (patch)
tree3b1e7220bb71d58a8ec14cca564a9f304d5d42c4 /funcs
parent19c7f34bcacded8002fe561a728cfc05a2d6da06 (diff)
Enhancing indent function
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'funcs')
-rw-r--r--funcs/strings.go35
-rw-r--r--funcs/strings_test.go8
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"))
+}