diff options
author | Bjørn Erik Pedersen <[email protected]> | 2024-08-07 10:40:54 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2024-08-09 17:18:37 +0200 |
commit | 33c0938cd50dd3409f8e94878b97d789cc328f23 (patch) | |
tree | fc4cc45265b86746aa37bc3ab4445724d22a98f2 /common | |
parent | 0c3a1c7288032401327a9c4d7044e297bf3f7da6 (diff) | |
download | hugo-33c0938cd50dd3409f8e94878b97d789cc328f23.tar.gz hugo-33c0938cd50dd3409f8e94878b97d789cc328f23.zip |
Add build time math rendering
While very useful on its own (and combined with the passthrough render hooks), this also serves as a proof of concept of using WASI (WebAssembly System Interface) modules in Hugo.
This will be marked _experimental_ in the documentation. Not because it will be removed or changed in a dramatic way, but we need to think a little more how to best set up/configure similar services, define where these WASM files gets stored, maybe we can allow user provided WASM files plugins via Hugo Modules mounts etc.
See these issues for more context:
* https://github.com/gohugoio/hugo/issues/12736
* https://github.com/gohugoio/hugo/issues/12737
See #11927
Diffstat (limited to 'common')
-rw-r--r-- | common/hugio/writers.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/common/hugio/writers.go b/common/hugio/writers.go index 729b21715..6f439cc8b 100644 --- a/common/hugio/writers.go +++ b/common/hugio/writers.go @@ -81,3 +81,33 @@ func ToReadCloser(r io.Reader) io.ReadCloser { io.NopCloser(nil), } } + +type ReadWriteCloser interface { + io.Reader + io.Writer + io.Closer +} + +// PipeReadWriteCloser is a convenience type to create a pipe with a ReadCloser and a WriteCloser. +type PipeReadWriteCloser struct { + *io.PipeReader + *io.PipeWriter +} + +// NewPipeReadWriteCloser creates a new PipeReadWriteCloser. +func NewPipeReadWriteCloser() PipeReadWriteCloser { + pr, pw := io.Pipe() + return PipeReadWriteCloser{pr, pw} +} + +func (c PipeReadWriteCloser) Close() (err error) { + if err = c.PipeReader.Close(); err != nil { + return + } + err = c.PipeWriter.Close() + return +} + +func (c PipeReadWriteCloser) WriteString(s string) (int, error) { + return c.PipeWriter.Write([]byte(s)) +} |