package format import ( "html/template" "strings" ) // Diff formats diff text to HTML. func Diff(text string) string { index := 0 // skip headers lineNumber := 0 for index < len(text) { _, index = indexLineEnd(text, index) lineNumber += 1 if lineNumber >= 3 { break } } var html strings.Builder for index < len(text) { lineEnd, nextLine := indexLineEnd(text, index) line := text[index:lineEnd] index = nextLine if len(line) < 1 { html.WriteString("
\n") continue } c := line[0] htmlLine := template.HTMLEscapeString(string(line)) if c == '+' { html.WriteString("+") html.WriteString("") html.WriteString(htmlLine[1:]) html.WriteString("
\n") } else if c == '-' { html.WriteString("-") html.WriteString("") html.WriteString(htmlLine[1:]) html.WriteString("
\n") } else if c == '@' { html.WriteString("@") html.WriteString(htmlLine[1:]) html.WriteString("
\n") } else if c == ' ' { html.WriteString(" ") html.WriteString(htmlLine[1:]) html.WriteString("
\n") } else { html.WriteString(htmlLine) html.WriteString("
\n") } } return html.String() }