hicli/send: add LaTeX sending support

This commit is contained in:
Tulir Asokan 2024-11-02 11:56:21 +02:00
parent 438b5fb737
commit c31604eecf
3 changed files with 10 additions and 7 deletions

2
go.mod
View file

@ -24,7 +24,7 @@ require (
golang.org/x/text v0.19.0 golang.org/x/text v0.19.0
gopkg.in/yaml.v3 v3.0.1 gopkg.in/yaml.v3 v3.0.1
maunium.net/go/mauflag v1.0.0 maunium.net/go/mauflag v1.0.0
maunium.net/go/mautrix v0.21.2-0.20241101162620-f606129e732f maunium.net/go/mautrix v0.21.2-0.20241102103123-0f73c8319665
mvdan.cc/xurls/v2 v2.5.0 mvdan.cc/xurls/v2 v2.5.0
) )

4
go.sum
View file

@ -89,7 +89,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M= maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
maunium.net/go/mautrix v0.21.2-0.20241101162620-f606129e732f h1:4iO+tXpXS8BNZuJP17BpaPZAURknrufVgkVrFkTHv7Y= maunium.net/go/mautrix v0.21.2-0.20241102103123-0f73c8319665 h1:9fbF5DBAdCdTuBRQpnFCx4/EvnDaboCNITsnSM5jIoc=
maunium.net/go/mautrix v0.21.2-0.20241101162620-f606129e732f/go.mod h1:sjCZR1R/3NET/WjkcXPL6WpAHlWKku9HjRsdOkbM8Qw= maunium.net/go/mautrix v0.21.2-0.20241102103123-0f73c8319665/go.mod h1:sjCZR1R/3NET/WjkcXPL6WpAHlWKku9HjRsdOkbM8Qw=
mvdan.cc/xurls/v2 v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8= mvdan.cc/xurls/v2 v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=
mvdan.cc/xurls/v2 v2.5.0/go.mod h1:yQgaGQ1rFtJUzkmKiHYSSfuQxqfYmd//X6PxvholpeE= mvdan.cc/xurls/v2 v2.5.0/go.mod h1:yQgaGQ1rFtJUzkmKiHYSSfuQxqfYmd//X6PxvholpeE=

View file

@ -22,6 +22,7 @@ import (
"maunium.net/go/mautrix/crypto" "maunium.net/go/mautrix/crypto"
"maunium.net/go/mautrix/event" "maunium.net/go/mautrix/event"
"maunium.net/go/mautrix/format" "maunium.net/go/mautrix/format"
"maunium.net/go/mautrix/format/mdext"
"maunium.net/go/mautrix/id" "maunium.net/go/mautrix/id"
"go.mau.fi/gomuks/pkg/hicli/database" "go.mau.fi/gomuks/pkg/hicli/database"
@ -29,7 +30,8 @@ import (
) )
var ( var (
rainbowWithHTML = goldmark.New(format.Extensions, format.HTMLOptions, goldmark.WithExtensions(rainbow.Extension)) rainbowWithHTML = goldmark.New(format.Extensions, goldmark.WithExtensions(mdext.Math), format.HTMLOptions, goldmark.WithExtensions(rainbow.Extension))
defaultWithHTML = goldmark.New(format.Extensions, goldmark.WithExtensions(mdext.Math), format.HTMLOptions)
) )
func (h *HiClient) SendMessage( func (h *HiClient) SendMessage(
@ -55,12 +57,13 @@ func (h *HiClient) SendMessage(
content.FormattedBody = rainbow.ApplyColor(content.FormattedBody) content.FormattedBody = rainbow.ApplyColor(content.FormattedBody)
} else if strings.HasPrefix(text, "/plain ") { } else if strings.HasPrefix(text, "/plain ") {
text = strings.TrimPrefix(text, "/plain ") text = strings.TrimPrefix(text, "/plain ")
content = format.RenderMarkdown(text, false, false) content = format.TextToContent(text)
} else if strings.HasPrefix(text, "/html ") { } else if strings.HasPrefix(text, "/html ") {
text = strings.TrimPrefix(text, "/html ") text = strings.TrimPrefix(text, "/html ")
content = format.RenderMarkdown(text, false, true) text = strings.Replace(text, "\n", "<br>", -1)
content = format.HTMLToContent(text)
} else if text != "" { } else if text != "" {
content = format.RenderMarkdown(text, true, true) content = format.RenderMarkdownCustom(text, defaultWithHTML)
} }
content.MsgType = msgType content.MsgType = msgType
if base != nil { if base != nil {