diff options
author | Wim <wim@42.be> | 2019-01-06 22:25:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-06 22:25:19 +0100 |
commit | 04567c765e92ad60c685c1b2fe7e77c46e065645 (patch) | |
tree | 34a587a6545c8e71e991e2a1551885faa0075738 /bridge | |
parent | 048158ad6db08cd714f39467fc0066ce41cfe6c5 (diff) | |
download | matterbridge-msglm-04567c765e92ad60c685c1b2fe7e77c46e065645.tar.gz matterbridge-msglm-04567c765e92ad60c685c1b2fe7e77c46e065645.tar.bz2 matterbridge-msglm-04567c765e92ad60c685c1b2fe7e77c46e065645.zip |
Add support for markdown to HTML conversion (matrix). Closes #663 (#670)
This uses our own gomatrix lib with the SendHTML function which
adds HTML to formatted_body in matrix.
golang-commonmark is used to convert markdown into valid HTML.
Diffstat (limited to 'bridge')
-rw-r--r-- | bridge/helper/helper.go | 6 | ||||
-rw-r--r-- | bridge/matrix/matrix.go | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/bridge/helper/helper.go b/bridge/helper/helper.go index d9acb3d5..12a587f0 100644 --- a/bridge/helper/helper.go +++ b/bridge/helper/helper.go @@ -12,6 +12,7 @@ import ( "github.com/42wim/matterbridge/bridge/config" "github.com/sirupsen/logrus" + "gitlab.com/golang-commonmark/markdown" ) func DownloadFile(url string) (*[]byte, error) { @@ -151,3 +152,8 @@ func ClipMessage(text string, length int) string { } return text } + +func ParseMarkdown(input string) string { + md := markdown.New(markdown.XHTMLOutput(true), markdown.Breaks(true)) + return (md.RenderToString([]byte(input))) +} diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go index 6ac41d53..12f50e8d 100644 --- a/bridge/matrix/matrix.go +++ b/bridge/matrix/matrix.go @@ -3,6 +3,7 @@ package bmatrix import ( "bytes" "fmt" + "html" "mime" "regexp" "strings" @@ -112,8 +113,8 @@ func (b *Bmatrix) Send(msg config.Message) (string, error) { // Edit message if we have an ID // matrix has no editing support - // Post normal message - resp, err := b.mc.SendText(channel, msg.Username+msg.Text) + // Post normal message with HTML support (eg riot.im) + resp, err := b.mc.SendHTML(channel, msg.Text, html.EscapeString(msg.Username)+helper.ParseMarkdown(msg.Text)) if err != nil { return "", err } |