diff options
author | Wim <wim@42.be> | 2017-02-24 18:49:52 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2017-02-24 18:50:16 +0100 |
commit | 32bbab8518a03ad04953986f21eeb4832e7331e5 (patch) | |
tree | 0d97e9d1a51ff7837f4f61712b1618adc053a7cc /bridge/telegram/html.go | |
parent | 84c0b745af8349f6dff185c21751f51b1f7d3101 (diff) | |
download | matterbridge-msglm-32bbab8518a03ad04953986f21eeb4832e7331e5.tar.gz matterbridge-msglm-32bbab8518a03ad04953986f21eeb4832e7331e5.tar.bz2 matterbridge-msglm-32bbab8518a03ad04953986f21eeb4832e7331e5.zip |
Do not use HTML parsemode by default. Set MessageFormat="HTML" to use it. (telegram) Closes #126
Diffstat (limited to 'bridge/telegram/html.go')
-rw-r--r-- | bridge/telegram/html.go | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/bridge/telegram/html.go b/bridge/telegram/html.go new file mode 100644 index 00000000..3eb84bab --- /dev/null +++ b/bridge/telegram/html.go @@ -0,0 +1,64 @@ +package btelegram + +import ( + "bytes" + "github.com/russross/blackfriday" + "html" +) + +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(html.EscapeString(string(text))) + out.WriteString("</pre>\n") +} + +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') +} + +func (options *customHtml) BlockQuote(out *bytes.Buffer, text []byte) { + out.WriteString("> ") + out.Write(text) + 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)) +} |