aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2017-09-21 13:20:14 +0800
committerGitHub <noreply@github.com>2017-09-21 13:20:14 +0800
commit0d80af649a50c4b9e5e4ba764399872fc92f70f2 (patch)
treef09f289260005bc6913119643230c08c81dfab49 /modules
parent66bc0ac251f564491ed0a6d5d4cfa0a11af09303 (diff)
downloadgitea-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.go2
-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.go2
-rw-r--r--modules/markup/orgmode/orgmode.go56
-rw-r--r--modules/markup/orgmode/orgmode_test.go54
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>`)
+}