skylighting-core 0.8.2.2 → 0.8.2.3
raw patch · 10 files changed
+53/−16 lines, 10 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- bin/extract.hs +7/−5
- changelog.md +10/−0
- skylighting-core.cabal +1/−1
- src/Skylighting/Format/ANSI.hs +4/−1
- src/Skylighting/Format/HTML.hs +4/−1
- src/Skylighting/Format/LaTeX.hs +4/−1
- src/Skylighting/Loader.hs +4/−2
- src/Skylighting/Regex.hs +5/−1
- src/Skylighting/Tokenizer.hs +4/−1
- test/test-skylighting.hs +10/−3
bin/extract.hs view
@@ -10,10 +10,11 @@ import System.Environment (getArgs) import System.Exit import System.IO (hPutStrLn, stderr)+import System.FilePath main :: IO () main = do- createDirectoryIfMissing True "src/Skylighting/Syntax"+ createDirectoryIfMissing True $ "src" </> "Skylighting" </> "Syntax" files <- getArgs (errs, syntaxes) <- partitionEithers <$> mapM parseSyntaxDefinition files mapM_ (hPutStrLn stderr) errs@@ -41,8 +42,9 @@ let newcabal = unlines $ top ++ (" other-modules:" : autogens) ++ bottom writeFile "skylighting.cabal" newcabal - putStrLn "Writing src/Skylighting/Syntax.hs"- writeFile "src/Skylighting/Syntax.hs" $ unlines (+ let ssyn = "src" </> "Skylighting" </> "Syntax.hs"+ putStrLn $ "Writing " ++ ssyn+ writeFile ssyn $ unlines ( [ "{-# LANGUAGE OverloadedStrings #-}" , "-- | Provides syntax highlighting definitions." , "-- THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT IT MANUALLY."@@ -89,6 +91,6 @@ toPathName :: Syntax -> String toPathName s =- "src/Skylighting/Syntax/" ++- map (\c -> if c == '.' then '/' else c)+ "src" </> "Skylighting" </> "Syntax" </>+ map (\c -> if c == '.' then pathSeparator else c) (Text.unpack (sShortname s)) ++ ".hs"
changelog.md view
@@ -1,5 +1,15 @@ # Revision history for skylighting and skylighting-core +## 0.8.2.3 -- 2019-10-03++ * Tests: ensure we read test files as UTF-8.++ * Fix compiler warnings around Monoid imports.++ * Add MonadFail constraint (allowing compilation with ghc 8.8.x).++ * Add cabal.project and move CI from Travis to GitHub Actions.+ ## 0.8.2.2 -- 2019-09-30 * Remove upper bound on regex-base and require
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name: skylighting-core-version: 0.8.2.2+version: 0.8.2.3 synopsis: syntax highlighting library description: Skylighting is a syntax highlighting library. It derives its tokenizers from XML syntax
src/Skylighting/Format/ANSI.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} module Skylighting.Format.ANSI ( formatANSI@@ -5,11 +6,13 @@ import Control.Monad (mplus) import qualified Data.Map as Map import Data.Maybe (fromMaybe, isNothing, maybeToList)-import Data.Monoid import Data.Text (Text) import qualified Data.Text as Text import Skylighting.Types import qualified System.Console.ANSI.Codes as ANSI+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup+#endif formatANSI :: FormatOptions -> Style -> [SourceLine] -> Text formatANSI opts sty = (beforeText <>)
src/Skylighting/Format/HTML.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} module Skylighting.Format.HTML ( formatHtmlInline , formatHtmlBlock@@ -6,12 +7,14 @@ import Data.List (intersperse, sort) import qualified Data.Map as Map-import Data.Monoid ((<>)) import qualified Data.Text as Text import Skylighting.Types import Text.Blaze.Html import qualified Text.Blaze.Html5 as H import qualified Text.Blaze.Html5.Attributes as A+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup+#endif -- | Format tokens using HTML spans inside @code@ tags. For example, -- A @KeywordTok@ is rendered as a span with class @kw@.
src/Skylighting/Format/LaTeX.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} module Skylighting.Format.LaTeX (@@ -10,11 +11,13 @@ import Data.Char (isSpace) import Data.List (sort) import qualified Data.Map as Map-import Data.Monoid import Data.Text (Text) import qualified Data.Text as Text import Skylighting.Types import Text.Printf+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup+#endif formatLaTeX :: Bool -> [SourceLine] -> Text formatLaTeX inline = Text.intercalate (Text.singleton '\n')
src/Skylighting/Loader.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} -- | This module provides routines to load syntax definitions from disk -- files. module Skylighting.Loader ( loadSyntaxFromFile@@ -8,12 +9,13 @@ import Control.Monad (filterM, foldM) import Control.Monad.Except (ExceptT(ExceptT), runExceptT) import Control.Monad.IO.Class (liftIO)-import Data.Monoid ((<>)) import System.Directory (listDirectory, doesFileExist) import System.FilePath ((</>), takeExtension)- import Skylighting.Types (SyntaxMap, Syntax) import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition)+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup+#endif syntaxFileExtension :: String syntaxFileExtension = ".xml"
src/Skylighting/Regex.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-}@@ -25,6 +26,9 @@ import System.IO.Unsafe (unsafePerformIO) import Text.Printf import Text.Regex.PCRE.ByteString+#if !MIN_VERSION_base(4,13,0)+import Control.Monad.Fail (MonadFail)+#endif -- | An exception in compiling or executing a regex. newtype RegexException = RegexException String@@ -103,5 +107,5 @@ encodeToText :: BS.ByteString -> Text.Text encodeToText = TE.decodeUtf8 . Base64.encode -decodeFromText :: (Monad m) => Text.Text -> m BS.ByteString+decodeFromText :: (Monad m, MonadFail m) => Text.Text -> m BS.ByteString decodeFromText = either fail return . Base64.decode . TE.encodeUtf8
src/Skylighting/Tokenizer.hs view
@@ -1,4 +1,5 @@ {-# OPTIONS_GHC -fno-warn-missing-methods #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}@@ -22,7 +23,6 @@ import Data.Char (isAlphaNum, isAscii, isLetter, isPrint, isSpace, ord) import qualified Data.Map as Map import Data.Maybe (catMaybes)-import Data.Monoid import qualified Data.Set as Set import Data.Text (Text) import qualified Data.Text as Text@@ -31,6 +31,9 @@ import Skylighting.Regex import Skylighting.Types import Text.Printf (printf)+#if !MIN_VERSION_base(4,11,0)+import Data.Semigroup+#endif newtype ContextStack = ContextStack{ unContextStack :: [Context] } deriving (Show)
test/test-skylighting.hs view
@@ -16,6 +16,7 @@ import System.Environment (getArgs) import System.FilePath import System.Exit (exitFailure)+import System.IO (hSetEncoding, utf8, openFile, IOMode(..)) import Test.QuickCheck import Test.Tasty import Test.Tasty.Golden.Advanced (goldenTest)@@ -25,6 +26,12 @@ import Skylighting.Core +readTextFile :: FilePath -> IO Text+readTextFile fp = do+ h <- openFile fp ReadMode+ hSetEncoding h utf8+ Text.hGetContents h+ tokToText :: Token -> Text tokToText (_, s) = s @@ -49,7 +56,7 @@ inputs <- filter (\fp -> take 1 fp /= ".") <$> getDirectoryContents ("test" </> "cases") allcases <- mapM (fmap (Text.take 240)- . Text.readFile . (("test" </> "cases") </>)) inputs+ . readTextFile . (("test" </> "cases") </>)) inputs args <- getArgs let regen = "--accept" `elem` args defaultTheme <- BL.readFile ("test" </> "default.theme")@@ -207,9 +214,9 @@ goldenTest testname getExpected getActual (compareValues referenceFile) updateGolden where testname = lang ++ " tokenizing of " ++ inpFile- getExpected = Text.readFile referenceFile+ getExpected = readTextFile referenceFile getActual = do- code <- Text.readFile (casesdir </> inpFile)+ code <- readTextFile (casesdir </> inpFile) syntax <- case lookupSyntax (Text.pack lang) sMap of Just s -> return s Nothing -> fail $