summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2020-08-13 19:21:14 +0200
committerJonas Smedegaard <dr@jones.dk>2020-08-13 19:21:14 +0200
commit95862f2b20c81294413824ec2dd00f9b17905994 (patch)
tree828217c395c60630070510ee247e323861260b86 /lib
initial commit
Diffstat (limited to 'lib')
-rwxr-xr-xlib/filters/about-formatting.sh22
-rwxr-xr-xlib/filters/syntax-highlighting.sh36
2 files changed, 58 insertions, 0 deletions
diff --git a/lib/filters/about-formatting.sh b/lib/filters/about-formatting.sh
new file mode 100755
index 0000000..83a7bc0
--- /dev/null
+++ b/lib/filters/about-formatting.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# This may be used with the about-filter or repo.about-filter setting in cgitrc.
+# It passes formatting of about pages to differing programs, depending on the usage.
+
+# Depends: cmark
+
+# 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 )
+
+case "$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]')" in
+ *.markdown|*.mdown|*.md|*.mkd|*.mdwn) exec cmark --safe; ;;
+ *.htm|*.html) exec cat; ;;
+ *.txt|*) cd /usr/lib/cgit/filters/html-converters; exec ./txt2html; ;;
+esac
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