51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package template
|
|
|
|
import "fmt"
|
|
|
|
// TemplateError represents an error that occurred during template operations
|
|
type TemplateError struct {
|
|
Phase string // "load", "parse", "execute"
|
|
Message string
|
|
Err error
|
|
}
|
|
|
|
// Error implements the error interface
|
|
func (e *TemplateError) Error() string {
|
|
if e.Err != nil {
|
|
return fmt.Sprintf("template %s error: %s: %v", e.Phase, e.Message, e.Err)
|
|
}
|
|
return fmt.Sprintf("template %s error: %s", e.Phase, e.Message)
|
|
}
|
|
|
|
// Unwrap returns the wrapped error
|
|
func (e *TemplateError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
// NewTemplateLoadError creates a new template load error
|
|
func NewTemplateLoadError(msg string, err error) *TemplateError {
|
|
return &TemplateError{
|
|
Phase: "load",
|
|
Message: msg,
|
|
Err: err,
|
|
}
|
|
}
|
|
|
|
// NewTemplateParseError creates a new template parse error
|
|
func NewTemplateParseError(msg string, err error) *TemplateError {
|
|
return &TemplateError{
|
|
Phase: "parse",
|
|
Message: msg,
|
|
Err: err,
|
|
}
|
|
}
|
|
|
|
// NewTemplateExecuteError creates a new template execution error
|
|
func NewTemplateExecuteError(msg string, err error) *TemplateError {
|
|
return &TemplateError{
|
|
Phase: "execute",
|
|
Message: msg,
|
|
Err: err,
|
|
}
|
|
}
|