git.iko.soy/typeable/pandoc
on master help sign in
Update list of listings languages in Highlighting.

This allows more languages to be used when using the `--listings` option. Closes #3374.

commita5d855d342e1283cf951a0f7ee1287d16965fc48 authorJohn MacFarlane <jgm@berkeley.edu> dateWed 25 Jan 2017, 12:13 (10 years ago) parent6d751cb
1 file changed+103−54
src/Text/Pandoc/Highlighting.hs+103−54
src/Text/Pandoc/Highlighting.hs+103−54
@@ -51,6 +51,7 @@ module Text.Pandoc.Highlighting ( languages
5151import Text.Pandoc.Definition
5252import Text.Pandoc.Shared (safeRead)
5353import Skylighting
54+import qualified Data.Set as Set
5455import Data.Maybe (fromMaybe)
5556import Data.Char (toLower)
5657import qualified Data.Map as M
@@ -95,7 +96,7 @@ highlight formatter (_, classes, keyvals) rawCode =
9596 Left _ -> Nothing
9697
9798-- Functions for correlating latex listings package's language names
98−-- with highlighting-kate language names:
99+-- with skylighting language names:
99100
100101langToListingsMap :: M.Map String String
101102langToListingsMap = M.fromList langsList
@@ -105,60 +106,108 @@ listingsToLangMap = M.fromList $ map switch langsList
105106 where switch (a,b) = (b,a)
106107
107108langsList :: [(String, String)]
108−langsList = [("ada","Ada")
109− ,("java","Java")
110− ,("prolog","Prolog")
111− ,("python","Python")
112− ,("gnuassembler","Assembler")
113− ,("commonlisp","Lisp")
114− ,("r","R")
115− ,("awk","Awk")
116− ,("bash","bash")
117− ,("makefile","make")
118− ,("c","C")
119− ,("matlab","Matlab")
120− ,("ruby","Ruby")
121− ,("cpp","C++")
122− ,("ocaml","Caml")
123− ,("modula2","Modula-2")
124− ,("sql","SQL")
125− ,("eiffel","Eiffel")
126− ,("tcl","tcl")
127− ,("erlang","erlang")
128− ,("verilog","Verilog")
129− ,("fortran","Fortran")
130− ,("vhdl","VHDL")
131− ,("pascal","Pascal")
132− ,("perl","Perl")
133− ,("xml","XML")
134− ,("haskell","Haskell")
135− ,("php","PHP")
136− ,("xslt","XSLT")
137− ,("html","HTML")
138− ,("gap","GAP")
139− ]
140−
141−listingsLangs :: [String]
142−listingsLangs = ["Ada","Java","Prolog","Algol","JVMIS","Promela",
143− "Ant","ksh","Python","Assembler","Lisp","R","Awk",
144− "Logo","Reduce","bash","make","Rexx","Basic",
145− "Mathematica","RSL","C","Matlab","Ruby","C++",
146− "Mercury","S","Caml","MetaPost","SAS","Clean",
147− "Miranda","Scilab","Cobol","Mizar","sh","Comal",
148− "ML","SHELXL","csh","Modula-2","Simula","Delphi",
149− "MuPAD","SQL","Eiffel","NASTRAN","tcl","Elan",
150− "Oberon-2","TeX","erlang","OCL","VBScript","Euphoria",
151− "Octave","Verilog","Fortran","Oz","VHDL","GCL",
152− "Pascal","VRML","Gnuplot","Perl","XML","Haskell",
153− "PHP","XSLT","HTML","PL/I","GAP"]
154−
155−-- Determine listings language name from highlighting-kate language name.
109+langsList =
110+ [("abap","ABAP"),
111+ ("acm","ACM"),
112+ ("acmscript","ACMscript"),
113+ ("acsl","ACSL"),
114+ ("ada","Ada"),
115+ ("algol","Algol"),
116+ ("ant","Ant"),
117+ ("assembler","Assembler"),
118+ ("gnuassembler","Assembler"),
119+ ("awk","Awk"),
120+ ("bash","bash"),
121+ ("monobasic","Basic"),
122+ ("purebasic","Basic"),
123+ ("c","C"),
124+ ("cpp","C++"),
125+ ("c++","C++"),
126+ ("ocaml","Caml"),
127+ ("cil","CIL"),
128+ ("clean","Clean"),
129+ ("cobol","Cobol"),
130+ ("comal80","Comal80"),
131+ ("command.com","command.com"),
132+ ("comsol","Comsol"),
133+ ("csh","csh"),
134+ ("delphi","Delphi"),
135+ ("elan","Elan"),
136+ ("erlang","erlang"),
137+ ("euphoria","Euphoria"),
138+ ("fortran","Fortran"),
139+ ("gap","GAP"),
140+ ("gcl","GCL"),
141+ ("gnuplot","Gnuplot"),
142+ ("hansl","hansl"),
143+ ("haskell","Haskell"),
144+ ("html","HTML"),
145+ ("idl","IDL"),
146+ ("inform","inform"),
147+ ("java","Java"),
148+ ("jvmis","JVMIS"),
149+ ("ksh","ksh"),
150+ ("lingo","Lingo"),
151+ ("lisp","Lisp"),
152+ ("commonlisp","Lisp"),
153+ ("llvm","LLVM"),
154+ ("logo","Logo"),
155+ ("lua","Lua"),
156+ ("make","make"),
157+ ("makefile","make"),
158+ ("mathematica","Mathematica"),
159+ ("matlab","Matlab"),
160+ ("mercury","Mercury"),
161+ ("metapost","MetaPost"),
162+ ("miranda","Miranda"),
163+ ("mizar","Mizar"),
164+ ("ml","ML"),
165+ ("modula2","Modula-2"),
166+ ("mupad","MuPAD"),
167+ ("nastran","NASTRAN"),
168+ ("oberon2","Oberon-2"),
169+ ("ocl","OCL"),
170+ ("octave","Octave"),
171+ ("oz","Oz"),
172+ ("pascal","Pascal"),
173+ ("perl","Perl"),
174+ ("php","PHP"),
175+ ("pli","PL/I"),
176+ ("plasm","Plasm"),
177+ ("postscript","PostScript"),
178+ ("pov","POV"),
179+ ("prolog","Prolog"),
180+ ("promela","Promela"),
181+ ("pstricks","PSTricks"),
182+ ("python","Python"),
183+ ("r","R"),
184+ ("reduce","Reduce"),
185+ ("rexx","Rexx"),
186+ ("rsl","RSL"),
187+ ("ruby","Ruby"),
188+ ("s","S"),
189+ ("sas","SAS"),
190+ ("scala","Scala"),
191+ ("scilab","Scilab"),
192+ ("sh","sh"),
193+ ("shelxl","SHELXL"),
194+ ("simula","Simula"),
195+ ("sparql","SPARQL"),
196+ ("sql","SQL"),
197+ ("tcl","tcl"),
198+ ("tex","TeX"),
199+ ("latex","TeX"),
200+ ("vbscript","VBScript"),
201+ ("verilog","Verilog"),
202+ ("vhdl","VHDL"),
203+ ("vrml","VRML"),
204+ ("xml","XML"),
205+ ("xslt","XSLT")]
206+
207+-- | Determine listings language name from skylighting language name.
156208toListingsLanguage :: String -> Maybe String
157−toListingsLanguage lang = (if lang `elem` listingsLangs
158− then Just lang
159− else Nothing) <|>
160− M.lookup (map toLower lang) langToListingsMap
209+toListingsLanguage lang = M.lookup (map toLower lang) langToListingsMap
161210
162−-- Determine highlighting-kate language name from listings language name.
211+-- | Determine skylighting language name from listings language name.
163212fromListingsLanguage :: String -> Maybe String
164213fromListingsLanguage lang = M.lookup lang listingsToLangMap