aboutsummaryrefslogtreecommitdiffhomepage
path: root/common
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2024-08-11 20:31:17 +0200
committerBjørn Erik Pedersen <[email protected]>2024-08-12 13:50:18 +0200
commite1e1baa1bd33181b32c58524bc21ef21da4880db (patch)
tree6840eb247068ee425e8e6955677b90c70b22e3d2 /common
parente42263529c35d966b752690ad1bcb461b90b470d (diff)
downloadhugo-e1e1baa1bd33181b32c58524bc21ef21da4880db.tar.gz
hugo-e1e1baa1bd33181b32c58524bc21ef21da4880db.zip
Improve Katex error handling and fix handling of large expressions
* Make throwOnError=true the new default * Handle JS errors as part of the RPC request/response flow * Return a new Result type with .Err on it This enables constructs on the form: ```handlebars {{ with transform.ToMath "c = \\foo{a^2 + b^2}" }} {{ with .Err }} {{ warnf "error: %s" . }} {{ else }} {{ . }} {{ end }} {{ end }} ``` Note that the new `Result` type behaves like `template.HTML` (or a string if needed) when printed, but it will panic if in a error state. Closes #12748
Diffstat (limited to 'common')
-rw-r--r--common/types/types.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/types/types.go b/common/types/types.go
index e3850ddac..322dfe592 100644
--- a/common/types/types.go
+++ b/common/types/types.go
@@ -120,3 +120,27 @@ var InvocationCounter atomic.Int64
func NewBool(b bool) *bool {
return &b
}
+
+// PrintableValueProvider is implemented by types that can provide a printable value.
+type PrintableValueProvider interface {
+ PrintableValue() any
+}
+
+var _ PrintableValueProvider = Result[any]{}
+
+// Result is a generic result type.
+type Result[T any] struct {
+ // The result value.
+ Value T
+
+ // The error value.
+ Err error
+}
+
+// PrintableValue returns the value or panics if there is an error.
+func (r Result[T]) PrintableValue() any {
+ if r.Err != nil {
+ panic(r.Err)
+ }
+ return r.Value
+}