summaryrefslogtreecommitdiff
path: root/teleirc/matterbridge/bridge/telegram/html.go
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
committerMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
commite9c24f4af7ed56760f6db7941827d09f6db9020b (patch)
tree62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/bridge/telegram/html.go
parent58d5e7cfda4781d8a57ec52aefd02983835c301a (diff)
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/bridge/telegram/html.go')
-rw-r--r--teleirc/matterbridge/bridge/telegram/html.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/teleirc/matterbridge/bridge/telegram/html.go b/teleirc/matterbridge/bridge/telegram/html.go
new file mode 100644
index 0000000..4aa9fd3
--- /dev/null
+++ b/teleirc/matterbridge/bridge/telegram/html.go
@@ -0,0 +1,74 @@
+package btelegram
+
+import (
+ "bytes"
+
+ "github.com/russross/blackfriday"
+)
+
+type customHTML struct {
+ blackfriday.Renderer
+}
+
+func (options *customHTML) Paragraph(out *bytes.Buffer, text func() bool) {
+ marker := out.Len()
+
+ if !text() {
+ out.Truncate(marker)
+ return
+ }
+ out.WriteString("\n")
+}
+
+func (options *customHTML) BlockCode(out *bytes.Buffer, text []byte, lang string) {
+ out.WriteString("<pre>")
+
+ out.WriteString(string(text))
+ out.WriteString("</pre>\n")
+}
+
+func (options *customHTML) CodeSpan(out *bytes.Buffer, text []byte) {
+ out.WriteString("<code>")
+ out.WriteString(string(text))
+ out.WriteString("</code>")
+}
+
+func (options *customHTML) Header(out *bytes.Buffer, text func() bool, level int, id string) {
+ options.Paragraph(out, text)
+}
+
+func (options *customHTML) HRule(out *bytes.Buffer) {
+ out.WriteByte('\n') //nolint:errcheck
+}
+
+func (options *customHTML) BlockQuote(out *bytes.Buffer, text []byte) {
+ out.WriteString("> ")
+ out.Write(text)
+ out.WriteByte('\n')
+}
+
+func (options *customHTML) LineBreak(out *bytes.Buffer) {
+ out.WriteByte('\n')
+}
+
+func (options *customHTML) List(out *bytes.Buffer, text func() bool, flags int) {
+ options.Paragraph(out, text)
+}
+
+func (options *customHTML) ListItem(out *bytes.Buffer, text []byte, flags int) {
+ out.WriteString("- ")
+ out.Write(text)
+ out.WriteByte('\n')
+}
+
+func makeHTML(input string) string {
+ return string(blackfriday.Markdown([]byte(input),
+ &customHTML{blackfriday.HtmlRenderer(blackfriday.HTML_USE_XHTML|blackfriday.HTML_SKIP_IMAGES, "", "")},
+ blackfriday.EXTENSION_NO_INTRA_EMPHASIS|
+ blackfriday.EXTENSION_FENCED_CODE|
+ blackfriday.EXTENSION_AUTOLINK|
+ blackfriday.EXTENSION_SPACE_HEADERS|
+ blackfriday.EXTENSION_HEADER_IDS|
+ blackfriday.EXTENSION_BACKSLASH_LINE_BREAK|
+ blackfriday.EXTENSION_DEFINITION_LISTS))
+}