Simplify case statement

This commit is contained in:
CoeJoder
2023-01-02 16:25:28 -08:00
parent 431f06bb51
commit ce20c95f30
3 changed files with 121 additions and 148 deletions

View File

@@ -11,118 +11,111 @@ for path in "$@"; do
# shell lexer
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" -l sh "$path"
;;
*Config.in*|*Spec.hs|.Renviron|.Rhistory|.Rprofile|.SRCINFO|.bashrc|\
.editorconfig|.exrc|.gvimrc|.htaccess|.kshrc|.vimrc|.zshrc|BUCK|BUILD|\
BUILD.bazel|CMakeLists.txt|Dockerfile|GNUmakefile|Gemfile|Kconfig*|\
Makefile|Makefile.*|PKGBUILD|Pipfile|Pipfile.lock|Procfile|Rakefile|\
SConscript|SConstruct|Singularity|Vagrantfile|WORKSPACE|apache.conf|\
apache2.conf|autodelegate|autohandler|bashrc|control|dhandler|exrc|\
external.in*|gvimrc|iddsa|idecdsa|idecdsask|ided25519|ided25519sk|\
idrsa|kshrc|lighttpd.conf|makefile|meson.build|mesonoptions.txt|\
nginx.conf|pacman.conf|poetry.lock|sources.list|squid.conf|\
standard-modules.in|termcap|termcap.src|terminfo|terminfo.src|\
todo.txt|vimrc|xorg.conf|zshrc)
*.1p|*.3pm|*.6pl|*.6pm|*.ABAP|*.ASM|*.BAS|*.C|*.CBL|*.COB|*.CPP|*.CPY|\
*.F|*.F03|*.F90|*.G|*.H|*.ICON|*.MIPS|*.P|*.PRG|*.R|*.Rd|*.Rout|*.S|\
*.SAS|*.VBS|*.[1-9]|*.[gs]sed|*.abap|*.abnf|*.ada|*.adb|*.adl|*.adlf|\
*.adls|*.adlx|*.ado|*.ads|*.aes|*.agda|*.aheui|*.ahk|*.ahkl|*.aj|\
*.alg|*.als|*.ans|*.apl|*.aplc|*.aplf|*.apli|*.apln|*.aplo|\
*.applescript|*.arexx|*.art|*.arw|*.as|*.asax|*.asc|*.ascx|*.ashx|\
*.asm|*.asmx|*.aspx|*.asy|*.at|*.au3|*.aug|*.automount|*.aux|*.awk|\
*.axd|*.b|*.bare|*.bas|*.bash|*.bat|*.bb|*.bbc|*.bc|*.be|*.befunge|\
*.bf|*.bib|*.bmx|*.bnf|*.boa|*.boo|*.bpl|*.bro|*.bst|*.bug|*.bzl|*.c|\
*.c++|*.c++-objdump|*.c-objdump|*.cadl|*.camkes|*.capnp|*.cbl|*.cc|\
*.cddl|*.cdf|*.cdl|*.ceylon|*.cf|*.cfc|*.cfg|*.cfm|*.cfml|*.chai|\
*.chpl|*.ci|*.cirru|*.cjs|*.cl|*.clay|*.clj|*.cljc|*.cljs|*.cls|\
*.cmake|*.cmd|*.cml|*.cob|*.coffee|*.comal|*.cp|*.cpl|*.cpp|\
*.cpp-objdump|*.cps|*.cpsa|*.cpy|*.cr|*.crmsh|*.croc|*.cry|*.cs|*.csd|\
*.csh|*.css|*.css.in|*.css.j2|*.css.jinja2|*.cssul4|*.cu|*.cuh|*.cw|\
*.cxx|*.cxx-objdump|*.cyp|*.cypher|*.d|*.d-objdump|*.darcspatch|\
*.dart|*.dasm|*.dasm16|*.dcl|*.decls|*.def|*.device|*.dg|*.di|*.diff|\
*.dmesg|*.do|*.docker|*.dot|*.dpatch|*.dpr|*.dtd|*.dts|*.dtsi|*.duby|\
*.duel|*.dyalog|*.dyl|*.dylan|*.dylan-console|*.e|*.ebnf|*.ebuild|\
*.ec|*.ecl|*.eclass|*.edp|*.eex|*.eg|*.eh|*.el|*.elm|*.elpi|*.eml|\
*.eps|*.erl|*.erl-sh|*.es|*.escript|*.evoque|*.ex|*.exec|*.exheres-0|\
*.exlib|*.exs|*.exw|*.ezt|*.f|*.f03|*.f90|*.factor|*.fan|*.fancypack|\
*.fc|*.feature|*.fhtml|*.fif|*.fish|*.flo|*.flx|*.flxh|*.fnl|*.frag|\
*.frt|*.fs|*.fsi|*.fst|*.fsti|*.fsx|*.fun|*.func|*.fut|*.fy|*.g|*.gap|\
*.gcode|*.gd|*.gdc|*.gemspec|*.geo|*.gi|*.go|*.golo|*.gradle|*.graph|\
*.groovy|*.gs|*.gsp|*.gsql|*.gst|*.gsx|*.gv|*.h|*.h++|*.haml|\
*.handlebars|*.hbs|*.hdp|*.hh|*.hlsl|*.hlsli|*.hpp|*.hrl|*.hs|*.hsail|\
*.htm|*.htm.j2|*.htm.jinja2|*.html|*.html.j2|*.html.jinja2|*.htmlul4|\
*.hx|*.hxml|*.hxsl|*.hxx|*.hy|*.hyb|*.i|*.i6t|*.i7x|*.icl|*.icn|\
*.icon|*.idc|*.idl|*.idl4|*.idr|*.ijs|*.ik|*.inc|*.inf|*.ini|*.ino|\
*.instances|*.intr|*.io|*.ipf|*.isa|*.j|*.jade|*.jag|*.java|*.jbst|\
*.jcl|*.jl|*.jp|*.js|*.js.in|*.js.j2|*.js.jinja2|*.jsgf|*.jslt|*.jsm|\
*.json|*.jsonld|*.jsonnet|*.jsp|*.jsul4|*.juttle|*.jy|*.k|*.kal|*.kid|\
*.kif|*.kk|*.kki|*.kmsg|*.kn|*.ksh|*.kt|*.kts|*.lagda|*.lasso|\
*.lasso[89]|*.lcry|*.lean|*.leex|*.less|*.lgt|*.lhs|*.libsonnet|*.lid|\
*.lidr|*.liquid|*.lisp|*.ll|*.load|*.logtalk|*.lpad|*.ls|*.lsl|*.lsp|\
*.lua|*.ly|*.m|*.m2|*.ma|*.mac|*.mak|*.man|*.mao|*.maql|*.markdown|\
*.mask|*.max|*.mc|*.mcfunction|*.mcschema|*.md|*.mhtml|*.mi|*.mips|\
*.mir|*.mjs|*.mk|*.ml|*.mli|*.mll|*.mly|*.mm|*.mo|*.mod|*.monkey|\
*.moo|*.moon|*.mos|*.mount|*.mq4|*.mq5|*.mqh|*.ms|*.msc|*.mt|*.mu|\
*.mxml|*.myt|*.n|*.nasm|*.nb|*.nbp|*.nc|*.ncl|*.ng2|*.ni|*.nim|\
*.nimrod|*.nit|*.nix|*.nl|*.nqp|*.ns2|*.nsh|*.nsi|*.nt|*.objdump|\
*.objdump-intel|*.odin|*.ooc|*.opa|*.orc|*.p|*.p6|*.p6l|*.p6m|*.pan|\
*.pas|*.patch|*.path|*.pc|*.pcmk|*.peg|*.pem|*.perl|*.php|*.php[345]|\
*.phtml|*.pidl|*.pig|*.pike|*.pl|*.pl6|*.plot|*.plt|*.pm|*.pm6|*.pmod|\
*.po|*.pony|*.portugol|*.pot|*.pov|*.pp|*.praat|*.prg|*.pro|*.proc|\
*.prolog|*.promql|*.properties|*.proto|*.ps|*.ps1|*.psc|*.psi|*.psl|\
*.psm1|*.ptls|*.pug|*.pwn|*.pxd|*.pxi|*.py|*.py2tb|*.py3tb|*.pyi|\
*.pypylog|*.pytb|*.pyul4|*.pyw|*.pyx|*.q|*.qbs|*.qml|*.qvs|*.qvto|\
*.qvw|*.r|*.r3|*.rake|*.raku|*.rakudoc|*.rakumod|*.rakutest|*.rb|\
*.rbw|*.rbx|*.re|*.reb|*.red|*.reds|*.reg|*.rei|*.resource|*.rest|\
*.rex|*.rexx|*.rhtml|*.ride|*.rita|*.rkt|*.rktd|*.rktl|*.rl|*.rnc|\
*.robot|*.rpf|*.rq|*.rql|*.rs|*.rs.in|*.rsl|*.rss|*.rst|*.rts|*.run|\
*.rvt|*.rx|*.s|*.sage|*.sarl|*.sas|*.sass|*.savi|*.sbl|*.sc|*.scala|\
*.scaml|*.scd|*.scdoc|*.sce|*.sci|*.scm|*.sco|*.scope|*.scss|*.sed|\
*.service|*.sgf|*.sh|*.sh-session|*.shell-session|*.shen|*.shex|\
*.sieve|*.sig|*.sil|*.siv|*.sl|*.sla|*.slice|*.slim|*.sls|*.smali|\
*.smithy|*.sml|*.smv|*.snbt|*.snobol|*.socket|*.sol|*.sp|*.sparql|\
*.spec|*.spice|*.spt|*.sql|*.sql.j2|*.sql.jinja2|*.sqlite3-console|\
*.ss|*.ssp|*.st|*.stan|*.sv|*.svh|*.swap|*.swg|*.swift|*.t|*.tac|\
*.tal|*.tap|*.target|*.tasm|*.tcl|*.tcsh|*.tea|*.teal|*.tex|*.tf|\
*.thrift|*.thy|*.ti|*.tid|*.timer|*.tlb|*.tmpl|*.tnt|*.toc|*.todotxt|\
*.toml|*.tpl|*.tpp|*.treetop|*.ts|*.tst|*.tt|*.ttl|*.twig|*.txt|\
*.typoscript|*.u|*.u1|*.u2|*.udo|*.ul4|*.usd|*.usda|*.v|*.vala|*.vapi|\
*.vark|*.vb|*.vbs|*.vcl|*.vert|*.vhd|*.vhdl|*.vim|*.vm|*.vpr|*.wast|\
*.wat|*.wdiff|*.webidl|*.weechatlog|*.whiley|*.wlua|*.wren|*.wsdl|\
*.wsf|*.x|*.x10|*.x[bp]m|*.xhtml|*.xhtml.j2|*.xhtml.jinja2|*.xi|*.xm|\
*.xmi|*.xml|*.xml.j2|*.xml.jinja2|*.xmlul4|*.xpl|*.xq|*.xql|*.xqm|\
*.xquery|*.xqy|*.xsd|*.xsl|*.xslt|*.xtend|*.xtm|*.xul.in|*.yaml|\
*.yaml.j2|*.yaml.jinja2|*.yang|*.yml|*.yml.j2|*.yml.jinja2|*.zeek|\
*.zep|*.zig|*.zsh|*Config.in*|*Spec.hs|.Renviron|.Rhistory|.Rprofile|\
.SRCINFO|.bashrc|.editorconfig|.exrc|.gvimrc|.htaccess|.kshrc|.vimrc|\
.zshrc|BUCK|BUILD|BUILD.bazel|CMakeLists.txt|Dockerfile|GNUmakefile|\
Gemfile|Kconfig*|Makefile|Makefile.*|PKGBUILD|Pipfile|Pipfile.lock|\
Procfile|Rakefile|SConscript|SConstruct|Singularity|Vagrantfile|\
WORKSPACE|apache.conf|apache2.conf|autodelegate|autohandler|bashrc|\
control|dhandler|exrc|external.in*|gvimrc|iddsa|idecdsa|idecdsask|\
ided25519|ided25519sk|idrsa|kshrc|lighttpd.conf|makefile|meson.build|\
mesonoptions.txt|nginx.conf|pacman.conf|poetry.lock|sources.list|\
squid.conf|standard-modules.in|termcap|termcap.src|terminfo|\
terminfo.src|todo.txt|vimrc|xorg.conf|zshrc)
# filename recognized
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path"
;;
*)
ext=$([[ "$filename" = *.* ]] && echo ".${filename##*.}" || echo '')
case "$ext" in
.1p|.3pm|.6pl|.6pm|.ABAP|.ASM|.BAS|.C|.CBL|.COB|.CPP|.CPY|.F|\
.F03|.F90|.G|.H|.ICON|.MIPS|.P|.PRG|.R|.Rd|.Rout|.S|.SAS|.VBS|\
.[1-9]|.[gs]sed|.abap|.abnf|.ada|.adb|.adl|.adlf|.adls|.adlx|\
.ado|.ads|.aes|.agda|.aheui|.ahk|.ahkl|.aj|.alg|.als|.ans|\
.apl|.aplc|.aplf|.apli|.apln|.aplo|.applescript|.arexx|.art|\
.arw|.as|.asax|.asc|.ascx|.ashx|.asm|.asmx|.aspx|.asy|.at|\
.au3|.aug|.automount|.aux|.awk|.axd|.b|.bare|.bas|.bash|.bat|\
.bb|.bbc|.bc|.be|.befunge|.bf|.bib|.bmx|.bnf|.boa|.boo|.bpl|\
.bro|.bst|.bug|.bzl|.c|.c++|.c++-objdump|.c-objdump|.cadl|\
.camkes|.capnp|.cbl|.cc|.cddl|.cdf|.cdl|.ceylon|.cf|.cfc|.cfg|\
.cfm|.cfml|.chai|.chpl|.ci|.cirru|.cjs|.cl|.clay|.clj|.cljc|\
.cljs|.cls|.cmake|.cmd|.cml|.cob|.coffee|.comal|.cp|.cpl|.cpp|\
.cpp-objdump|.cps|.cpsa|.cpy|.cr|.crmsh|.croc|.cry|.cs|.csd|\
.csh|.css|.css.in|.css.j2|.css.jinja2|.cssul4|.cu|.cuh|.cw|\
.cxx|.cxx-objdump|.cyp|.cypher|.d|.d-objdump|.darcspatch|\
.dart|.dasm|.dasm16|.dcl|.decls|.def|.device|.dg|.di|.diff|\
.dmesg|.do|.docker|.dot|.dpatch|.dpr|.dtd|.dts|.dtsi|.duby|\
.duel|.dyalog|.dyl|.dylan|.dylan-console|.e|.ebnf|.ebuild|.ec|\
.ecl|.eclass|.edp|.eex|.eg|.eh|.el|.elm|.elpi|.eml|.eps|.erl|\
.erl-sh|.es|.escript|.evoque|.ex|.exec|.exheres-0|.exlib|.exs|\
.exw|.ezt|.f|.f03|.f90|.factor|.fan|.fancypack|.fc|.feature|\
.fhtml|.fif|.fish|.flo|.flx|.flxh|.fnl|.frag|.frt|.fs|.fsi|\
.fst|.fsti|.fsx|.fun|.func|.fut|.fy|.g|.gap|.gcode|.gd|.gdc|\
.gemspec|.geo|.gi|.go|.golo|.gradle|.graph|.groovy|.gs|.gsp|\
.gsql|.gst|.gsx|.gv|.h|.h++|.haml|.handlebars|.hbs|.hdp|.hh|\
.hlsl|.hlsli|.hpp|.hrl|.hs|.hsail|.htm|.htm.j2|.htm.jinja2|\
.html|.html.j2|.html.jinja2|.htmlul4|.hx|.hxml|.hxsl|.hxx|.hy|\
.hyb|.i|.i6t|.i7x|.icl|.icn|.icon|.idc|.idl|.idl4|.idr|.ijs|\
.ik|.inc|.inf|.ini|.ino|.instances|.intr|.io|.ipf|.isa|.j|\
.jade|.jag|.java|.jbst|.jcl|.jl|.jp|.js|.js.in|.js.j2|\
.js.jinja2|.jsgf|.jslt|.jsm|.json|.jsonld|.jsonnet|.jsp|\
.jsul4|.juttle|.jy|.k|.kal|.kid|.kif|.kk|.kki|.kmsg|.kn|.ksh|\
.kt|.kts|.lagda|.lasso|.lasso[89]|.lcry|.lean|.leex|.less|\
.lgt|.lhs|.libsonnet|.lid|.lidr|.liquid|.lisp|.ll|.load|\
.logtalk|.lpad|.ls|.lsl|.lsp|.lua|.ly|.m|.m2|.ma|.mac|.mak|\
.man|.mao|.maql|.markdown|.mask|.max|.mc|.mcfunction|\
.mcschema|.md|.mhtml|.mi|.mips|.mir|.mjs|.mk|.ml|.mli|.mll|\
.mly|.mm|.mo|.mod|.monkey|.moo|.moon|.mos|.mount|.mq4|.mq5|\
.mqh|.ms|.msc|.mt|.mu|.mxml|.myt|.n|.nasm|.nb|.nbp|.nc|.ncl|\
.ng2|.ni|.nim|.nimrod|.nit|.nix|.nl|.nqp|.ns2|.nsh|.nsi|.nt|\
.objdump|.objdump-intel|.odin|.ooc|.opa|.orc|.p|.p6|.p6l|.p6m|\
.pan|.pas|.patch|.path|.pc|.pcmk|.peg|.pem|.perl|.php|\
.php[345]|.phtml|.pidl|.pig|.pike|.pl|.pl6|.plot|.plt|.pm|\
.pm6|.pmod|.po|.pony|.portugol|.pot|.pov|.pp|.praat|.prg|.pro|\
.proc|.prolog|.promql|.properties|.proto|.ps|.ps1|.psc|.psi|\
.psl|.psm1|.ptls|.pug|.pwn|.pxd|.pxi|.py|.py2tb|.py3tb|.pyi|\
.pypylog|.pytb|.pyul4|.pyw|.pyx|.q|.qbs|.qml|.qvs|.qvto|.qvw|\
.r|.r3|.rake|.raku|.rakudoc|.rakumod|.rakutest|.rb|.rbw|.rbx|\
.re|.reb|.red|.reds|.reg|.rei|.resource|.rest|.rex|.rexx|\
.rhtml|.ride|.rita|.rkt|.rktd|.rktl|.rl|.rnc|.robot|.rpf|.rq|\
.rql|.rs|.rs.in|.rsl|.rss|.rst|.rts|.run|.rvt|.rx|.s|.sage|\
.sarl|.sas|.sass|.savi|.sbl|.sc|.scala|.scaml|.scd|.scdoc|\
.sce|.sci|.scm|.sco|.scope|.scss|.sed|.service|.sgf|.sh|\
.sh-session|.shell-session|.shen|.shex|.sieve|.sig|.sil|.siv|\
.sl|.sla|.slice|.slim|.sls|.smali|.smithy|.sml|.smv|.snbt|\
.snobol|.socket|.sol|.sp|.sparql|.spec|.spice|.spt|.sql|\
.sql.j2|.sql.jinja2|.sqlite3-console|.ss|.ssp|.st|.stan|.sv|\
.svh|.swap|.swg|.swift|.t|.tac|.tal|.tap|.target|.tasm|.tcl|\
.tcsh|.tea|.teal|.tex|.tf|.thrift|.thy|.ti|.tid|.timer|.tlb|\
.tmpl|.tnt|.toc|.todotxt|.toml|.tpl|.tpp|.treetop|.ts|.tst|\
.tt|.ttl|.twig|.txt|.typoscript|.u|.u1|.u2|.udo|.ul4|.usd|\
.usda|.v|.vala|.vapi|.vark|.vb|.vbs|.vcl|.vert|.vhd|.vhdl|\
.vim|.vm|.vpr|.wast|.wat|.wdiff|.webidl|.weechatlog|.whiley|\
.wlua|.wren|.wsdl|.wsf|.x|.x10|.x[bp]m|.xhtml|.xhtml.j2|\
.xhtml.jinja2|.xi|.xm|.xmi|.xml|.xml.j2|.xml.jinja2|.xmlul4|\
.xpl|.xq|.xql|.xqm|.xquery|.xqy|.xsd|.xsl|.xslt|.xtend|.xtm|\
.xul.in|.yaml|.yaml.j2|.yaml.jinja2|.yang|.yml|.yml.j2|\
.yml.jinja2|.zeek|.zep|.zig|.zsh)
# extension recognized
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path"
# attempt to parse the lexer from the shebang if it exists
lexer=$(head -n 1 "$path" | grep '^#\!' | awk -F" " \
'{ if (/env/) { print $2 } else { sub( /.*\//, ""); print $1;} }')
case "$lexer" in
node|nodejs)
# use `js` lexer for nodejs
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l js "$path"
;;
"")
# fall-back to plain text
exit 1
;;
*)
# unrecognized filename/extension
# attempt to parse the lexer from the shebang if it exists
lexer=$(head -n 1 "$path" | grep '^#\!' | awk -F" " \
'{ if (/env/) { print $2 } else { sub( /.*\//, ""); print $1;} }')
case "$lexer" in
node|nodejs)
# workaround for lack of Node.js lexer alias
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l js "$path"
;;
"")
# fall-back to plain text
exit 1
;;
*)
# use lexer alias parsed from the shebang
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l "$lexer" "$path"
;;
esac
# use lexer alias parsed from the shebang
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l "$lexer" "$path"
;;
esac
;;
esac
done
exit 0
exit 0

