Skip to content

Commit

Permalink
Merge pull request #293 from hairyhenderson/relax-inputs
Browse files Browse the repository at this point in the history
Relax inputs for many functions
  • Loading branch information
hairyhenderson authored Apr 19, 2018
2 parents 3813bd3 + e142ace commit 308a2f3
Show file tree
Hide file tree
Showing 10 changed files with 115 additions and 131 deletions.
32 changes: 3 additions & 29 deletions funcs/base64.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package funcs

import (
"fmt"
"strconv"
"sync"

"github.com/hairyhenderson/gomplate/base64"
"github.com/hairyhenderson/gomplate/conv"
)

var (
Expand Down Expand Up @@ -35,7 +34,7 @@ func (f *Base64Funcs) Encode(in interface{}) string {

// Decode -
func (f *Base64Funcs) Decode(in interface{}) string {
return string(base64.Decode(toString(in)))
return string(base64.Decode(conv.ToString(in)))
}

type byter interface {
Expand All @@ -55,30 +54,5 @@ func toBytes(in interface{}) []byte {
if s, ok := in.(string); ok {
return []byte(s)
}
return []byte(fmt.Sprintf("%s", in))
}

func toString(in interface{}) string {
if s, ok := in.(string); ok {
return s
}
if s, ok := in.(fmt.Stringer); ok {
return s.String()
}
if i, ok := in.(int); ok {
return strconv.Itoa(i)
}
if u, ok := in.(uint64); ok {
return strconv.FormatUint(u, 10)
}
if f, ok := in.(float64); ok {
return strconv.FormatFloat(f, 'f', -1, 64)
}
if b, ok := in.(bool); ok {
return strconv.FormatBool(b)
}
if in == nil {
return "nil"
}
return fmt.Sprintf("%s", in)
return []byte(conv.ToString(in))
}
24 changes: 12 additions & 12 deletions funcs/conv.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ func AddConvFuncs(f map[string]interface{}) {
type ConvFuncs struct{}

// Bool -
func (f *ConvFuncs) Bool(s string) bool {
return conv.Bool(s)
func (f *ConvFuncs) Bool(s interface{}) bool {
return conv.Bool(conv.ToString(s))
}

// Slice -
Expand All @@ -53,28 +53,28 @@ func (f *ConvFuncs) Has(in interface{}, key string) bool {
}

// ParseInt -
func (f *ConvFuncs) ParseInt(s string, base, bitSize int) int64 {
return conv.MustParseInt(s, base, bitSize)
func (f *ConvFuncs) ParseInt(s interface{}, base, bitSize int) int64 {
return conv.MustParseInt(conv.ToString(s), base, bitSize)
}

// ParseFloat -
func (f *ConvFuncs) ParseFloat(s string, bitSize int) float64 {
return conv.MustParseFloat(s, bitSize)
func (f *ConvFuncs) ParseFloat(s interface{}, bitSize int) float64 {
return conv.MustParseFloat(conv.ToString(s), bitSize)
}

// ParseUint -
func (f *ConvFuncs) ParseUint(s string, base, bitSize int) uint64 {
return conv.MustParseUint(s, base, bitSize)
func (f *ConvFuncs) ParseUint(s interface{}, base, bitSize int) uint64 {
return conv.MustParseUint(conv.ToString(s), base, bitSize)
}

// Atoi -
func (f *ConvFuncs) Atoi(s string) int {
return conv.MustAtoi(s)
func (f *ConvFuncs) Atoi(s interface{}) int {
return conv.MustAtoi(conv.ToString(s))
}

// URL -
func (f *ConvFuncs) URL(s string) (*url.URL, error) {
return url.Parse(s)
func (f *ConvFuncs) URL(s interface{}) (*url.URL, error) {
return url.Parse(conv.ToString(s))
}

// ToInt64 -
Expand Down
21 changes: 11 additions & 10 deletions funcs/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package funcs
import (
"sync"

"github.com/hairyhenderson/gomplate/conv"
"github.com/hairyhenderson/gomplate/data"
)

Expand Down Expand Up @@ -45,28 +46,28 @@ func AddDataFuncs(f map[string]interface{}, d *data.Data) {
type DataFuncs struct{}

// JSON -
func (f *DataFuncs) JSON(in string) map[string]interface{} {
return data.JSON(in)
func (f *DataFuncs) JSON(in interface{}) map[string]interface{} {
return data.JSON(conv.ToString(in))
}

// JSONArray -
func (f *DataFuncs) JSONArray(in string) []interface{} {
return data.JSONArray(in)
func (f *DataFuncs) JSONArray(in interface{}) []interface{} {
return data.JSONArray(conv.ToString(in))
}

// YAML -
func (f *DataFuncs) YAML(in string) map[string]interface{} {
return data.YAML(in)
func (f *DataFuncs) YAML(in interface{}) map[string]interface{} {
return data.YAML(conv.ToString(in))
}

// YAMLArray -
func (f *DataFuncs) YAMLArray(in string) []interface{} {
return data.YAMLArray(in)
func (f *DataFuncs) YAMLArray(in interface{}) []interface{} {
return data.YAMLArray(conv.ToString(in))
}

// TOML -
func (f *DataFuncs) TOML(in string) interface{} {
return data.TOML(in)
func (f *DataFuncs) TOML(in interface{}) interface{} {
return data.TOML(conv.ToString(in))
}

// CSV -
Expand Down
9 changes: 5 additions & 4 deletions funcs/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package funcs
import (
"sync"

"github.com/hairyhenderson/gomplate/conv"
"github.com/hairyhenderson/gomplate/env"
)

Expand All @@ -29,11 +30,11 @@ func AddEnvFuncs(f map[string]interface{}) {
type EnvFuncs struct{}

// Getenv -
func (f *EnvFuncs) Getenv(key string, def ...string) string {
return env.Getenv(key, def...)
func (f *EnvFuncs) Getenv(key interface{}, def ...string) string {
return env.Getenv(conv.ToString(key), def...)
}

// ExpandEnv -
func (f *EnvFuncs) ExpandEnv(s string) string {
return env.ExpandEnv(s)
func (f *EnvFuncs) ExpandEnv(s interface{}) string {
return env.ExpandEnv(conv.ToString(s))
}
25 changes: 13 additions & 12 deletions funcs/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"os"
"sync"

"github.com/hairyhenderson/gomplate/conv"
"github.com/hairyhenderson/gomplate/file"
"github.com/spf13/afero"
)
Expand All @@ -30,36 +31,36 @@ type FileFuncs struct {
}

// Read -
func (f *FileFuncs) Read(path string) (string, error) {
return file.Read(path)
func (f *FileFuncs) Read(path interface{}) (string, error) {
return file.Read(conv.ToString(path))
}

// Stat -
func (f *FileFuncs) Stat(path string) (os.FileInfo, error) {
return f.fs.Stat(path)
func (f *FileFuncs) Stat(path interface{}) (os.FileInfo, error) {
return f.fs.Stat(conv.ToString(path))
}

// Exists -
func (f *FileFuncs) Exists(path string) bool {
_, err := f.Stat(path)
func (f *FileFuncs) Exists(path interface{}) bool {
_, err := f.Stat(conv.ToString(path))
return err == nil
}

// IsDir -
func (f *FileFuncs) IsDir(path string) bool {
i, err := f.Stat(path)
func (f *FileFuncs) IsDir(path interface{}) bool {
i, err := f.Stat(conv.ToString(path))
return err == nil && i.IsDir()
}

// ReadDir -
func (f *FileFuncs) ReadDir(path string) ([]string, error) {
return file.ReadDir(path)
func (f *FileFuncs) ReadDir(path interface{}) ([]string, error) {
return file.ReadDir(conv.ToString(path))
}

// Walk -
func (f *FileFuncs) Walk(path string) ([]string, error) {
func (f *FileFuncs) Walk(path interface{}) ([]string, error) {
files := make([]string, 0)
afero.Walk(f.fs, path, func(subpath string, finfo os.FileInfo, err error) error {
afero.Walk(f.fs, conv.ToString(path), func(subpath string, finfo os.FileInfo, err error) error {
if err != nil {
return err
}
Expand Down
26 changes: 14 additions & 12 deletions funcs/net.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import (
stdnet "net"
"sync"

"github.com/hairyhenderson/gomplate/conv"

"github.com/hairyhenderson/gomplate/net"
)

Expand All @@ -27,31 +29,31 @@ func AddNetFuncs(f map[string]interface{}) {
type NetFuncs struct{}

// LookupIP -
func (f *NetFuncs) LookupIP(name string) string {
return net.LookupIP(name)
func (f *NetFuncs) LookupIP(name interface{}) string {
return net.LookupIP(conv.ToString(name))
}

// LookupIPs -
func (f *NetFuncs) LookupIPs(name string) []string {
return net.LookupIPs(name)
func (f *NetFuncs) LookupIPs(name interface{}) []string {
return net.LookupIPs(conv.ToString(name))
}

// LookupCNAME -
func (f *NetFuncs) LookupCNAME(name string) string {
return net.LookupCNAME(name)
func (f *NetFuncs) LookupCNAME(name interface{}) string {
return net.LookupCNAME(conv.ToString(name))
}

// LookupSRV -
func (f *NetFuncs) LookupSRV(name string) *stdnet.SRV {
return net.LookupSRV(name)
func (f *NetFuncs) LookupSRV(name interface{}) *stdnet.SRV {
return net.LookupSRV(conv.ToString(name))
}

// LookupSRVs -
func (f *NetFuncs) LookupSRVs(name string) []*stdnet.SRV {
return net.LookupSRVs(name)
func (f *NetFuncs) LookupSRVs(name interface{}) []*stdnet.SRV {
return net.LookupSRVs(conv.ToString(name))
}

// LookupTXT -
func (f *NetFuncs) LookupTXT(name string) []string {
return net.LookupTXT(name)
func (f *NetFuncs) LookupTXT(name interface{}) []string {
return net.LookupTXT(conv.ToString(name))
}
9 changes: 5 additions & 4 deletions funcs/regexp.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package funcs
import (
"sync"

"github.com/hairyhenderson/gomplate/conv"
"github.com/hairyhenderson/gomplate/regexp"
)

Expand All @@ -26,11 +27,11 @@ func AddReFuncs(f map[string]interface{}) {
type ReFuncs struct{}

// Replace -
func (f *ReFuncs) Replace(re, replacement, input string) string {
return regexp.Replace(re, replacement, input)
func (f *ReFuncs) Replace(re, replacement string, input interface{}) string {
return regexp.Replace(re, replacement, conv.ToString(input))
}

// Match -
func (f *ReFuncs) Match(re, input string) bool {
return regexp.Match(re, input)
func (f *ReFuncs) Match(re string, input interface{}) bool {
return regexp.Match(re, conv.ToString(input))
}
Loading

0 comments on commit 308a2f3

Please sign in to comment.