github.com/hairyhenderson/templater@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  }