diff options
| author | Anteru <bitbucket@ca.sh13.net> | 2018-11-24 16:37:35 +0000 |
|---|---|---|
| committer | Anteru <bitbucket@ca.sh13.net> | 2018-11-24 16:37:35 +0000 |
| commit | c85d52dfad2b5b1f9783e88ac52d893e30f034d2 (patch) | |
| tree | eb3ef2aa70d2fbb7a1a307042038405929aa9650 /external/autopygmentize | |
| parent | ee4cc2ef1bc96d44e93c1ad881e7b533bc83b8ae (diff) | |
| parent | d13cb73dc075a689f17e453a392429eb880b2eca (diff) | |
| download | pygments-git-c85d52dfad2b5b1f9783e88ac52d893e30f034d2.tar.gz | |
Merged in Reedbeta/pygments-main/hlsl-lexer (pull request #675)
Add HLSL lexer
Approved-by: Anteru <bitbucket@ca.sh13.net>
Diffstat (limited to 'external/autopygmentize')
| -rwxr-xr-x | external/autopygmentize | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/external/autopygmentize b/external/autopygmentize index f18cac09..d2d05970 100755 --- a/external/autopygmentize +++ b/external/autopygmentize @@ -1,6 +1,6 @@ #!/bin/bash # Best effort auto-pygmentization with transparent decompression -# by Reuben Thomas 2008-2015 +# by Reuben Thomas 2008-2016 # This program is in the public domain. # Strategy: first see if pygmentize can find a lexer; if not, ask file; if that finds nothing, fail @@ -25,6 +25,7 @@ if [[ "$lexer" == text ]]; then text/x-awk) lexer=awk;; text/x-c) lexer=c;; text/x-c++) lexer=cpp;; + text/x-crystal) lexer=crystal;; text/x-diff) lexer=diff;; text/x-fortran) lexer=fortran;; text/x-gawk) lexer=gawk;; @@ -40,7 +41,6 @@ if [[ "$lexer" == text ]]; then text/x-po) lexer=po;; text/x-python) lexer=python;; text/x-ruby) lexer=ruby;; - text/x-crystal) lexer=crystal;; text/x-shellscript) lexer=sh;; text/x-tcl) lexer=tcl;; text/x-tex|text/x-texinfo) lexer=latex;; # FIXME: texinfo really needs its own lexer @@ -66,19 +66,36 @@ if [[ "$lexer" == text ]]; then esac fi +# Find a preprocessor for compressed files +concat=cat +case $(file $file_common_opts --mime-type "$file") in + application/x-gzip) concat=zcat;; + application/x-bzip2) concat=bzcat;; + application/x-xz) concat=xzcat;; +esac + +# Find a suitable lexer, preceded by a hex dump for binary files +prereader="" encoding=$(file --mime-encoding --uncompress $file_common_opts "$file") if [[ $encoding == "binary" ]]; then - encoding="latin1" + prereader="od -x" # POSIX fallback + if [[ -n $(which hd) ]]; then + prereader="hd" # preferred + fi + lexer=hexdump + encoding=latin1 fi - if [[ -n "$lexer" ]]; then - concat=cat - case $(file $file_common_opts --mime-type "$file") in - application/x-gzip) concat=zcat;; - application/x-bzip2) concat=bzcat;; - application/x-xz) concat=xzcat;; - esac - exec $concat "$file" | pygmentize -O inencoding=$encoding $PYGMENTIZE_OPTS $options -l $lexer + reader="pygmentize -O inencoding=$encoding $PYGMENTIZE_OPTS $options -l $lexer" +fi + +# If we found a reader, run it +if [[ -n "$reader" ]]; then + if [[ -n "$prereader" ]]; then + exec $concat "$file" | $prereader | $reader + else + exec $concat "$file" | $reader + fi fi exit 1 |
