MCPcopy Index your code
hub / github.com/TruthHun/BookStack / JoinURL

Function JoinURL

utils/util.go:849–882  ·  view source on GitHub ↗
(rawURL string, urlPath string)

Source from the content-addressed store, hash-verified

847}
848
849func JoinURL(rawURL string, urlPath string) string {
850 rawURL = strings.TrimSpace(rawURL)
851
852 if strings.HasPrefix(urlPath, "#") {
853 return urlPath
854 }
855
856 lowerURLPath := strings.ToLower(urlPath)
857 if strings.HasPrefix(lowerURLPath, "//") {
858 return "http:" + urlPath
859 }
860 if strings.HasPrefix(lowerURLPath, "http://") || strings.HasPrefix(lowerURLPath, "https://") {
861 return urlPath
862 }
863
864 if !strings.HasSuffix(rawURL, "/") {
865 slice := strings.Split(rawURL, "/")
866 if l := len(slice); l > 0 {
867 rawURL = strings.Join(slice[:l-1], "/")
868 }
869 }
870 u, err := url.Parse(rawURL)
871
872 if err != nil {
873 return rawURL
874 }
875
876 if strings.HasPrefix(urlPath, "/") {
877 return u.Scheme + "://" + u.Host + "/" + strings.TrimLeft(urlPath, "/")
878 }
879 u.Path = path.Join(strings.TrimRight(u.Path, "/")+"/", urlPath)
880 // return u.String() // 会对中文进行编码
881 return u.Scheme + "://" + u.Host + "/" + strings.Trim(u.Path, "/")
882}
883
884type ReflectVal struct {
885 T reflect.Type

Callers 2

completeLinkMethod · 0.92
CrawlHtml2MarkdownFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected