diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-09-21 13:20:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-21 13:20:14 +0800 |
commit | 0d80af649a50c4b9e5e4ba764399872fc92f70f2 (patch) | |
tree | f09f289260005bc6913119643230c08c81dfab49 /modules | |
parent | 66bc0ac251f564491ed0a6d5d4cfa0a11af09303 (diff) | |
download | gitea-0d80af649a50c4b9e5e4ba764399872fc92f70f2.tar.gz gitea-0d80af649a50c4b9e5e4ba764399872fc92f70f2.zip |
Add init support of orgmode document type on file view and readme (#2525)
* add init support of orgmode document type on file view and readme
* fix imports
* fix imports and readmeExist
* fix imports order
* fix format
* remove unnecessary convert
Diffstat (limited to 'modules')
-rw-r--r-- | modules/markup/html_test.go | 2 | ||||
-rw-r--r-- | modules/markup/markdown/markdown.go (renamed from modules/markdown/markdown.go) | 18 | ||||
-rw-r--r-- | modules/markup/markdown/markdown_test.go (renamed from modules/markdown/markdown_test.go) | 43 | ||||
-rw-r--r-- | modules/markup/markup_test.go | 2 | ||||
-rw-r--r-- | modules/markup/orgmode/orgmode.go | 56 | ||||
-rw-r--r-- | modules/markup/orgmode/orgmode_test.go | 54 |
6 files changed, 122 insertions, 53 deletions
diff --git a/modules/markup/html_test.go b/modules/markup/html_test.go index 407115526d..ab2ca5ef47 100644 --- a/modules/markup/html_test.go +++ b/modules/markup/html_test.go @@ -10,8 +10,8 @@ import ( "strings" "testing" - _ "code.gitea.io/gitea/modules/markdown" . "code.gitea.io/gitea/modules/markup" + _ "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" "github.com/stretchr/testify/assert" diff --git a/modules/markdown/markdown.go b/modules/markup/markdown/markdown.go index 6cf2d9eaa1..f0ed0e03ab 100644 --- a/modules/markdown/markdown.go +++ b/modules/markup/markdown/markdown.go @@ -17,8 +17,8 @@ import ( // Renderer is a extended version of underlying render object. type Renderer struct { blackfriday.Renderer - urlPrefix string - isWikiMarkdown bool + URLPrefix string + IsWiki bool } // Link defines how formal links should be processed to produce corresponding HTML elements. @@ -26,10 +26,10 @@ func (r *Renderer) Link(out *bytes.Buffer, link []byte, title []byte, content [] if len(link) > 0 && !markup.IsLink(link) { if link[0] != '#' { lnk := string(link) - if r.isWikiMarkdown { + if r.IsWiki { lnk = markup.URLJoin("wiki", lnk) } - mLink := markup.URLJoin(r.urlPrefix, lnk) + mLink := markup.URLJoin(r.URLPrefix, lnk) link = []byte(mLink) } } @@ -95,8 +95,8 @@ var ( // Image defines how images should be processed to produce corresponding HTML elements. func (r *Renderer) Image(out *bytes.Buffer, link []byte, title []byte, alt []byte) { - prefix := r.urlPrefix - if r.isWikiMarkdown { + prefix := r.URLPrefix + if r.IsWiki { prefix = markup.URLJoin(prefix, "wiki", "src") } prefix = strings.Replace(prefix, "/src/", "/raw/", 1) @@ -129,9 +129,9 @@ func RenderRaw(body []byte, urlPrefix string, wikiMarkdown bool) []byte { htmlFlags |= blackfriday.HTML_SKIP_STYLE htmlFlags |= blackfriday.HTML_OMIT_CONTENTS renderer := &Renderer{ - Renderer: blackfriday.HtmlRenderer(htmlFlags, "", ""), - urlPrefix: urlPrefix, - isWikiMarkdown: wikiMarkdown, + Renderer: blackfriday.HtmlRenderer(htmlFlags, "", ""), + URLPrefix: urlPrefix, + IsWiki: wikiMarkdown, } // set up the parser diff --git a/modules/markdown/markdown_test.go b/modules/markup/markdown/markdown_test.go index 1b57e4f203..9ca3de01ca 100644 --- a/modules/markdown/markdown_test.go +++ b/modules/markup/markdown/markdown_test.go @@ -5,13 +5,11 @@ package markdown_test import ( - "fmt" - "strconv" "strings" "testing" - . "code.gitea.io/gitea/modules/markdown" "code.gitea.io/gitea/modules/markup" + . "code.gitea.io/gitea/modules/markup/markdown" "code.gitea.io/gitea/modules/setting" "github.com/stretchr/testify/assert" @@ -21,45 +19,6 @@ const AppURL = "http://localhost:3000/" const Repo = "gogits/gogs" const AppSubURL = AppURL + Repo + "/" -var numericMetas = map[string]string{ - "format": "https://someurl.com/{user}/{repo}/{index}", - "user": "someUser", - "repo": "someRepo", - "style": markup.IssueNameStyleNumeric, -} - -var alphanumericMetas = map[string]string{ - "format": "https://someurl.com/{user}/{repo}/{index}", - "user": "someUser", - "repo": "someRepo", - "style": markup.IssueNameStyleAlphanumeric, -} - -// numericLink an HTML to a numeric-style issue -func numericIssueLink(baseURL string, index int) string { - return link(markup.URLJoin(baseURL, strconv.Itoa(index)), fmt.Sprintf("#%d", index)) -} - -// alphanumLink an HTML link to an alphanumeric-style issue -func alphanumIssueLink(baseURL string, name string) string { - return link(markup.URLJoin(baseURL, name), name) -} - -// urlContentsLink an HTML link whose contents is the target URL -func urlContentsLink(href string) string { - return link(href, href) -} - -// link an HTML link -func link(href, contents string) string { - return fmt.Sprintf("<a href=\"%s\">%s</a>", href, contents) -} - -func testRenderIssueIndexPattern(t *testing.T, input, expected string, metas map[string]string) { - assert.Equal(t, expected, - string(markup.RenderIssueIndexPattern([]byte(input), AppSubURL, metas))) -} - func TestRender_StandardLinks(t *testing.T) { setting.AppURL = AppURL setting.AppSubURL = AppSubURL diff --git a/modules/markup/markup_test.go b/modules/markup/markup_test.go index 8d061ae39e..b0ebfae57d 100644 --- a/modules/markup/markup_test.go +++ b/modules/markup/markup_test.go @@ -7,8 +7,8 @@ package markup_test import ( "testing" - _ "code.gitea.io/gitea/modules/markdown" . "code.gitea.io/gitea/modules/markup" + _ "code.gitea.io/gitea/modules/markup/markdown" "github.com/stretchr/testify/assert" ) diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go new file mode 100644 index 0000000000..f9223a18b5 --- /dev/null +++ b/modules/markup/orgmode/orgmode.go @@ -0,0 +1,56 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package markup + +import ( + "code.gitea.io/gitea/modules/markup" + "code.gitea.io/gitea/modules/markup/markdown" + + "github.com/chaseadamsio/goorgeous" + "github.com/russross/blackfriday" +) + +func init() { + markup.RegisterParser(Parser{}) +} + +// Parser implements markup.Parser for orgmode +type Parser struct { +} + +// Name implements markup.Parser +func (Parser) Name() string { + return "orgmode" +} + +// Extensions implements markup.Parser +func (Parser) Extensions() []string { + return []string{".org"} +} + +// Render renders orgmode rawbytes to HTML +func Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte { + htmlFlags := blackfriday.HTML_USE_XHTML + htmlFlags |= blackfriday.HTML_SKIP_STYLE + htmlFlags |= blackfriday.HTML_OMIT_CONTENTS + renderer := &markdown.Renderer{ + Renderer: blackfriday.HtmlRenderer(htmlFlags, "", ""), + URLPrefix: urlPrefix, + IsWiki: isWiki, + } + + result := goorgeous.Org(rawBytes, renderer) + return result +} + +// RenderString reners orgmode string to HTML string +func RenderString(rawContent string, urlPrefix string, metas map[string]string, isWiki bool) string { + return string(Render([]byte(rawContent), urlPrefix, metas, isWiki)) +} + +// Render implements markup.Parser +func (Parser) Render(rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte { + return Render(rawBytes, urlPrefix, metas, isWiki) +} diff --git a/modules/markup/orgmode/orgmode_test.go b/modules/markup/orgmode/orgmode_test.go new file mode 100644 index 0000000000..a68ab5d3af --- /dev/null +++ b/modules/markup/orgmode/orgmode_test.go @@ -0,0 +1,54 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package markup + +import ( + "strings" + "testing" + + "code.gitea.io/gitea/modules/markup" + "code.gitea.io/gitea/modules/setting" + + "github.com/stretchr/testify/assert" +) + +const AppURL = "http://localhost:3000/" +const Repo = "gogits/gogs" +const AppSubURL = AppURL + Repo + "/" + +func TestRender_StandardLinks(t *testing.T) { + setting.AppURL = AppURL + setting.AppSubURL = AppSubURL + + test := func(input, expected string) { + buffer := RenderString(input, setting.AppSubURL, nil, false) + assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) + } + + googleRendered := `<p><a href="https://google.com/" title="https://google.com/">https://google.com/</a></p>` + test("[[https://google.com/]]", googleRendered) + + lnk := markup.URLJoin(AppSubURL, "WikiPage") + test("[[WikiPage][WikiPage]]", + `<p><a href="`+lnk+`" title="WikiPage">WikiPage</a></p>`) +} + +func TestRender_Images(t *testing.T) { + setting.AppURL = AppURL + setting.AppSubURL = AppSubURL + + test := func(input, expected string) { + buffer := RenderString(input, setting.AppSubURL, nil, false) + assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) + } + + url := "../../.images/src/02/train.jpg" + title := "Train" + result := markup.URLJoin(AppSubURL, url) + + test( + "[[file:"+url+"]["+title+"]]", + `<p><a href="`+result+`"><img src="`+result+`" alt="`+title+`" title="`+title+`" /></a></p>`) +} |