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())
-}