aboutsummaryrefslogtreecommitdiff
path: root/pkg/handler
diff options
context:
space:
mode:
authorGabriel A. Giovanini <mail@gabrielgio.me>2025-02-08 22:26:39 +0100
committerGabriel A. Giovanini <mail@gabrielgio.me>2025-02-08 22:26:39 +0100
commit154f68bfd9ab4660dc764dbed6190289082b5c94 (patch)
tree0eded5dc3e540ebb930b6b2cdc7ad898303783f2 /pkg/handler
parente251d0d2d40fa6cc583954be7ca00cf60f5d15e9 (diff)
downloadcerrado-154f68bfd9ab4660dc764dbed6190289082b5c94.tar.gz
cerrado-154f68bfd9ab4660dc764dbed6190289082b5c94.tar.bz2
cerrado-154f68bfd9ab4660dc764dbed6190289082b5c94.zip
feat: Add syntax highlight to diff
Diffstat (limited to 'pkg/handler')
-rw-r--r--pkg/handler/git/handler.go21
1 files changed, 20 insertions, 1 deletions
diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go
index 9c7ba5b..80f7de6 100644
--- a/pkg/handler/git/handler.go
+++ b/pkg/handler/git/handler.go
@@ -361,12 +361,31 @@ func (g *GitHandler) Commit(w http.ResponseWriter, r *http.Request) error {
return err
}
+ lexer := lexers.Get("diff")
+ style := styles.Get(g.config.GetSyntaxHighlight())
+
+ formatter := html.New(
+ html.WithLineNumbers(true),
+ html.WithLinkableLineNumbers(true, "L"),
+ )
+
+ iterator, err := lexer.Tokenise(nil, diff)
+ if err != nil {
+ return err
+ }
+
+ var code bytes.Buffer
+ err = formatter.Format(&code, style, iterator)
+ if err != nil {
+ return err
+ }
+
gitList := &templates.GitItemPage{
Name: name,
Ref: ref,
GitItemBase: &templates.GitItemCommitPage{
Commit: commit,
- Diff: diff,
+ Diff: code.Bytes(),
},
}
templates.WritePageTemplate(w, gitList, r.Context())