From 04567c765e92ad60c685c1b2fe7e77c46e065645 Mon Sep 17 00:00:00 2001 From: Wim Date: Sun, 6 Jan 2019 22:25:19 +0100 Subject: 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. --- .../gitlab.com/golang-commonmark/markdown/token.go | 753 +++++++++++++++++++++ 1 file changed, 753 insertions(+) create mode 100644 vendor/gitlab.com/golang-commonmark/markdown/token.go (limited to 'vendor/gitlab.com/golang-commonmark/markdown/token.go') diff --git a/vendor/gitlab.com/golang-commonmark/markdown/token.go b/vendor/gitlab.com/golang-commonmark/markdown/token.go new file mode 100644 index 00000000..1b14e5fe --- /dev/null +++ b/vendor/gitlab.com/golang-commonmark/markdown/token.go @@ -0,0 +1,753 @@ +// Copyright 2015 The Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package markdown + +type Token interface { + Tag() string + Opening() bool + Closing() bool + Block() bool + Level() int + SetLevel(lvl int) +} + +type BlockquoteOpen struct { + Map [2]int + Lvl int +} + +type BlockquoteClose struct { + Lvl int +} + +type BulletListOpen struct { + Map [2]int + Lvl int +} + +type BulletListClose struct { + Lvl int +} + +type OrderedListOpen struct { + Order int + Map [2]int + Lvl int +} + +type OrderedListClose struct { + Lvl int +} + +type ListItemOpen struct { + Map [2]int + Lvl int +} + +type ListItemClose struct { + Lvl int +} + +type CodeBlock struct { + Content string + Map [2]int + Lvl int +} + +type CodeInline struct { + Content string + Lvl int +} + +type EmphasisOpen struct { + Lvl int +} + +type EmphasisClose struct { + Lvl int +} + +type StrongOpen struct { + Lvl int +} + +type StrongClose struct { + Lvl int +} + +type StrikethroughOpen struct { + Lvl int +} + +type StrikethroughClose struct { + Lvl int +} + +type Fence struct { + Params string + Content string + Map [2]int + Lvl int +} + +type Softbreak struct { + Lvl int +} + +type Hardbreak struct { + Lvl int +} + +type HeadingOpen struct { + HLevel int + Map [2]int + Lvl int +} + +type HeadingClose struct { + HLevel int + Lvl int +} + +type HTMLBlock struct { + Content string + Map [2]int + Lvl int +} + +type HTMLInline struct { + Content string + Lvl int +} + +type Hr struct { + Map [2]int + Lvl int +} + +type Image struct { + Src string + Title string + Tokens []Token + Lvl int +} + +type Inline struct { + Content string + Map [2]int + Children []Token + Lvl int +} + +type LinkOpen struct { + Href string + Title string + Target string + Lvl int +} + +type LinkClose struct { + Lvl int +} + +type ParagraphOpen struct { + Tight bool + Hidden bool + Map [2]int + Lvl int +} + +type ParagraphClose struct { + Tight bool + Hidden bool + Lvl int +} + +type TableOpen struct { + Map [2]int + Lvl int +} + +type TableClose struct { + Lvl int +} + +type TheadOpen struct { + Map [2]int + Lvl int +} + +type TheadClose struct { + Lvl int +} + +type TrOpen struct { + Map [2]int + Lvl int +} + +type TrClose struct { + Lvl int +} + +type ThOpen struct { + Align Align + Map [2]int + Lvl int +} + +type ThClose struct { + Lvl int +} + +type TbodyOpen struct { + Map [2]int + Lvl int +} + +type TbodyClose struct { + Lvl int +} + +type TdOpen struct { + Align Align + Map [2]int + Lvl int +} + +type TdClose struct { + Lvl int +} + +type Text struct { + Content string + Lvl int +} + +var htags = []string{ + "", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", +} + +func (t *BlockquoteOpen) Level() int { return t.Lvl } + +func (t *BlockquoteClose) Level() int { return t.Lvl } + +func (t *BulletListOpen) Level() int { return t.Lvl } + +func (t *BulletListClose) Level() int { return t.Lvl } + +func (t *OrderedListOpen) Level() int { return t.Lvl } + +func (t *OrderedListClose) Level() int { return t.Lvl } + +func (t *ListItemOpen) Level() int { return t.Lvl } + +func (t *ListItemClose) Level() int { return t.Lvl } + +func (t *CodeBlock) Level() int { return t.Lvl } + +func (t *CodeInline) Level() int { return t.Lvl } + +func (t *EmphasisOpen) Level() int { return t.Lvl } + +func (t *EmphasisClose) Level() int { return t.Lvl } + +func (t *StrongOpen) Level() int { return t.Lvl } + +func (t *StrongClose) Level() int { return t.Lvl } + +func (t *StrikethroughOpen) Level() int { return t.Lvl } + +func (t *StrikethroughClose) Level() int { return t.Lvl } + +func (t *Fence) Level() int { return t.Lvl } + +func (t *Softbreak) Level() int { return t.Lvl } + +func (t *Hardbreak) Level() int { return t.Lvl } + +func (t *HeadingOpen) Level() int { return t.Lvl } + +func (t *HeadingClose) Level() int { return t.Lvl } + +func (t *HTMLBlock) Level() int { return t.Lvl } + +func (t *HTMLInline) Level() int { return t.Lvl } + +func (t *Hr) Level() int { return t.Lvl } + +func (t *Image) Level() int { return t.Lvl } + +func (t *Inline) Level() int { return t.Lvl } + +func (t *LinkOpen) Level() int { return t.Lvl } + +func (t *LinkClose) Level() int { return t.Lvl } + +func (t *ParagraphOpen) Level() int { return t.Lvl } + +func (t *ParagraphClose) Level() int { return t.Lvl } + +func (t *TableOpen) Level() int { return t.Lvl } + +func (t *TableClose) Level() int { return t.Lvl } + +func (t *TheadOpen) Level() int { return t.Lvl } + +func (t *TheadClose) Level() int { return t.Lvl } + +func (t *TrOpen) Level() int { return t.Lvl } + +func (t *TrClose) Level() int { return t.Lvl } + +func (t *ThOpen) Level() int { return t.Lvl } + +func (t *ThClose) Level() int { return t.Lvl } + +func (t *TbodyOpen) Level() int { return t.Lvl } + +func (t *TbodyClose) Level() int { return t.Lvl } + +func (t *TdOpen) Level() int { return t.Lvl } + +func (t *TdClose) Level() int { return t.Lvl } + +func (t *Text) Level() int { return t.Lvl } + +func (t *BlockquoteOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *BlockquoteClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *BulletListOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *BulletListClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *OrderedListOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *OrderedListClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *ListItemOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *ListItemClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *CodeBlock) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *CodeInline) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *EmphasisOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *EmphasisClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *StrongOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *StrongClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *StrikethroughOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *StrikethroughClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Fence) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Softbreak) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Hardbreak) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *HeadingOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *HeadingClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *HTMLBlock) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *HTMLInline) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Hr) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Image) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Inline) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *LinkOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *LinkClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *ParagraphOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *ParagraphClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TableOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TableClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TheadOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TheadClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TrOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TrClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *ThOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *ThClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TbodyOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TbodyClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TdOpen) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *TdClose) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *Text) SetLevel(lvl int) { t.Lvl = lvl } + +func (t *BlockquoteOpen) Opening() bool { return true } + +func (t *BlockquoteClose) Opening() bool { return false } + +func (t *BulletListOpen) Opening() bool { return true } + +func (t *BulletListClose) Opening() bool { return false } + +func (t *OrderedListOpen) Opening() bool { return true } + +func (t *OrderedListClose) Opening() bool { return false } + +func (t *ListItemOpen) Opening() bool { return true } + +func (t *ListItemClose) Opening() bool { return false } + +func (t *CodeBlock) Opening() bool { return false } + +func (t *CodeInline) Opening() bool { return false } + +func (t *EmphasisOpen) Opening() bool { return true } + +func (t *EmphasisClose) Opening() bool { return false } + +func (t *StrongOpen) Opening() bool { return true } + +func (t *StrongClose) Opening() bool { return false } + +func (t *StrikethroughOpen) Opening() bool { return true } + +func (t *StrikethroughClose) Opening() bool { return false } + +func (t *Fence) Opening() bool { return false } + +func (t *Softbreak) Opening() bool { return false } + +func (t *Hardbreak) Opening() bool { return false } + +func (t *HeadingOpen) Opening() bool { return true } + +func (t *HeadingClose) Opening() bool { return false } + +func (t *HTMLBlock) Opening() bool { return false } + +func (t *HTMLInline) Opening() bool { return false } + +func (t *Hr) Opening() bool { return false } + +func (t *Image) Opening() bool { return false } + +func (t *Inline) Opening() bool { return false } + +func (t *LinkOpen) Opening() bool { return true } + +func (t *LinkClose) Opening() bool { return false } + +func (t *ParagraphOpen) Opening() bool { return true } + +func (t *ParagraphClose) Opening() bool { return false } + +func (t *TableOpen) Opening() bool { return true } + +func (t *TableClose) Opening() bool { return false } + +func (t *TheadOpen) Opening() bool { return true } + +func (t *TheadClose) Opening() bool { return false } + +func (t *TrOpen) Opening() bool { return true } + +func (t *TrClose) Opening() bool { return false } + +func (t *ThOpen) Opening() bool { return true } + +func (t *ThClose) Opening() bool { return false } + +func (t *TbodyOpen) Opening() bool { return true } + +func (t *TbodyClose) Opening() bool { return false } + +func (t *TdOpen) Opening() bool { return true } + +func (t *TdClose) Opening() bool { return false } + +func (t *Text) Opening() bool { return false } + +func (t *BlockquoteOpen) Closing() bool { return false } + +func (t *BlockquoteClose) Closing() bool { return true } + +func (t *BulletListOpen) Closing() bool { return false } + +func (t *BulletListClose) Closing() bool { return true } + +func (t *OrderedListOpen) Closing() bool { return false } + +func (t *OrderedListClose) Closing() bool { return true } + +func (t *ListItemOpen) Closing() bool { return false } + +func (t *ListItemClose) Closing() bool { return true } + +func (t *CodeBlock) Closing() bool { return false } + +func (t *CodeInline) Closing() bool { return false } + +func (t *EmphasisOpen) Closing() bool { return false } + +func (t *EmphasisClose) Closing() bool { return true } + +func (t *StrongOpen) Closing() bool { return false } + +func (t *StrongClose) Closing() bool { return true } + +func (t *StrikethroughOpen) Closing() bool { return false } + +func (t *StrikethroughClose) Closing() bool { return true } + +func (t *Fence) Closing() bool { return false } + +func (t *Softbreak) Closing() bool { return false } + +func (t *Hardbreak) Closing() bool { return false } + +func (t *HeadingOpen) Closing() bool { return false } + +func (t *HeadingClose) Closing() bool { return true } + +func (t *HTMLBlock) Closing() bool { return false } + +func (t *HTMLInline) Closing() bool { return false } + +func (t *Hr) Closing() bool { return false } + +func (t *Image) Closing() bool { return false } + +func (t *Inline) Closing() bool { return false } + +func (t *LinkOpen) Closing() bool { return false } + +func (t *LinkClose) Closing() bool { return true } + +func (t *ParagraphOpen) Closing() bool { return false } + +func (t *ParagraphClose) Closing() bool { return true } + +func (t *TableOpen) Closing() bool { return false } + +func (t *TableClose) Closing() bool { return true } + +func (t *TheadOpen) Closing() bool { return false } + +func (t *TheadClose) Closing() bool { return true } + +func (t *TrOpen) Closing() bool { return false } + +func (t *TrClose) Closing() bool { return true } + +func (t *ThOpen) Closing() bool { return false } + +func (t *ThClose) Closing() bool { return true } + +func (t *TbodyOpen) Closing() bool { return false } + +func (t *TbodyClose) Closing() bool { return true } + +func (t *TdOpen) Closing() bool { return false } + +func (t *TdClose) Closing() bool { return true } + +func (t *Text) Closing() bool { return false } + +func (t *BlockquoteOpen) Block() bool { return true } + +func (t *BlockquoteClose) Block() bool { return true } + +func (t *BulletListOpen) Block() bool { return true } + +func (t *BulletListClose) Block() bool { return true } + +func (t *OrderedListOpen) Block() bool { return true } + +func (t *OrderedListClose) Block() bool { return true } + +func (t *ListItemOpen) Block() bool { return true } + +func (t *ListItemClose) Block() bool { return true } + +func (t *CodeBlock) Block() bool { return true } + +func (t *CodeInline) Block() bool { return false } + +func (t *EmphasisOpen) Block() bool { return false } + +func (t *EmphasisClose) Block() bool { return false } + +func (t *StrongOpen) Block() bool { return false } + +func (t *StrongClose) Block() bool { return false } + +func (t *StrikethroughOpen) Block() bool { return false } + +func (t *StrikethroughClose) Block() bool { return false } + +func (t *Fence) Block() bool { return true } + +func (t *Softbreak) Block() bool { return false } + +func (t *Hardbreak) Block() bool { return false } + +func (t *HeadingOpen) Block() bool { return true } + +func (t *HeadingClose) Block() bool { return true } + +func (t *HTMLBlock) Block() bool { return true } + +func (t *HTMLInline) Block() bool { return false } + +func (t *Hr) Block() bool { return true } + +func (t *Image) Block() bool { return false } + +func (t *Inline) Block() bool { return false } + +func (t *LinkOpen) Block() bool { return false } + +func (t *LinkClose) Block() bool { return false } + +func (t *ParagraphOpen) Block() bool { return true } + +func (t *ParagraphClose) Block() bool { return true } + +func (t *TableOpen) Block() bool { return true } + +func (t *TableClose) Block() bool { return true } + +func (t *TheadOpen) Block() bool { return true } + +func (t *TheadClose) Block() bool { return true } + +func (t *TrOpen) Block() bool { return true } + +func (t *TrClose) Block() bool { return true } + +func (t *ThOpen) Block() bool { return true } + +func (t *ThClose) Block() bool { return true } + +func (t *TbodyOpen) Block() bool { return true } + +func (t *TbodyClose) Block() bool { return true } + +func (t *TdOpen) Block() bool { return true } + +func (t *TdClose) Block() bool { return true } + +func (t *Text) Block() bool { return false } + +func (t *BlockquoteOpen) Tag() string { return "blockquote" } + +func (t *BlockquoteClose) Tag() string { return "blockquote" } + +func (t *BulletListOpen) Tag() string { return "ul" } + +func (t *BulletListClose) Tag() string { return "ul" } + +func (t *OrderedListOpen) Tag() string { return "ol" } + +func (t *OrderedListClose) Tag() string { return "ol" } + +func (t *ListItemOpen) Tag() string { return "li" } + +func (t *ListItemClose) Tag() string { return "li" } + +func (t *CodeBlock) Tag() string { return "code" } + +func (t *CodeInline) Tag() string { return "code" } + +func (t *EmphasisOpen) Tag() string { return "em" } + +func (t *EmphasisClose) Tag() string { return "em" } + +func (t *StrongOpen) Tag() string { return "strong" } + +func (t *StrongClose) Tag() string { return "strong" } + +func (t *StrikethroughOpen) Tag() string { return "s" } + +func (t *StrikethroughClose) Tag() string { return "s" } + +func (t *Fence) Tag() string { return "code" } + +func (t *Softbreak) Tag() string { return "br" } + +func (t *Hardbreak) Tag() string { return "br" } + +func (t *HeadingOpen) Tag() string { return htags[t.HLevel] } + +func (t *HeadingClose) Tag() string { return htags[t.HLevel] } + +func (t *HTMLBlock) Tag() string { return "" } + +func (t *HTMLInline) Tag() string { return "" } + +func (t *Hr) Tag() string { return "hr" } + +func (t *Image) Tag() string { return "img" } + +func (t *Inline) Tag() string { return "" } + +func (t *LinkOpen) Tag() string { return "a" } + +func (t *LinkClose) Tag() string { return "a" } + +func (t *ParagraphOpen) Tag() string { return "p" } + +func (t *ParagraphClose) Tag() string { return "p" } + +func (t *TableOpen) Tag() string { return "table" } + +func (t *TableClose) Tag() string { return "table" } + +func (t *TheadOpen) Tag() string { return "thead" } + +func (t *TheadClose) Tag() string { return "thead" } + +func (t *TrOpen) Tag() string { return "tr" } + +func (t *TrClose) Tag() string { return "tr" } + +func (t *ThOpen) Tag() string { return "th" } + +func (t *ThClose) Tag() string { return "th" } + +func (t *TbodyOpen) Tag() string { return "tbody" } + +func (t *TbodyClose) Tag() string { return "tbody" } + +func (t *TdOpen) Tag() string { return "td" } + +func (t *TdClose) Tag() string { return "td" } + +func (t *Text) Tag() string { return "" } -- cgit v1.2.3