From 5f582e51e6cdbc8223aa97f31a51042178463eae Mon Sep 17 00:00:00 2001 From: Egor Kovetskiy Date: Sun, 14 Apr 2019 13:53:44 +0300 Subject: [PATCH] move CompileMarkdown to package --- macro_code.go | 18 ---------- main.go | 49 +------------------------- pkg/mark/markdown.go | 82 ++++++++++++++++++++++++++++++++++++++++++++ renderer.go | 18 ---------- 4 files changed, 83 insertions(+), 84 deletions(-) create mode 100644 pkg/mark/markdown.go diff --git a/macro_code.go b/macro_code.go index 81af22a..06ab7d0 100644 --- a/macro_code.go +++ b/macro_code.go @@ -1,19 +1 @@ package main - -import "fmt" - -type MacroCode struct { - lang string - code []byte -} - -func (code MacroCode) Render() string { - return fmt.Sprintf( - ``+ - `%s`+ - `false`+ - ``+ - ``, - code.lang, code.code, - ) -} diff --git a/main.go b/main.go index d197327..324e5ed 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,6 @@ import ( "io/ioutil" "os" "path/filepath" - "regexp" "strings" "github.com/BurntSushi/toml" @@ -15,7 +14,6 @@ import ( "github.com/kovetskiy/mark/pkg/mark" "github.com/reconquest/colorgful" "github.com/reconquest/karma-go" - "github.com/russross/blackfriday" "github.com/zazab/zhash" ) @@ -140,7 +138,7 @@ func main() { logger.Fatal(err) } - htmlData := compileMarkdown(markdownData) + htmlData := mark.CompileMarkdown(markdownData) if dryRun { fmt.Println(string(htmlData)) @@ -227,51 +225,6 @@ func main() { } -// compileMarkdown will replace tags like with escaped -// equivalent, because blackfriday markdown parser replaces that tags with -// ac:rich-text-body for whatever reason. -func compileMarkdown(markdown []byte) []byte { - colon := regexp.MustCompile(`---BLACKFRIDAY-COLON---`) - - tags := regexp.MustCompile(`<(/?\S+):(\S+)>`) - - markdown = tags.ReplaceAll( - markdown, - []byte(`<$1`+colon.String()+`$2>`), - ) - - renderer := ConfluenceRenderer{ - blackfriday.HtmlRenderer( - blackfriday.HTML_USE_XHTML| - blackfriday.HTML_USE_SMARTYPANTS| - blackfriday.HTML_SMARTYPANTS_FRACTIONS| - blackfriday.HTML_SMARTYPANTS_DASHES| - blackfriday.HTML_SMARTYPANTS_LATEX_DASHES, - "", "", - ), - } - - html := blackfriday.MarkdownOptions( - markdown, - renderer, - blackfriday.Options{ - Extensions: blackfriday.EXTENSION_NO_INTRA_EMPHASIS | - blackfriday.EXTENSION_TABLES | - blackfriday.EXTENSION_FENCED_CODE | - blackfriday.EXTENSION_AUTOLINK | - blackfriday.EXTENSION_STRIKETHROUGH | - blackfriday.EXTENSION_SPACE_HEADERS | - blackfriday.EXTENSION_HEADER_IDS | - blackfriday.EXTENSION_BACKSLASH_LINE_BREAK | - blackfriday.EXTENSION_DEFINITION_LISTS, - }, - ) - - html = colon.ReplaceAll(html, []byte(`:`)) - - return html -} - func resolvePage( api *confluence.API, meta *mark.Meta, diff --git a/pkg/mark/markdown.go b/pkg/mark/markdown.go new file mode 100644 index 0000000..bd10d29 --- /dev/null +++ b/pkg/mark/markdown.go @@ -0,0 +1,82 @@ +package mark + +import ( + "bytes" + "fmt" + "regexp" + + "github.com/russross/blackfriday" +) + +type ConfluenceRenderer struct { + blackfriday.Renderer +} + +func (renderer ConfluenceRenderer) BlockCode( + out *bytes.Buffer, + text []byte, + lang string, +) { + out.WriteString(MacroCode{lang, text}.Render()) +} + +type MacroCode struct { + lang string + code []byte +} + +func (code MacroCode) Render() string { + return fmt.Sprintf( + ``+ + `%s`+ + `false`+ + ``+ + ``, + code.lang, code.code, + ) +} + +// compileMarkdown will replace tags like with escaped +// equivalent, because blackfriday markdown parser replaces that tags with +// ac:rich-text-body for whatever reason. +func CompileMarkdown(markdown []byte) []byte { + colon := regexp.MustCompile(`---BLACKFRIDAY-COLON---`) + + tags := regexp.MustCompile(`<(/?\S+):(\S+)>`) + + markdown = tags.ReplaceAll( + markdown, + []byte(`<$1`+colon.String()+`$2>`), + ) + + renderer := ConfluenceRenderer{ + blackfriday.HtmlRenderer( + blackfriday.HTML_USE_XHTML| + blackfriday.HTML_USE_SMARTYPANTS| + blackfriday.HTML_SMARTYPANTS_FRACTIONS| + blackfriday.HTML_SMARTYPANTS_DASHES| + blackfriday.HTML_SMARTYPANTS_LATEX_DASHES, + "", "", + ), + } + + html := blackfriday.MarkdownOptions( + markdown, + renderer, + blackfriday.Options{ + Extensions: blackfriday.EXTENSION_NO_INTRA_EMPHASIS | + blackfriday.EXTENSION_TABLES | + blackfriday.EXTENSION_FENCED_CODE | + blackfriday.EXTENSION_AUTOLINK | + blackfriday.EXTENSION_STRIKETHROUGH | + blackfriday.EXTENSION_SPACE_HEADERS | + blackfriday.EXTENSION_HEADER_IDS | + blackfriday.EXTENSION_BACKSLASH_LINE_BREAK | + blackfriday.EXTENSION_DEFINITION_LISTS, + }, + ) + + html = colon.ReplaceAll(html, []byte(`:`)) + + return html +} diff --git a/renderer.go b/renderer.go index 345d8bc..06ab7d0 100644 --- a/renderer.go +++ b/renderer.go @@ -1,19 +1 @@ package main - -import ( - "bytes" - - "github.com/russross/blackfriday" -) - -type ConfluenceRenderer struct { - blackfriday.Renderer -} - -func (renderer ConfluenceRenderer) BlockCode( - out *bytes.Buffer, - text []byte, - lang string, -) { - out.WriteString(MacroCode{lang, text}.Render()) -}