MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / NewTemplateFS

Function NewTemplateFS

pkg/email/template.go:121–174  ·  view source on GitHub ↗

NewTemplateFS parses a new email template by reading files on fsys.

(fsys fs.FS, name string, opts FSTemplate)

Source from the content-addressed store, hash-verified

119
120// NewTemplateFS parses a new email template by reading files on fsys.
121func NewTemplateFS(fsys fs.FS, name string, opts FSTemplate) (*Template, error) {
122 var (
123 shared = template.Must(shared.Clone())
124 err error
125 tmpl = Template{Name: name}
126 )
127 if len(opts.IncludePatterns) > 0 {
128 shared, err = shared.ParseFS(fsys, opts.IncludePatterns...)
129 if err != nil {
130 return nil, err
131 }
132 }
133 tmpl.SubjectTemplate, err = template.Must(shared.Clone()).Parse(opts.SubjectTemplate)
134 if err != nil {
135 return nil, err
136 }
137 if opts.HTMLTemplateFile != "" {
138 htmlTemplate := template.Must(shared.Clone())
139 if opts.HTMLTemplateBaseFile != "" {
140 htmlTemplate, err = htmlTemplate.ParseFS(fsys, opts.HTMLTemplateBaseFile)
141 if err != nil {
142 return nil, err
143 }
144 }
145 htmlTemplate, err = htmlTemplate.ParseFS(fsys, opts.HTMLTemplateFile)
146 if err != nil {
147 return nil, err
148 }
149 if opts.HTMLTemplateBaseFile != "" {
150 tmpl.HTMLTemplate = htmlTemplate.Lookup(opts.HTMLTemplateBaseFile)
151 } else {
152 tmpl.HTMLTemplate = htmlTemplate.Lookup(opts.HTMLTemplateFile)
153 }
154 }
155 if opts.TextTemplateFile != "" {
156 textTemplate := template.Must(shared.Clone())
157 if opts.TextTemplateBaseFile != "" {
158 textTemplate, err = textTemplate.ParseFS(fsys, opts.TextTemplateBaseFile)
159 if err != nil {
160 return nil, err
161 }
162 }
163 textTemplate, err = textTemplate.ParseFS(fsys, opts.TextTemplateFile)
164 if err != nil {
165 return nil, err
166 }
167 if opts.TextTemplateBaseFile != "" {
168 tmpl.TextTemplate = textTemplate.Lookup(opts.TextTemplateBaseFile)
169 } else {
170 tmpl.TextTemplate = textTemplate.Lookup(opts.TextTemplateFile)
171 }
172 }
173 return &tmpl, nil
174}
175
176// TemplateData is the minimal interface Execute needs to render an email template.
177type TemplateData interface {

Callers 12

TestEmailFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92
initFunction · 0.92

Calls 2

ParseMethod · 0.65
CloneMethod · 0.45

Tested by 1

TestEmailFunction · 0.74