cmd/sgblog/main.go | 40 +++++++++++++++++++++++++--------------- diff --git a/cmd/sgblog/main.go b/cmd/sgblog/main.go index 64798ccba52250c7068b11a6d43f9b29dbc36d73cc04c8dbdbb62d289395f333..bb65fb52c4dc37ab886c6e25d13f40d9e80bee79670dc1ae1f24cb1d305aee7a 100644 --- a/cmd/sgblog/main.go +++ b/cmd/sgblog/main.go @@ -119,6 +119,20 @@ } return lines } +func lineURLize(urlPrefix, line string) string { + cols := strings.Split(html.EscapeString(line), " ") + for i, col := range cols { + if u := urlParse(col); u != nil { + cols[i] = makeA(col, col) + continue + } + cols[i] = sha1DigestRe.ReplaceAllString(col, makeA( + urlPrefix+"/$1", "$1", + )) + } + return strings.Join(cols, " ") +} + func getNote(tree *object.Tree, what plumbing.Hash) []byte { if tree == nil { return nil @@ -537,19 +551,7 @@ "[%s] [%s]
\n

%s

\n
\n",
 			when, commit.Hash.String(), title,
 		)))
 		for _, line := range lines[2:] {
-			line = html.EscapeString(line)
-			cols := strings.Split(line, " ")
-			for i, col := range cols {
-				if u := urlParse(col); u != nil {
-					cols[i] = makeA(col, col)
-					continue
-				}
-				cols[i] = sha1DigestRe.ReplaceAllString(col, makeA(
-					cfg.URLPrefix+"/$1", "$1",
-				))
-			}
-			line = strings.Join(cols, " ")
-			out.Write([]byte(line + "\n"))
+			out.Write([]byte(lineURLize(cfg.URLPrefix, line) + "\n"))
 		}
 		out.Write([]byte("
\n
\n")) if len(notesRaw) > 0 { @@ -565,9 +567,17 @@ out.Write([]byte("
\n")) for i, comment := range parseComments(commentsRaw) { out.Write([]byte(fmt.Sprintf( "
comment %d:"+ - "
\n
\n%s\n
\n", - i, i, i, html.EscapeString(comment), + "\n
\n",
+				i, i, i,
 			)))
+			lines = strings.Split(comment, "\n")
+			for _, line := range lines[:3] {
+				out.Write([]byte(line + "\n"))
+			}
+			for _, line := range lines[3:] {
+				out.Write([]byte(lineURLize(cfg.URLPrefix, line) + "\n"))
+			}
+			out.Write([]byte("
\n")) } out.Write([]byte("
\n")) } else {