잉여개발기 (SPDV) 2 лет назад
Родитель
Сommit
7152ff4684

BIN
route_go/bin/main.amd64.bin


BIN
route_go/bin/main.amd64.exe


BIN
route_go/bin/main.arm64.bin


BIN
route_go/bin/main.arm64.exe


+ 1 - 0
route_go/go.mod

@@ -39,4 +39,5 @@ require (
 	modernc.org/opt v0.1.3 // indirect
 	modernc.org/strutil v1.2.0 // indirect
 	modernc.org/token v1.1.0 // indirect
+	mvdan.cc/xurls/v2 v2.5.0 // indirect
 )

+ 2 - 0
route_go/go.sum

@@ -131,3 +131,5 @@ modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
 modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
 modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
 modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY=
+mvdan.cc/xurls/v2 v2.5.0 h1:lyBNOm8Wo71UknhUs4QTFUNNMyxy2JEIaKKo0RWOh+8=
+mvdan.cc/xurls/v2 v2.5.0/go.mod h1:yQgaGQ1rFtJUzkmKiHYSSfuQxqfYmd//X6PxvholpeE=

+ 22 - 2
route_go/route/tool/markdown.go

@@ -10,6 +10,7 @@ import (
 	"github.com/yuin/goldmark"
 	"github.com/yuin/goldmark/extension"
 	"github.com/yuin/goldmark/renderer/html"
+	"mvdan.cc/xurls/v2"
 )
 
 func Markdown(db *sql.DB, db_set map[string]string, data map[string]string) map[string]interface{} {
@@ -18,7 +19,19 @@ func Markdown(db *sql.DB, db_set map[string]string, data map[string]string) map[
 	link_count := 0
 
 	markdown := goldmark.New(
-		goldmark.WithExtensions(extension.Strikethrough, extension.Table),
+		goldmark.WithExtensions(
+			extension.NewLinkify(
+				extension.WithLinkifyAllowedProtocols([]string{
+					"http:",
+					"https:",
+				}),
+				extension.WithLinkifyURLRegexp(
+					xurls.Strict(),
+				),
+			),
+			extension.Strikethrough,
+			extension.Table,
+		),
 		goldmark.WithRendererOptions(html.WithHardWraps()),
 	)
 
@@ -53,7 +66,12 @@ func Markdown(db *sql.DB, db_set map[string]string, data map[string]string) map[
 	string_data = r.ReplaceAllStringFunc(string_data, func(m string) string {
 		match := r.FindStringSubmatch(m)
 
-		return "<a href=\"" + match[2] + "\">" + match[1] + "</a>"
+		link := match[2]
+		if link == "" {
+			link = match[1]
+		}
+
+		return "<a href=\"" + link + "\">" + match[1] + "</a>"
 	})
 
 	// p := bluemonday.UGCPolicy()
@@ -104,6 +122,8 @@ func Markdown(db *sql.DB, db_set map[string]string, data map[string]string) map[
 		}
 	})
 
+	string_data = strings.Replace(string_data, "<ul>", "<ul class=\"opennamu_ul\">", -1)
+
 	end_backlink := [][]string{}
 	for k1, v1 := range backlink {
 		for k2, v2 := range v1 {