27
main.py
View File

@@ -21,7 +21,6 @@ TEMPLATE_LESSFILTER = 'template.lessfilter.sh'
TEMPLATE_OUTPUT = '.lessfilter'
INDENT = 4
INDENT_DOUBLE = INDENT * 2
INDENT_QUADRUPLE = INDENT * 4
MAX_COL_SIZE = 80
# any known shell filenames that don't have specific lexers will use the `sh` lexer
@@ -30,7 +29,6 @@ misc_shell_filenames = [".bashrc", "bash.bashrc", ".bash_aliases", ".bash_enviro
"zlogin", "zlogout", ".cshrc", ".cshdirs", "csh.cshrc", "csh.login", "csh.logout", ".tcshrc",
".kshrc", "ksh.kshrc"]
recognized_filenames = {}
recognized_extensions = {}
def main():
@@ -40,7 +38,6 @@ def main():
print('Fetching lexers from documentation page...')
fetch_lexers()
print(f' Supported filenames:\n {recognized_filenames}')
print(f' Supported extensions:\n {recognized_extensions}')
render_template(version)
print(f'Done.')
@@ -68,18 +65,14 @@ def fetch_lexers():
filenames: List[str] = m.group(1).split(',')
for filename in filenames:
filename = filename.strip()
if '\\' not in filename:
if filename.startswith(r'*.'):
ext_values = recognized_extensions.setdefault(name, [])
ext_values.append(filename[1:])
elif filename != 'None':
filename_values = recognized_filenames.setdefault(name, [])
filename_values.append(filename)
# specific lexer exists; no need to use the `sh` lexer
try:
misc_shell_filenames.remove(filename)
except ValueError:
pass
if filename != 'None' and '\\' not in filename:
filename_values = recognized_filenames.setdefault(name, [])
filename_values.append(filename)
# specific lexer exists; no need to use the `sh` lexer
try:
misc_shell_filenames.remove(filename)
except ValueError:
pass
else:
raise Exception(f'Aborted due to an unrecognized "{name}" lexer description format: {description}')
@@ -92,9 +85,7 @@ def render_template(version: str):
'misc_shell_filenames': to_bar_separated_string(chain(misc_shell_filenames),
INDENT_DOUBLE),
'recognized_filenames': to_bar_separated_string(chain.from_iterable(recognized_filenames.values()),
INDENT_DOUBLE),
'recognized_extensions': to_bar_separated_string(chain.from_iterable(recognized_extensions.values()),
INDENT_QUADRUPLE)
INDENT_DOUBLE)
}
output = template.render(**template_vars)
output_path = PATH_PROJECT.joinpath(TEMPLATE_OUTPUT)

