(set templateSet, layout *templateFile, name string)
| 204 | } |
| 205 | |
| 206 | func parseView(set templateSet, layout *templateFile, name string) (*template.Template, error) { |
| 207 | view := template.Must(layout.Clone()) // safe |
| 208 | |
| 209 | body := set[name] |
| 210 | body.typ = viewType |
| 211 | |
| 212 | // process template tree for body |
| 213 | refs, err := processTree(body) |
| 214 | if err != nil { |
| 215 | return nil, fmt.Errorf("error parsing view '%s': %w", name, err) |
| 216 | } |
| 217 | for _, ref := range refs { |
| 218 | t := set[ref.name] |
| 219 | if t == nil { |
| 220 | return nil, fmt.Errorf("error parsing template '%s': %w", ref.name, ErrNotFound) |
| 221 | } |
| 222 | |
| 223 | t.typ = partialType |
| 224 | if err := parsePartial(t); err != nil { |
| 225 | return nil, fmt.Errorf("error parsing partial: '%s': %w", ref.name, err) |
| 226 | } |
| 227 | |
| 228 | view.AddParseTree(ref.name, t.Tree) |
| 229 | } |
| 230 | |
| 231 | // add defined templates to the layout |
| 232 | for _, t := range body.Templates() { |
| 233 | tName := t.Name() |
| 234 | if tName == name { |
| 235 | tName = "body" |
| 236 | } |
| 237 | view.AddParseTree(tName, t.Tree) |
| 238 | } |
| 239 | |
| 240 | return view, nil |
| 241 | } |
| 242 | |
| 243 | func parsePartial(partial *templateFile) error { |
| 244 | _, err := processTree(partial) |
no test coverage detected