{-
Copyright (C) 2008 John MacFarlane <jgm@berkeley.edu>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-}{- |
Module : Text.Pandoc.Highlighting
Copyright : Copyright (C) 2008 John MacFarlane
License : GNU GPL, version 2 or above
Maintainer : John MacFarlane <jgm@berkeley.edu>
Stability : alpha
Portability : portable
Exports functions for syntax highlighting.
-}moduleText.Pandoc.Highlighting(languages,languagesByExtension,highlight,formatLaTeXInline,formatLaTeXBlock,styleToLaTeX,formatHtmlInline,formatHtmlBlock,styleToCss,pygments,espresso,tango,kate,monochrome,haddock,Style)whereimportText.Pandoc.DefinitionimportText.Highlighting.KateimportData.List(find)importData.Maybe(fromMaybe)importData.Char(toLower)lcLanguages::[String]lcLanguages=map(maptoLower)languageshighlight::(FormatOptions->[SourceLine]->a)-- ^ Formatter->Attr-- ^ Attributes of the CodeBlock->String-- ^ Raw contents of the CodeBlock->Maybea-- ^ Maybe the formatted resulthighlightformatter(_,classes,keyvals)rawCode=letfirstNum=casereads(fromMaybe"1"$lookup"startFrom"keyvals)of((n,_):_)->n[]->1fmtOpts=defaultFormatOpts{startNumber=firstNum,numberLines=any(`elem`["number","numberLines","number-lines"])classes}lcclasses=map(maptoLower)classesincasefind(`elem`lcLanguages)lcclassesofNothing->NothingJustlanguage->Just$formatterfmtOpts{codeClasses=[language],containerClasses=classes}$highlightAslanguagerawCode