packages feed

safe-coloured-text-gen 0.0.0.3 → 0.0.0.4

raw patch · 19 files changed

+99/−17 lines, 19 filesdep +bytestringdep +pathdep +path-ioPVP ok

version bump matches the API change (PVP)

Dependencies added: bytestring, path, path-io, safe-coloured-text-parsing

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,4 +1,15 @@-# Changelog for safe-coloured-text+# Changelog for safe-coloured-text-gen++## [0.0.0.4] - 2026-04-12++### Added++* Golden file roundtrip tests for ANSI parsing+* Golden test coverage for new Chunk styling fields++### Fixed++* NoBlinking golden file path was incorrectly labelled "no-underline"  ## [0.0.0.2] - 2023-12-07 
safe-coloured-text-gen.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.35.2.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack  name:           safe-coloured-text-gen-version:        0.0.0.3+version:        0.0.0.4 description:    Generators for types in safe-coloured-text homepage:       https://github.com/NorfairKing/safe-coloured-text#readme bug-reports:    https://github.com/NorfairKing/safe-coloured-text/issues@@ -47,16 +47,23 @@     test_resources/chunk/8/dull-black-fg-bright-black-bg.dat     test_resources/chunk/8/dull-white-fg-bright-yellow-bg.dat     test_resources/chunk/8/dull-yellow-fg-dull-white-bg.dat-    test_resources/chunk/8/italic-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat+    test_resources/chunk/8/hd-no-ol-underline-slow-blinking-bright-blue-fg-dull-black-bg.dat+    test_resources/chunk/8/it-st-no-rv-no-ol-non-bold-slow-blinking-bright-red-fg-no-bg.dat+    test_resources/chunk/8/no-blinking-dull-blue-fg-dull-cyan-bg.dat     test_resources/chunk/8/no-fg-bright-black-bg.dat     test_resources/chunk/8/no-fg-bright-blue-bg.dat     test_resources/chunk/8/no-fg-dull-green-bg.dat     test_resources/chunk/8/no-fg-no-bg.dat-    test_resources/chunk/8/no-underline-dull-blue-fg-dull-cyan-bg.dat+    test_resources/chunk/8/no-hd-faint-rapid-blinking-dull-cyan-fg-bright-white-bg.dat+    test_resources/chunk/8/no-it-no-st-no-hd-ol-bold-double-underline-dull-magenta-fg-dull-black-bg.dat+    test_resources/chunk/8/no-ol-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat+    test_resources/chunk/8/no-rv-no-hd-ol-double-underline-no-blinking-bright-black-fg-bright-red-bg.dat+    test_resources/chunk/8/no-st-no-ol-bold-underline-rapid-blinking-dull-red-fg-dull-blue-bg.dat     test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat     test_resources/chunk/8/non-bold-double-underline-bright-magenta-fg-dull-blue-bg.dat     test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat-    test_resources/chunk/8/underline-no-underline-bright-black-fg-dull-black-bg.dat+    test_resources/chunk/8/st-ol-faint-no-underline-bright-green-fg-dull-black-bg.dat+    test_resources/chunk/8/underline-no-blinking-bright-black-fg-dull-black-bg.dat     test_resources/chunk/8bit/0-fg-5-bg.dat     test_resources/chunk/8bit/1-fg-5-bg.dat     test_resources/chunk/8bit/126-fg-142-bg.dat@@ -136,6 +143,7 @@   type: exitcode-stdio-1.0   main-is: Spec.hs   other-modules:+      Text.Colour.Chunk.ParsingRoundtripSpec       Text.Colour.ChunkSpec       Text.Colour.CodeSpec       Text.ColourSpec@@ -147,9 +155,13 @@       sydtest-discover:sydtest-discover   build-depends:       base >=4.7 && <5+    , bytestring     , genvalidity-sydtest+    , path+    , path-io     , safe-coloured-text     , safe-coloured-text-gen+    , safe-coloured-text-parsing     , sydtest     , text   default-language: Haskell2010
+ test/Text/Colour/Chunk/ParsingRoundtripSpec.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}++module Text.Colour.Chunk.ParsingRoundtripSpec (spec) where++import Control.Monad+import qualified Data.ByteString as SB+import Data.List (sort)+import qualified Data.Text as Text+import qualified Data.Text.Encoding as TE+import Path+import Path.IO (listDirRecurRel, resolveDir')+import Test.Syd+import Text.Colour.Capabilities+import Text.Colour.Chunk+import Text.Colour.Chunk.Parsing++spec :: Spec+spec = do+  resourceDir <- liftIO $ resolveDir' "test_resources"+  let chunkDir = resourceDir </> [reldir|chunk|]+  files <- liftIO $ sort . snd <$> listDirRecurRel chunkDir+  describe "golden file roundtrip" $+    forM_ files $ \file ->+      it ("roundtrips " ++ fromRelFile file) $ do+        bs <- SB.readFile (fromAbsFile (chunkDir </> file))+        content <- case TE.decodeUtf8' bs of+          Left err -> expectationFailure $ "Invalid UTF-8: " ++ show err+          Right t -> pure t+        let (_, parsed) = parseAnsiChunks (chunk Text.empty) content+            reRendered = renderChunksText With24BitColours parsed+        reRendered `shouldBe` content
test/Text/Colour/ChunkSpec.hs view
@@ -40,13 +40,18 @@                   pure $ Colour8 intensity terminalColour             let mColour = Nothing : map Just colour             chunkItalic <- Nothing : map Just [minBound .. maxBound]+            chunkStrikethrough <- Nothing : map Just [minBound .. maxBound]+            chunkSwapForegroundBackground <- Nothing : map Just [minBound .. maxBound]+            chunkConcealed <- Nothing : map Just [minBound .. maxBound]+            chunkOverlined <- Nothing : map Just [minBound .. maxBound]             chunkConsoleIntensity <- Nothing : map Just [minBound .. maxBound]             chunkUnderlining <- Nothing : map Just [minBound .. maxBound]             chunkBlinking <- Nothing : map Just [minBound .. maxBound]             chunkForeground <- mColour             chunkBackground <- mColour             let chunkText = T.pack string-            let italicName i = if i then "non-italic" else "italic"+            let boolName label b = if b then label else "non-" <> label+                boolPath label b = if b then label else "no-" <> label                 consoleIntensityName :: ConsoleIntensity -> String                 consoleIntensityName = \case                   BoldIntensity -> "bold"@@ -61,12 +66,16 @@                 blinkingName = \case                   SlowBlinking -> "slow blinking"                   RapidBlinking -> "rapid blinking"-                  NoBlinking -> "no underline"+                  NoBlinking -> "no blinking"                 name =                   unwords $                     filter                       (not . null)-                      [ maybe "" italicName chunkItalic,+                      [ maybe "" (boolName "italic") chunkItalic,+                        maybe "" (boolName "strikethrough") chunkStrikethrough,+                        maybe "" (boolName "reverse") chunkSwapForegroundBackground,+                        maybe "" (boolName "concealed") chunkConcealed,+                        maybe "" (boolName "overlined") chunkOverlined,                         maybe "" consoleIntensityName chunkConsoleIntensity,                         maybe "" underliningName chunkUnderlining,                         maybe "" blinkingName chunkBlinking,@@ -78,7 +87,6 @@                         "background"                       ] -                italicPath i = if i then "non-italic" else "italic"                 consoleIntensityPath :: ConsoleIntensity -> FilePath                 consoleIntensityPath = \case                   BoldIntensity -> "bold"@@ -93,13 +101,17 @@                 blinkingPath = \case                   SlowBlinking -> "slow-blinking"                   RapidBlinking -> "rapid-blinking"-                  NoBlinking -> "no-underline"+                  NoBlinking -> "no-blinking"                 path =                   intercalate                     "-"                     ( filter                         (not . null)-                        [ maybe "" italicPath chunkItalic,+                        [ maybe "" (boolPath "it") chunkItalic,+                          maybe "" (boolPath "st") chunkStrikethrough,+                          maybe "" (boolPath "rv") chunkSwapForegroundBackground,+                          maybe "" (boolPath "hd") chunkConcealed,+                          maybe "" (boolPath "ol") chunkOverlined,                           maybe "" consoleIntensityPath chunkConsoleIntensity,                           maybe "" underliningPath chunkUnderlining,                           maybe "" blinkingPath chunkBlinking,@@ -121,6 +133,10 @@             let colour = Colour8Bit <$> [minBound .. maxBound]             let mColour = Nothing : map Just colour             let chunkItalic = Nothing+            let chunkStrikethrough = Nothing+            let chunkSwapForegroundBackground = Nothing+            let chunkConcealed = Nothing+            let chunkOverlined = Nothing             let chunkConsoleIntensity = Nothing             let chunkUnderlining = Nothing             let chunkBlinking = Nothing@@ -159,6 +175,10 @@                   pure $ Colour24Bit r g b             let mColour = Nothing : map Just colour             let chunkItalic = Nothing+            let chunkStrikethrough = Nothing+            let chunkSwapForegroundBackground = Nothing+            let chunkConcealed = Nothing+            let chunkOverlined = Nothing             let chunkConsoleIntensity = Nothing             let chunkUnderlining = Nothing             let chunkBlinking = Nothing
+ test_resources/chunk/8/hd-no-ol-underline-slow-blinking-bright-blue-fg-dull-black-bg.dat view
@@ -0,0 +1,1 @@+[8;55;4;5;94;40mook[m
+ test_resources/chunk/8/it-st-no-rv-no-ol-non-bold-slow-blinking-bright-red-fg-no-bg.dat view
@@ -0,0 +1,1 @@+[3;9;27;55;5;22;91mook[m
− test_resources/chunk/8/italic-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat
@@ -1,1 +0,0 @@-[23;22;33;102mook[m
+ test_resources/chunk/8/no-blinking-dull-blue-fg-dull-cyan-bg.dat view
@@ -0,0 +1,1 @@+[25;34;46mook[m
+ test_resources/chunk/8/no-hd-faint-rapid-blinking-dull-cyan-fg-bright-white-bg.dat view
@@ -0,0 +1,1 @@+[28;6;2;36;107mook[m
+ test_resources/chunk/8/no-it-no-st-no-hd-ol-bold-double-underline-dull-magenta-fg-dull-black-bg.dat view
@@ -0,0 +1,1 @@+[23;29;28;53;21;1;35;40mook[m
+ test_resources/chunk/8/no-ol-non-bold-slow-blinking-dull-yellow-fg-bright-green-bg.dat view
@@ -0,0 +1,1 @@+[55;5;22;33;102mook[m
+ test_resources/chunk/8/no-rv-no-hd-ol-double-underline-no-blinking-bright-black-fg-bright-red-bg.dat view
@@ -0,0 +1,1 @@+[27;28;53;21;25;90;101mook[m
+ test_resources/chunk/8/no-st-no-ol-bold-underline-rapid-blinking-dull-red-fg-dull-blue-bg.dat view
@@ -0,0 +1,1 @@+[29;55;4;6;1;31;44mook[m
− test_resources/chunk/8/no-underline-dull-blue-fg-dull-cyan-bg.dat
@@ -1,1 +0,0 @@-[34;46mook[m
test_resources/chunk/8/no-underline-rapid-blinking-dull-red-fg-bright-blue-bg.dat view
@@ -1,1 +1,1 @@-[24;31;104mook[m+[24;6;31;104mook[m
test_resources/chunk/8/slow-blinking-dull-cyan-fg-bright-blue-bg.dat view
@@ -1,1 +1,1 @@-[36;104mook[m+[5;36;104mook[m
+ test_resources/chunk/8/st-ol-faint-no-underline-bright-green-fg-dull-black-bg.dat view
@@ -0,0 +1,1 @@+[9;53;24;2;92;40mook[m
+ test_resources/chunk/8/underline-no-blinking-bright-black-fg-dull-black-bg.dat view
@@ -0,0 +1,1 @@+[4;25;90;40mook[m
− test_resources/chunk/8/underline-no-underline-bright-black-fg-dull-black-bg.dat
@@ -1,1 +0,0 @@-[4;90;40mook[m