github.com/wuhuizuo/gomplate@v3.5.0+incompatible/context.go (about) 1 package gomplate 2 3 import ( 4 "os" 5 "strings" 6 7 "github.com/hairyhenderson/gomplate/data" 8 ) 9 10 // context for templates 11 type context map[string]interface{} 12 13 // Env - Map environment variables for use in a template 14 func (c *context) Env() map[string]string { 15 env := make(map[string]string) 16 for _, i := range os.Environ() { 17 sep := strings.Index(i, "=") 18 env[i[0:sep]] = i[sep+1:] 19 } 20 return env 21 } 22 23 func createContext(contexts []string, d *data.Data) (interface{}, error) { 24 var err error 25 ctx := &context{} 26 for _, context := range contexts { 27 a := parseAlias(context) 28 if a == "." { 29 return d.Datasource(a) 30 } 31 (*ctx)[a], err = d.Datasource(a) 32 if err != nil { 33 return nil, err 34 } 35 } 36 return ctx, nil 37 } 38 39 func parseAlias(arg string) string { 40 parts := strings.SplitN(arg, "=", 2) 41 switch len(parts) { 42 case 1: 43 return strings.SplitN(parts[0], ".", 2)[0] 44 default: 45 return parts[0] 46 } 47 }