From 95862f2b20c81294413824ec2dd00f9b17905994 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Thu, 13 Aug 2020 19:21:14 +0200 Subject: initial commit --- lib/filters/syntax-highlighting.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 lib/filters/syntax-highlighting.sh (limited to 'lib/filters/syntax-highlighting.sh') 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 -- cgit v1.2.3