mirror of
https://gitea.com/gitea/tea
synced 2024-11-23 00:12:05 +01:00
d2295828d0
Path-only URLs need an absolute reference to be resolved against for printing in markdown Previously we resolved against the URL to the resource we were operating on (eg comment or issue URL). The markdown renderer in the web UI resolves all such URLs relative to the repo base URL. This PR adopts this behaviour in tea, by trimming the URL to a repo base URL via regex. This makes a custom patch to our markdown renderer `glamour` obsolete, which turned out to be an incorrect patch, meaning we can make use of upstream glamour again. Co-authored-by: Norwin <git@nroo.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/401 Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Reviewed-by: 6543 <6543@obermui.de> Co-authored-by: Norwin <noerw@noreply.gitea.io> Co-committed-by: Norwin <noerw@noreply.gitea.io>
96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
// Copyright 2020 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 print
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"time"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
"github.com/muesli/termenv"
|
|
)
|
|
|
|
// captures the repo URL part <host>/<owner>/<repo> of an url
|
|
var repoURLRegex = regexp.MustCompile("^([[:alnum:]]+://[^/]+(?:/[[:alnum:]]+){2})/.*")
|
|
|
|
func getRepoURL(resourceURL string) string {
|
|
return repoURLRegex.ReplaceAllString(resourceURL, "$1/")
|
|
}
|
|
|
|
// formatSize get kb in int and return string
|
|
func formatSize(kb int64) string {
|
|
if kb < 1024 {
|
|
return fmt.Sprintf("%d Kb", kb)
|
|
}
|
|
mb := kb / 1024
|
|
if mb < 1024 {
|
|
return fmt.Sprintf("%d Mb", mb)
|
|
}
|
|
gb := mb / 1024
|
|
if gb < 1024 {
|
|
return fmt.Sprintf("%d Gb", gb)
|
|
}
|
|
return fmt.Sprintf("%d Tb", gb/1024)
|
|
}
|
|
|
|
// FormatTime give a date-time in local timezone if available
|
|
func FormatTime(t time.Time) string {
|
|
location, err := time.LoadLocation("Local")
|
|
if err != nil {
|
|
return t.Format("2006-01-02 15:04 UTC")
|
|
}
|
|
return t.In(location).Format("2006-01-02 15:04")
|
|
}
|
|
|
|
func formatDuration(seconds int64, outputType string) string {
|
|
if isMachineReadable(outputType) {
|
|
return fmt.Sprint(seconds)
|
|
}
|
|
return time.Duration(1e9 * seconds).String()
|
|
}
|
|
|
|
func formatLabel(label *gitea.Label, allowColor bool, text string) string {
|
|
colorProfile := termenv.Ascii
|
|
if allowColor {
|
|
colorProfile = termenv.EnvColorProfile()
|
|
}
|
|
if len(text) == 0 {
|
|
text = label.Name
|
|
}
|
|
styled := termenv.String(text)
|
|
styled = styled.Foreground(colorProfile.Color("#" + label.Color))
|
|
return fmt.Sprint(styled)
|
|
}
|
|
|
|
func formatPermission(p *gitea.Permission) string {
|
|
if p.Admin {
|
|
return "admin"
|
|
} else if p.Push {
|
|
return "write"
|
|
}
|
|
return "read"
|
|
}
|
|
|
|
func formatUserName(u *gitea.User) string {
|
|
if len(u.FullName) == 0 {
|
|
return u.UserName
|
|
}
|
|
return u.FullName
|
|
}
|
|
|
|
func formatBoolean(b bool, allowIcons bool) string {
|
|
if !allowIcons {
|
|
return fmt.Sprintf("%v", b)
|
|
}
|
|
|
|
styled := "✔"
|
|
if !b {
|
|
styled = "✖"
|
|
}
|
|
|
|
return styled
|
|
}
|