Help us shape the future of Go! Take the 2026 Go Developer Survey

template

package
v0.33.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 4, 2026 License: Apache-2.0 Imports: 20 Imported by: 423

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultFuncs = FuncMap{
	"toUpper": strings.ToUpper,
	"toLower": strings.ToLower,
	"title": func(text string) string {

		return cases.Title(language.AmericanEnglish).String(text)
	},
	"trimSpace": strings.TrimSpace,

	"join": func(sep string, s []string) string {
		return strings.Join(s, sep)
	},
	"match": regexp.MatchString,
	"safeHtml": func(text string) tmplhtml.HTML {
		return tmplhtml.HTML(text)
	},
	"safeUrl": func(text string) tmplhtml.URL {
		return tmplhtml.URL(text)
	},
	"urlUnescape": url.QueryUnescape,
	"reReplaceAll": func(pattern, repl, text string) string {
		re := regexp.MustCompile(pattern)
		return re.ReplaceAllString(text, repl)
	},
	"stringSlice": func(s ...string) []string {
		return s
	},

	"date": func(fmt string, t time.Time) string {
		return t.Format(fmt)
	},

	"tz": func(name string, t time.Time) (time.Time, error) {
		loc, err := time.LoadLocation(name)
		if err != nil {
			return time.Time{}, err
		}
		return t.In(loc), nil
	},
	"now":              time.Now,
	"since":            time.Since,
	"humanizeDuration": commonTemplates.HumanizeDuration,
	"toJson": func(v any) (string, error) {
		bytes, err := json.Marshal(v)
		if err != nil {
			return "", err
		}
		return string(bytes), nil
	},
	"list": func(args ...any) ([]any, error) {
		if args == nil {
			return []any{}, nil
		}
		return args, nil
	},
	"append": func(slice []any, args ...any) []any {
		return append(slice, args...)
	},
	"dict": func(values ...any) (map[string]any, error) {
		if len(values)%2 != 0 {
			return nil, fmt.Errorf("dict requires an even number of arguments")
		}

		res := make(map[string]any, len(values)/2)
		for i := 0; i < len(values); i += 2 {
			key, ok := values[i].(string)
			if !ok {
				return nil, fmt.Errorf("dict keys must be strings")
			}
			res[key] = values[i+1]
		}

		return res, nil
	},
}

Functions

func DeepCopyWithTemplate added in v0.30.0

func DeepCopyWithTemplate(value any, tmplTextFunc TemplateFunc) (any, error)

DeepCopyWithTemplate returns a deep copy of a map/slice/array/string/int/bool or combination thereof, executing the provided template (with the provided data) on all string keys or values. All maps are connverted to map[string]any, with all non-string keys discarded.

Types

type Alert

type Alert struct {
	Status       string    `json:"status"`
	Labels       KV        `json:"labels"`
	Annotations  KV        `json:"annotations"`
	StartsAt     time.Time `json:"startsAt"`
	EndsAt       time.Time `json:"endsAt"`
	GeneratorURL string    `json:"generatorURL"`
	Fingerprint  string    `json:"fingerprint"`
}

Alert holds one alert for notification templates.

type Alerts

type Alerts []Alert

Alerts is a list of Alert objects.

func (Alerts) Firing

func (as Alerts) Firing() []Alert

Firing returns the subset of alerts that are firing.

func (Alerts) Resolved

func (as Alerts) Resolved() []Alert

Resolved returns the subset of alerts that are resolved.

type Data

type Data struct {
	Receiver string `json:"receiver"`
	Status   string `json:"status"`
	Alerts   Alerts `json:"alerts"`

	NotificationReason string `json:"notification_reason"`

	GroupLabels       KV `json:"groupLabels"`
	CommonLabels      KV `json:"commonLabels"`
	CommonAnnotations KV `json:"commonAnnotations"`

	ExternalURL string `json:"externalURL"`
}

Data is the data passed to notification templates and webhook pushes.

End-users should not be exposed to Go's type system, as this will confuse them and prevent simple things like simple equality checks to fail. Map everything to float64/string.

type FuncMap

type FuncMap map[string]any

type KV

type KV map[string]string

KV is a set of key/value string pairs.

func (KV) Names

func (kv KV) Names() []string

Names returns the names of the label names in the LabelSet.

func (KV) Remove

func (kv KV) Remove(keys []string) KV

Remove returns a copy of the key/value set without the given keys.

func (KV) SortedPairs

func (kv KV) SortedPairs() Pairs

SortedPairs returns a sorted list of key/value pairs.

func (KV) String added in v0.26.0

func (kv KV) String() string

func (KV) Values

func (kv KV) Values() []string

Values returns a list of the values in the LabelSet.

type Option added in v0.26.0

type Option func(text *tmpltext.Template, html *tmplhtml.Template)

Option is generic modifier of the text and html templates used by a Template.

type Pair

type Pair struct {
	Name, Value string
}

Pair is a key/value string pair.

type Pairs

type Pairs []Pair

Pairs is a list of key/value string pairs.

func (Pairs) Names

func (ps Pairs) Names() []string

Names returns a list of names of the pairs.

func (Pairs) String added in v0.26.0

func (ps Pairs) String() string

func (Pairs) Values

func (ps Pairs) Values() []string

Values returns a list of values of the pairs.

type Template

type Template struct {
	ExternalURL *url.URL
	// contains filtered or unexported fields
}

Template bundles a text and a html template instance.

func FromGlobs

func FromGlobs(paths []string, options ...Option) (*Template, error)

FromGlobs calls ParseGlob on all path globs provided and returns the resulting Template.

func New added in v0.26.0

func New(options ...Option) (*Template, error)

New returns a new Template with the DefaultFuncs added. The DefaultFuncs have precedence over any added custom functions. Options allow customization of the text and html templates in given order.

func (*Template) Data

func (t *Template) Data(recv string, groupLabels model.LabelSet, notificationReason string, alerts ...*types.Alert) *Data

Data assembles data for template expansion.

func (*Template) ExecuteHTMLString

func (t *Template) ExecuteHTMLString(html string, data any) (string, error)

ExecuteHTMLString needs a meaningful doc comment (TODO(fabxc)).

func (*Template) ExecuteTextString

func (t *Template) ExecuteTextString(text string, data any) (string, error)

ExecuteTextString needs a meaningful doc comment (TODO(fabxc)).

func (*Template) FromGlob added in v0.26.0

func (t *Template) FromGlob(path string) error

FromGlob calls ParseGlob on given path glob provided and parses into the template.

func (*Template) Parse added in v0.26.0

func (t *Template) Parse(r io.Reader) error

Parse parses the given text into the template.

type TemplateFunc added in v0.30.0

type TemplateFunc func(string) (string, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL