safe-coloured-text-gen 0.0.0.4 → 0.0.0.5
raw patch · 5 files changed
+77/−62 lines, 5 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Text.Colour.Gen: instance Data.GenValidity.GenValid Text.Colour.Chunk.ChunkStyle
Files
- CHANGELOG.md +6/−0
- safe-coloured-text-gen.cabal +2/−2
- src/Text/Colour/Gen.hs +4/−0
- test/Text/Colour/Chunk/ParsingRoundtripSpec.hs +1/−2
- test/Text/Colour/ChunkSpec.hs +64/−58
CHANGELOG.md view
@@ -1,5 +1,11 @@ # Changelog for safe-coloured-text-gen +## [0.0.0.5] - 2026-04-12++### Added++* `GenValid ChunkStyle` instance+ ## [0.0.0.4] - 2026-04-12 ### Added
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.37.0.+-- This file has been generated from package.yaml by hpack version 0.38.3. -- -- see: https://github.com/sol/hpack name: safe-coloured-text-gen-version: 0.0.0.4+version: 0.0.0.5 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
src/Text/Colour/Gen.hs view
@@ -12,6 +12,10 @@ genValid = genValidStructurallyWithoutExtraChecking shrinkValid = shrinkValidStructurallyWithoutExtraFiltering +instance GenValid ChunkStyle where+ genValid = genValidStructurallyWithoutExtraChecking+ shrinkValid = shrinkValidStructurallyWithoutExtraFiltering+ instance GenValid CSI where genValid = genValidStructurallyWithoutExtraChecking shrinkValid = shrinkValidStructurallyWithoutExtraFiltering
test/Text/Colour/Chunk/ParsingRoundtripSpec.hs view
@@ -6,7 +6,6 @@ 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')@@ -27,6 +26,6 @@ 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+ let (_, parsed) = parseAnsiChunks noStyle content reRendered = renderChunksText With24BitColours parsed reRendered `shouldBe` content
test/Text/Colour/ChunkSpec.hs view
@@ -39,17 +39,19 @@ intensity <- [minBound .. maxBound] 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+ chunkStyleItalic <- Nothing : map Just [minBound .. maxBound]+ chunkStyleStrikethrough <- Nothing : map Just [minBound .. maxBound]+ chunkStyleSwapForegroundBackground <- Nothing : map Just [minBound .. maxBound]+ chunkStyleConcealed <- Nothing : map Just [minBound .. maxBound]+ chunkStyleOverlined <- Nothing : map Just [minBound .. maxBound]+ chunkStyleConsoleIntensity <- Nothing : map Just [minBound .. maxBound]+ chunkStyleUnderlining <- Nothing : map Just [minBound .. maxBound]+ chunkStyleBlinking <- Nothing : map Just [minBound .. maxBound]+ chunkStyleForeground <- mColour+ chunkStyleBackground <- mColour+ let chunkStyleHyperlink = Nothing let chunkText = T.pack string+ chunkStyle = ChunkStyle {..} let boolName label b = if b then label else "non-" <> label boolPath label b = if b then label else "no-" <> label consoleIntensityName :: ConsoleIntensity -> String@@ -71,19 +73,19 @@ unwords $ filter (not . null)- [ 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,+ [ maybe "" (boolName "italic") chunkStyleItalic,+ maybe "" (boolName "strikethrough") chunkStyleStrikethrough,+ maybe "" (boolName "reverse") chunkStyleSwapForegroundBackground,+ maybe "" (boolName "concealed") chunkStyleConcealed,+ maybe "" (boolName "overlined") chunkStyleOverlined,+ maybe "" consoleIntensityName chunkStyleConsoleIntensity,+ maybe "" underliningName chunkStyleUnderlining,+ maybe "" blinkingName chunkStyleBlinking, string, "with",- mColourName chunkForeground,+ mColourName chunkStyleForeground, "foreground on",- mColourName chunkBackground,+ mColourName chunkStyleBackground, "background" ] @@ -107,17 +109,17 @@ "-" ( filter (not . null)- [ 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,- mColourPath chunkForeground,+ [ maybe "" (boolPath "it") chunkStyleItalic,+ maybe "" (boolPath "st") chunkStyleStrikethrough,+ maybe "" (boolPath "rv") chunkStyleSwapForegroundBackground,+ maybe "" (boolPath "hd") chunkStyleConcealed,+ maybe "" (boolPath "ol") chunkStyleOverlined,+ maybe "" consoleIntensityPath chunkStyleConsoleIntensity,+ maybe "" underliningPath chunkStyleUnderlining,+ maybe "" blinkingPath chunkStyleBlinking,+ mColourPath chunkStyleForeground, "fg",- mColourPath chunkBackground,+ mColourPath chunkStyleBackground, "bg" ] )@@ -132,30 +134,32 @@ let chunks string = justAFew $ do 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- chunkForeground <- mColour- chunkBackground <- mColour+ let chunkStyleItalic = Nothing+ let chunkStyleStrikethrough = Nothing+ let chunkStyleSwapForegroundBackground = Nothing+ let chunkStyleConcealed = Nothing+ let chunkStyleOverlined = Nothing+ let chunkStyleConsoleIntensity = Nothing+ let chunkStyleUnderlining = Nothing+ let chunkStyleBlinking = Nothing+ chunkStyleForeground <- mColour+ chunkStyleBackground <- mColour+ let chunkStyleHyperlink = Nothing let chunkText = T.pack string+ chunkStyle = ChunkStyle {..} let name = unwords- [ mColourName chunkForeground,+ [ mColourName chunkStyleForeground, "foreground on",- mColourName chunkBackground,+ mColourName chunkStyleBackground, "background" ] path = intercalate "-"- [ mColourPath chunkForeground,+ [ mColourPath chunkStyleForeground, "fg",- mColourPath chunkBackground,+ mColourPath chunkStyleBackground, "bg" ] <> ".dat"@@ -174,30 +178,32 @@ b <- w 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- chunkForeground <- mColour- chunkBackground <- mColour+ let chunkStyleItalic = Nothing+ let chunkStyleStrikethrough = Nothing+ let chunkStyleSwapForegroundBackground = Nothing+ let chunkStyleConcealed = Nothing+ let chunkStyleOverlined = Nothing+ let chunkStyleConsoleIntensity = Nothing+ let chunkStyleUnderlining = Nothing+ let chunkStyleBlinking = Nothing+ chunkStyleForeground <- mColour+ chunkStyleBackground <- mColour+ let chunkStyleHyperlink = Nothing let chunkText = T.pack string+ chunkStyle = ChunkStyle {..} let name = unwords- [ mColourName chunkForeground,+ [ mColourName chunkStyleForeground, "foreground on",- mColourName chunkBackground,+ mColourName chunkStyleBackground, "background" ] path = intercalate "-"- [ mColourPath chunkForeground,+ [ mColourPath chunkStyleForeground, "fg",- mColourPath chunkBackground,+ mColourPath chunkStyleBackground, "bg" ] <> ".dat"