View File

@@ -13,37 +13,26 @@ for path in "$@"; do
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path"
;;
*)
ext=$([[ "$filename" = *.* ]] && echo ".${filename##*.}" || echo '')
case "$ext" in
{{ recognized_extensions }})
# extension recognized
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" "$path"
# attempt to parse the lexer from the shebang if it exists
lexer=$(head -n 1 "$path" | grep '^#\!' | awk -F" " \
'{ if (/env/) { print $2 } else { sub( /.*\//, ""); print $1;} }')
case "$lexer" in
node|nodejs)
# use `js` lexer for nodejs
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l js "$path"
;;
"")
# fall-back to plain text
exit 1
;;
*)
# unrecognized filename/extension
# attempt to parse the lexer from the shebang if it exists
lexer=$(head -n 1 "$path" | grep '^#\!' | awk -F" " \
'{ if (/env/) { print $2 } else { sub( /.*\//, ""); print $1;} }')
case "$lexer" in
node|nodejs)
# workaround for lack of Node.js lexer alias
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l js "$path"
;;
"")
# fall-back to plain text
exit 1
;;
*)
# use lexer alias parsed from the shebang
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l "$lexer" "$path"
;;
esac
# use lexer alias parsed from the shebang
pygmentize -f 256 -O style="$PYGMENTIZE_STYLE" \
-l "$lexer" "$path"
;;
esac
;;
esac
done
exit 0