T.P.Highlighting: Export lookupHighlightingStyle
.
[API change] Previously this lived in an unexported module T.P.App.CommandLineOptions, under the name `lookupHighlightStyle`.
This commit is contained in:
parent
5d9b36ae53
commit
4f8ee2212a
3 changed files with 30 additions and 22 deletions
|
@ -22,12 +22,10 @@ module Text.Pandoc.App.CommandLineOptions (
|
|||
, parseOptionsFromArgs
|
||||
, options
|
||||
, engines
|
||||
, lookupHighlightStyle
|
||||
, setVariable
|
||||
) where
|
||||
import Control.Monad
|
||||
import Control.Monad.Trans
|
||||
import Control.Monad.Except (throwError)
|
||||
import Control.Monad.State.Strict
|
||||
import Data.Aeson.Encode.Pretty (encodePretty', Config(..), keyOrder,
|
||||
defConfig, Indent(..), NumberFormat(..))
|
||||
|
@ -41,7 +39,7 @@ import Data.Maybe (fromMaybe, isJust)
|
|||
import Data.Text (Text)
|
||||
import HsLua (Exception, getglobal, openlibs, peek, run, top)
|
||||
import Safe (tailDef)
|
||||
import Skylighting (Style, Syntax (..), defaultSyntaxMap, parseTheme)
|
||||
import Skylighting (Syntax (..), defaultSyntaxMap)
|
||||
import System.Console.GetOpt
|
||||
import System.Environment (getArgs, getProgName)
|
||||
import System.Exit (exitSuccess)
|
||||
|
@ -54,7 +52,7 @@ import Text.Pandoc.App.Opt (Opt (..), LineEnding (..), IpynbOutput (..),
|
|||
DefaultsState (..), applyDefaults,
|
||||
fullDefaultsPath)
|
||||
import Text.Pandoc.Filter (Filter (..))
|
||||
import Text.Pandoc.Highlighting (highlightingStyles)
|
||||
import Text.Pandoc.Highlighting (highlightingStyles, lookupHighlightingStyle)
|
||||
import Text.Pandoc.Shared (ordNub, elemText, safeStrRead, defaultUserDataDir)
|
||||
import Text.Printf
|
||||
|
||||
|
@ -946,7 +944,7 @@ options =
|
|||
(ReqArg
|
||||
(\arg opt -> do
|
||||
let write = maybe B.putStr B.writeFile $ optOutputFile opt
|
||||
sty <- runIOorExplode $ lookupHighlightStyle arg
|
||||
sty <- runIOorExplode $ lookupHighlightingStyle arg
|
||||
write $ encodePretty'
|
||||
defConfig{confIndent = Spaces 4
|
||||
,confCompare = keyOrder
|
||||
|
@ -1059,20 +1057,6 @@ writersNames = sort
|
|||
splitField :: String -> (String, String)
|
||||
splitField = second (tailDef "true") . break (`elemText` ":=")
|
||||
|
||||
lookupHighlightStyle :: PandocMonad m => String -> m Style
|
||||
lookupHighlightStyle s
|
||||
| takeExtension s == ".theme" = -- attempt to load KDE theme
|
||||
do contents <- readFileLazy s
|
||||
case parseTheme contents of
|
||||
Left _ -> throwError $ PandocOptionError $ T.pack $
|
||||
"Could not read highlighting theme " ++ s
|
||||
Right sty -> return sty
|
||||
| otherwise =
|
||||
case lookup (T.toLower $ T.pack s) highlightingStyles of
|
||||
Just sty -> return sty
|
||||
Nothing -> throwError $ PandocOptionError $ T.pack $
|
||||
"Unknown highlight-style " ++ s
|
||||
|
||||
deprecatedOption :: String -> String -> IO ()
|
||||
deprecatedOption o msg =
|
||||
runIO (report $ Deprecated (T.pack o) (T.pack msg)) >>=
|
||||
|
|
|
@ -37,8 +37,8 @@ import System.IO (stdout)
|
|||
import Text.Pandoc
|
||||
import Text.Pandoc.App.FormatHeuristics (formatFromFilePaths)
|
||||
import Text.Pandoc.App.Opt (Opt (..))
|
||||
import Text.Pandoc.App.CommandLineOptions (engines, lookupHighlightStyle,
|
||||
setVariable)
|
||||
import Text.Pandoc.App.CommandLineOptions (engines, setVariable)
|
||||
import Text.Pandoc.Highlighting (lookupHighlightingStyle)
|
||||
import Text.Pandoc.Writers.Custom (writeCustom)
|
||||
import qualified Text.Pandoc.UTF8 as UTF8
|
||||
|
||||
|
@ -128,7 +128,8 @@ optToOutputSettings opts = do
|
|||
syntaxMap <- foldM addSyntaxMap defaultSyntaxMap
|
||||
(optSyntaxDefinitions opts)
|
||||
|
||||
hlStyle <- traverse (lookupHighlightStyle . T.unpack) $ optHighlightStyle opts
|
||||
hlStyle <- traverse (lookupHighlightingStyle . T.unpack) $
|
||||
optHighlightStyle opts
|
||||
|
||||
let setVariableM k v = return . setVariable k v
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ module Text.Pandoc.Highlighting ( highlightingStyles
|
|||
, breezeDark
|
||||
, haddock
|
||||
, Style
|
||||
, lookupHighlightingStyle
|
||||
, fromListingsLanguage
|
||||
, toListingsLanguage
|
||||
) where
|
||||
|
@ -39,6 +40,10 @@ import Data.Maybe (fromMaybe)
|
|||
import qualified Data.Text as T
|
||||
import Skylighting
|
||||
import Text.Pandoc.Definition
|
||||
import Text.Pandoc.Class (PandocMonad, readFileLazy)
|
||||
import Text.Pandoc.Error (PandocError(..))
|
||||
import Control.Monad.Except (throwError)
|
||||
import System.FilePath (takeExtension)
|
||||
import Text.Pandoc.Shared (safeRead)
|
||||
|
||||
highlightingStyles :: [(T.Text, Style)]
|
||||
|
@ -214,3 +219,21 @@ toListingsLanguage lang = M.lookup (T.toLower lang) langToListingsMap
|
|||
-- | Determine skylighting language name from listings language name.
|
||||
fromListingsLanguage :: T.Text -> Maybe T.Text
|
||||
fromListingsLanguage lang = M.lookup lang listingsToLangMap
|
||||
|
||||
-- | Lookup style from a name. If the name is a standard style,
|
||||
-- load it; if it ends in ".theme", attempt to load a KDE theme
|
||||
-- from the file path specified.
|
||||
lookupHighlightingStyle :: PandocMonad m => String -> m Style
|
||||
lookupHighlightingStyle s
|
||||
| takeExtension s == ".theme" = -- attempt to load KDE theme
|
||||
do contents <- readFileLazy s
|
||||
case parseTheme contents of
|
||||
Left _ -> throwError $ PandocOptionError $ T.pack $
|
||||
"Could not read highlighting theme " ++ s
|
||||
Right sty -> return sty
|
||||
| otherwise =
|
||||
case lookup (T.toLower $ T.pack s) highlightingStyles of
|
||||
Just sty -> return sty
|
||||
Nothing -> throwError $ PandocOptionError $ T.pack $
|
||||
"Unknown highlight-style " ++ s
|
||||
|
||||
|
|
Loading…
Reference in a new issue