mirror of https://github.com/go-gitea/gitea.git
Don't manually replace whitespace during render
For historical reasons Gitea manually alters the urlPrefix and replaces a whitespace with a +. This Works for URLs, but we're also passing urlPrefix to git calls and adding the + is breaking the tree path. Goldmark will automatically convert a white space to the proper %20, so we should leave the string as is which lets us pass it to git unmodified and then let Goldmark fix it. Also fixed separate bug in URLJoin I noticed while testing where it will silently discard sections of a path that have # in them (possibly others). We should just escape it first. Fixes 10156
This commit is contained in:
parent
15614a8368
commit
55cd4a6248
|
@ -52,7 +52,6 @@ func (g *GiteaASTTransformer) Transform(node *ast.Document, reader text.Reader,
|
||||||
|
|
||||||
lnk := string(link)
|
lnk := string(link)
|
||||||
lnk = giteautil.URLJoin(prefix, lnk)
|
lnk = giteautil.URLJoin(prefix, lnk)
|
||||||
lnk = strings.Replace(lnk, " ", "+", -1)
|
|
||||||
link = []byte(lnk)
|
link = []byte(lnk)
|
||||||
}
|
}
|
||||||
v.Destination = link
|
v.Destination = link
|
||||||
|
|
|
@ -81,7 +81,6 @@ func RenderWiki(filename string, rawBytes []byte, urlPrefix string, metas map[st
|
||||||
}
|
}
|
||||||
|
|
||||||
func render(parser Parser, rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte {
|
func render(parser Parser, rawBytes []byte, urlPrefix string, metas map[string]string, isWiki bool) []byte {
|
||||||
urlPrefix = strings.Replace(urlPrefix, " ", "+", -1)
|
|
||||||
result := parser.Render(rawBytes, urlPrefix, metas, isWiki)
|
result := parser.Render(rawBytes, urlPrefix, metas, isWiki)
|
||||||
// TODO: one day the error should be returned.
|
// TODO: one day the error should be returned.
|
||||||
result, err := PostProcess(result, urlPrefix, metas, isWiki)
|
result, err := PostProcess(result, urlPrefix, metas, isWiki)
|
||||||
|
|
|
@ -25,6 +25,9 @@ func PathEscapeSegments(path string) string {
|
||||||
|
|
||||||
// URLJoin joins url components, like path.Join, but preserving contents
|
// URLJoin joins url components, like path.Join, but preserving contents
|
||||||
func URLJoin(base string, elems ...string) string {
|
func URLJoin(base string, elems ...string) string {
|
||||||
|
// We do need to escape special chars here or else they can be silently discarded
|
||||||
|
// in the ResolveReference call below
|
||||||
|
base = PathEscapeSegments(base)
|
||||||
if !strings.HasSuffix(base, "/") {
|
if !strings.HasSuffix(base, "/") {
|
||||||
base += "/"
|
base += "/"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue