@ -183,15 +183,27 @@ func ReplaceLeft(s, old, new string) string {
}
}
// RenderCommitMessage renders commit message with XSS-safe and special links.
// RenderCommitMessage renders commit message with XSS-safe and special links.
func RenderCommitMessage ( msg , urlPrefix string , metas map [ string ] string ) template . HTML {
func RenderCommitMessage ( full bool , msg , urlPrefix string , metas map [ string ] string ) template . HTML {
cleanMsg := template . HTMLEscapeString ( msg )
cleanMsg := template . HTMLEscapeString ( msg )
fullMessage := string ( base . RenderIssueIndexPattern ( [ ] byte ( cleanMsg ) , urlPrefix , metas ) )
fullMessage := string ( base . RenderIssueIndexPattern ( [ ] byte ( cleanMsg ) , urlPrefix , metas ) )
msgLines := strings . Split ( strings . TrimSpace ( fullMessage ) , "\n" )
msgLines := strings . Split ( strings . TrimSpace ( fullMessage ) , "\n" )
for i := range msgLines {
numLines := len ( msgLines )
msgLines [ i ] = ReplaceLeft ( msgLines [ i ] , " " , " " )
if numLines == 0 {
return template . HTML ( "" )
} else if ! full {
return template . HTML ( msgLines [ 0 ] )
} else if numLines == 1 || ( numLines >= 2 && len ( msgLines [ 1 ] ) == 0 ) {
// First line is a header, standalone or followed by empty line
header := fmt . Sprintf ( "<h3>%s</h3>" , msgLines [ 0 ] )
if numLines >= 2 {
fullMessage = header + fmt . Sprintf ( "\n<pre>%s</pre>" , strings . Join ( msgLines [ 2 : ] , "\n" ) )
} else {
fullMessage = header
}
} else {
// Non-standard git message, there is no header line
fullMessage = fmt . Sprintf ( "<h4>%s</h4>" , strings . Join ( msgLines , "<br>" ) )
}
}
fullMessage = strings . Join ( msgLines , "<br>" )
return template . HTML ( fullMessage )
return template . HTML ( fullMessage )
}
}