diff options
author | Jonas Smedegaard <dr@jones.dk> | 2020-08-13 19:21:14 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2020-08-13 19:21:14 +0200 |
commit | 95862f2b20c81294413824ec2dd00f9b17905994 (patch) | |
tree | 828217c395c60630070510ee247e323861260b86 /lib/filters/syntax-highlighting.sh |
initial commit
Diffstat (limited to 'lib/filters/syntax-highlighting.sh')
-rwxr-xr-x | lib/filters/syntax-highlighting.sh | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/filters/syntax-highlighting.sh b/lib/filters/syntax-highlighting.sh new file mode 100755 index 0000000..44cd310 --- /dev/null +++ b/lib/filters/syntax-highlighting.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# This script can be used to implement syntax highlighting in the cgit +# tree-view by referring to this file with the source-filter or repo.source- +# filter options in cgitrc. + +# Depends: cmark highlight + +# The following environment variables can be used to retrieve the configuration +# of the repository for which this script is called: +# CGIT_REPO_URL ( = repo.url setting ) +# CGIT_REPO_NAME ( = repo.name setting ) +# CGIT_REPO_PATH ( = repo.path setting ) +# CGIT_REPO_OWNER ( = repo.owner setting ) +# CGIT_REPO_DEFBRANCH ( = repo.defbranch setting ) +# CGIT_REPO_SECTION ( = section setting ) +# CGIT_REPO_CLONE_URL ( = repo.clone-url setting ) + +# store filename and extension in local vars +BASENAME="$1" +EXTENSION="${BASENAME##*.}" + +[ "${BASENAME}" = "${EXTENSION}" ] && EXTENSION=txt +[ -z "${EXTENSION}" ] && EXTENSION=txt + +# map Makefile and Makefile.* to .mk +[ "${BASENAME%%.*}" = "Makefile" ] && EXTENSION=mk + +# map less common markdown extensions to .md +case "$(printf '%s' "$EXTENSION" | tr '[:upper:]' '[:lower:]')" in + markdown|mdown|mkd|mdwn) EXTENSION=md;; +esac + +case "$EXTENSION" in + md) exec cmark --safe;; + *) exec highlight --force -f -I -O xhtml -S "$EXTENSION" --ordered-list --line-number-ref=n 2>/dev/null;; +esac |