aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Highlighting.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <fiddlosopher@gmail.com>2013-03-05 22:09:42 -0800
committerJohn MacFarlane <fiddlosopher@gmail.com>2013-03-05 22:09:42 -0800
commit3b63cb0903baf4bc551d2b63d884c0fa556f11a0 (patch)
tree164d82179d62ffd891f1c4d6badb4345b9473be1 /src/Text/Pandoc/Highlighting.hs
parentfd657986cc130053da93caf3f61c2f234706c549 (diff)
downloadpandoc-3b63cb0903baf4bc551d2b63d884c0fa556f11a0.tar.gz
Hide Text.Pandoc.Highlighting.
* Moved code for translating listings language names to highlighting-kate names and back from LaTeX reader to Highlighting. * Text.Pandoc.Highlighting no longer exposed (API change) * Text.Pandoc.Highlighting exports toListingsLang, fromListingsLang
Diffstat (limited to 'src/Text/Pandoc/Highlighting.hs')
-rw-r--r--src/Text/Pandoc/Highlighting.hs70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Highlighting.hs b/src/Text/Pandoc/Highlighting.hs
index 95df88099..be600fbcd 100644
--- a/src/Text/Pandoc/Highlighting.hs
+++ b/src/Text/Pandoc/Highlighting.hs
@@ -45,6 +45,8 @@ module Text.Pandoc.Highlighting ( languages
, monochrome
, haddock
, Style
+ , fromListingsLanguage
+ , toListingsLanguage
) where
import Text.Pandoc.Definition
import Text.Pandoc.Shared (safeRead)
@@ -52,6 +54,8 @@ import Text.Highlighting.Kate
import Data.List (find)
import Data.Maybe (fromMaybe)
import Data.Char (toLower)
+import qualified Data.Map as M
+import Control.Applicative ((<|>))
lcLanguages :: [String]
lcLanguages = map (map toLower) languages
@@ -76,3 +80,69 @@ highlight formatter (_, classes, keyvals) rawCode =
containerClasses = classes }
$ highlightAs language rawCode
+-- Functions for correlating latex listings package's language names
+-- with highlighting-kate language names:
+
+langToListingsMap :: M.Map String String
+langToListingsMap = M.fromList langsList
+
+listingsToLangMap :: M.Map String String
+listingsToLangMap = M.fromList $ reverse langsList
+
+langsList :: [(String, String)]
+langsList = [("ada","Ada")
+ ,("java","Java")
+ ,("prolog","Prolog")
+ ,("python","Python")
+ ,("gnuassembler","Assembler")
+ ,("commonlisp","Lisp")
+ ,("r","R")
+ ,("awk","Awk")
+ ,("bash","bash")
+ ,("makefile","make")
+ ,("c","C")
+ ,("matlab","Matlab")
+ ,("ruby","Ruby")
+ ,("cpp","C++")
+ ,("ocaml","Caml")
+ ,("modula2","Modula-2")
+ ,("sql","SQL")
+ ,("eiffel","Eiffel")
+ ,("tcl","tcl")
+ ,("erlang","erlang")
+ ,("verilog","Verilog")
+ ,("fortran","Fortran")
+ ,("vhdl","VHDL")
+ ,("pascal","Pascal")
+ ,("perl","Perl")
+ ,("xml","XML")
+ ,("haskell","Haskell")
+ ,("php","PHP")
+ ,("xslt","XSLT")
+ ,("html","HTML")
+ ]
+
+listingsLangs :: [String]
+listingsLangs = ["Ada","Java","Prolog","Algol","JVMIS","Promela",
+ "Ant","ksh","Python","Assembler","Lisp","R","Awk",
+ "Logo","Reduce","bash","make","Rexx","Basic",
+ "Mathematica","RSL","C","Matlab","Ruby","C++",
+ "Mercury","S","Caml","MetaPost","SAS","Clean",
+ "Miranda","Scilab","Cobol","Mizar","sh","Comal",
+ "ML","SHELXL","csh","Modula-2","Simula","Delphi",
+ "MuPAD","SQL","Eiffel","NASTRAN","tcl","Elan",
+ "Oberon-2","TeX","erlang","OCL","VBScript","Euphoria",
+ "Octave","Verilog","Fortran","Oz","VHDL","GCL",
+ "Pascal","VRML","Gnuplot","Perl","XML","Haskell",
+ "PHP","XSLT","HTML","PL/I"]
+
+-- Determine listings language name from highlighting-kate language name.
+toListingsLanguage :: String -> Maybe String
+toListingsLanguage lang = (if lang `elem` listingsLangs
+ then Just lang
+ else Nothing) <|>
+ M.lookup (map toLower lang) langToListingsMap
+
+-- Determine highlighting-kate language name from listings language name.
+fromListingsLanguage :: String -> Maybe String
+fromListingsLanguage lang = M.lookup lang listingsToLangMap