@@ -35,18 +35,18 @@ import Text.Pandoc.Shared
3535import Text.Pandoc.Options
3636import Text.Pandoc.Templates
3737import Text.Printf ( printf )
38−import qualified Data.Map as M
3938import Network.URI ( isAbsoluteURI, unEscapeString )
4039import Data.List ( (\\), isSuffixOf, isInfixOf,
4140 isPrefixOf, intercalate, intersperse )
4241import Data.Char ( toLower, isPunctuation )
43−import Control.Monad.State
4442import Control.Applicative ((<|>))
43+import Control.Monad.State
4544import Text.Pandoc.Pretty
4645import System.FilePath (dropExtension)
4746import Text.Pandoc.Slides
4847import Text.Pandoc.Highlighting (highlight, styleToLaTeX,
49− formatLaTeXInline, formatLaTeXBlock)
48+ formatLaTeXInline, formatLaTeXBlock,
49+ toListingsLanguage)
5050
5151data WriterState =
5252 WriterState { stInNote :: Bool -- true if we're in a note
@@ -762,60 +762,7 @@ citationsToBiblatex (c:cs) = do
762762
763763citationsToBiblatex _ = return empty
764764
765−-- correlate pandoc language names with listings names
766−langsMap :: M.Map String String
767−langsMap = M.fromList
768− [("ada","Ada")
769− ,("java","Java")
770− ,("prolog","Prolog")
771− ,("python","Python")
772− ,("gnuassembler","Assembler")
773− ,("commonlisp","Lisp")
774− ,("r","R")
775− ,("awk","Awk")
776− ,("bash","bash")
777− ,("makefile","make")
778− ,("c","C")
779− ,("matlab","Matlab")
780− ,("ruby","Ruby")
781− ,("cpp","C++")
782− ,("ocaml","Caml")
783− ,("modula2","Modula-2")
784− ,("sql","SQL")
785− ,("eiffel","Eiffel")
786− ,("tcl","tcl")
787− ,("erlang","erlang")
788− ,("verilog","Verilog")
789− ,("fortran","Fortran")
790− ,("vhdl","VHDL")
791− ,("pascal","Pascal")
792− ,("perl","Perl")
793− ,("xml","XML")
794− ,("haskell","Haskell")
795− ,("php","PHP")
796− ,("xslt","XSLT")
797− ,("html","HTML")
798− ]
799−
800−listingsLangs :: [String]
801−listingsLangs = ["Ada","Java","Prolog","Algol","JVMIS","Promela",
802− "Ant","ksh","Python","Assembler","Lisp","R","Awk",
803− "Logo","Reduce","bash","make","Rexx","Basic",
804− "Mathematica","RSL","C","Matlab","Ruby","C++",
805− "Mercury","S","Caml","MetaPost","SAS","Clean",
806− "Miranda","Scilab","Cobol","Mizar","sh","Comal",
807− "ML","SHELXL","csh","Modula-2","Simula","Delphi",
808− "MuPAD","SQL","Eiffel","NASTRAN","tcl","Elan",
809− "Oberon-2","TeX","erlang","OCL","VBScript","Euphoria",
810− "Octave","Verilog","Fortran","Oz","VHDL","GCL",
811− "Pascal","VRML","Gnuplot","Perl","XML","Haskell",
812− "PHP","XSLT","HTML","PL/I"]
813−
814765-- Determine listings language from list of class attributes.
815766getListingsLanguage :: [String] -> Maybe String
816767getListingsLanguage [] = Nothing
817−getListingsLanguage (x:xs) = (if x `elem` listingsLangs
818− then Just x
819− else Nothing) <|>
820− M.lookup (map toLower x) langsMap <|>
821− getListingsLanguage xs
768+getListingsLanguage (x:xs) = toListingsLanguage x <|> getListingsLanguage xs