packages feed

text-ansi 0.2.0 → 0.2.1

raw patch · 3 files changed

+352/−2 lines, 3 filesdep ~base

Dependency ranges changed: base

Files

CHANGELOG.md view
@@ -1,8 +1,12 @@+## [0.2.1] - 2022-11-05++- Add `String.ANSI` module+ ## [0.2.0] - 2022-10-28  - Drop the `Data` prefix from `Data.Text.ANSI` and `Data.Text.Builder.ANSI` modules - Rename `Text.Builder.ANSI` to `Text.Lazy.Builder.ANSI`-- Add `Text.Builder.ANSI` back, but based on `text-builder`'s builder instead of `text`'s builder.+- Add `Text.Builder.ANSI` back, but based on `text-builder`'s builder instead of `text`'s builder  ## [0.1.1] - 2021-01-07 
+ src/String/ANSI.hs view
@@ -0,0 +1,345 @@+module String.ANSI+  ( -- $intro++    -- * Foreground color+    black,+    red,+    green,+    yellow,+    blue,+    magenta,+    cyan,+    white,+    brightBlack,+    brightRed,+    brightGreen,+    brightYellow,+    brightBlue,+    brightMagenta,+    brightCyan,+    brightWhite,+    rgb,++    -- * Background color+    blackBg,+    redBg,+    greenBg,+    yellowBg,+    blueBg,+    magentaBg,+    cyanBg,+    whiteBg,+    brightBlackBg,+    brightRedBg,+    brightGreenBg,+    brightYellowBg,+    brightBlueBg,+    brightMagentaBg,+    brightCyanBg,+    brightWhiteBg,+    rgbBg,++    -- * Style+    bold,+    faint,+    italic,+    underline,+    doubleUnderline,+    strikethrough,+    frame,+    encircle,+    overline,+  )+where++import qualified Data.Text as Text+import Data.Word (Word8)+import Text.Builder (Builder)+import qualified Text.Builder as Builder+import qualified Text.Builder.ANSI as Builder.ANSI++-- $intro+--+-- Text styling for ANSI terminals using SGR codes, as defined by the+-- <https://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf ECMA-48>+-- standard.+--+-- Supports foreground\/background color, bold\/faint intensity, italic,+-- single\/double underline, strikethrough, frame, encircle, and overline escape+-- sequences. Some styles may not work on your terminal.+--+-- Also features terminal detection, so redirecting styled output to a file will+-- automatically strip the ANSI escape sequences.++-- | Black foreground.+black :: String -> String+black =+  lift Builder.ANSI.black+{-# INLINE black #-}++-- | Red foreground.+red :: String -> String+red =+  lift Builder.ANSI.red+{-# INLINE red #-}++-- | Green foreground.+green :: String -> String+green =+  lift Builder.ANSI.green+{-# INLINE green #-}++-- | Yellow foreground.+yellow :: String -> String+yellow =+  lift Builder.ANSI.yellow+{-# INLINE yellow #-}++-- | Blue foreground.+blue :: String -> String+blue =+  lift Builder.ANSI.blue+{-# INLINE blue #-}++-- | Magenta foreground.+magenta :: String -> String+magenta =+  lift Builder.ANSI.magenta+{-# INLINE magenta #-}++-- | Cyan foreground.+cyan :: String -> String+cyan =+  lift Builder.ANSI.cyan+{-# INLINE cyan #-}++-- | White foreground.+white :: String -> String+white =+  lift Builder.ANSI.white+{-# INLINE white #-}++-- | Bright black foreground.+brightBlack :: String -> String+brightBlack =+  lift Builder.ANSI.brightBlack+{-# INLINE brightBlack #-}++-- | Bright red foreground.+brightRed :: String -> String+brightRed =+  lift Builder.ANSI.brightRed+{-# INLINE brightRed #-}++-- | Bright green foreground.+brightGreen :: String -> String+brightGreen =+  lift Builder.ANSI.brightGreen+{-# INLINE brightGreen #-}++-- | Bright yellow foreground.+brightYellow :: String -> String+brightYellow =+  lift Builder.ANSI.brightYellow+{-# INLINE brightYellow #-}++-- | Bright blue foreground.+brightBlue :: String -> String+brightBlue =+  lift Builder.ANSI.brightBlue+{-# INLINE brightBlue #-}++-- | Bright magenta foreground.+brightMagenta :: String -> String+brightMagenta =+  lift Builder.ANSI.brightMagenta+{-# INLINE brightMagenta #-}++-- | Bright cyan foreground.+brightCyan :: String -> String+brightCyan =+  lift Builder.ANSI.brightCyan+{-# INLINE brightCyan #-}++-- | Bright white foreground.+brightWhite :: String -> String+brightWhite =+  lift Builder.ANSI.brightWhite+{-# INLINE brightWhite #-}++-- | RGB foreground.+rgb :: Word8 -> Word8 -> Word8 -> String -> String+rgb r g b =+  lift (Builder.ANSI.rgb r g b)+{-# INLINE rgb #-}++-- | Black background.+blackBg :: String -> String+blackBg =+  lift Builder.ANSI.blackBg+{-# INLINE blackBg #-}++-- | Red background.+redBg :: String -> String+redBg =+  lift Builder.ANSI.redBg+{-# INLINE redBg #-}++-- | Green background.+greenBg :: String -> String+greenBg =+  lift Builder.ANSI.greenBg+{-# INLINE greenBg #-}++-- | Yellow background.+yellowBg :: String -> String+yellowBg =+  lift Builder.ANSI.yellowBg+{-# INLINE yellowBg #-}++-- | Blue background.+blueBg :: String -> String+blueBg =+  lift Builder.ANSI.blueBg+{-# INLINE blueBg #-}++-- | Magenta background.+magentaBg :: String -> String+magentaBg =+  lift Builder.ANSI.magentaBg+{-# INLINE magentaBg #-}++-- | Cyan background.+cyanBg :: String -> String+cyanBg =+  lift Builder.ANSI.cyanBg+{-# INLINE cyanBg #-}++-- | White background.+whiteBg :: String -> String+whiteBg =+  lift Builder.ANSI.whiteBg+{-# INLINE whiteBg #-}++-- | Bright black background.+brightBlackBg :: String -> String+brightBlackBg =+  lift Builder.ANSI.brightBlackBg+{-# INLINE brightBlackBg #-}++-- | Bright red background.+brightRedBg :: String -> String+brightRedBg =+  lift Builder.ANSI.brightRedBg+{-# INLINE brightRedBg #-}++-- | Bright green background.+brightGreenBg :: String -> String+brightGreenBg =+  lift Builder.ANSI.brightGreenBg+{-# INLINE brightGreenBg #-}++-- | Bright yellow background.+brightYellowBg :: String -> String+brightYellowBg =+  lift Builder.ANSI.brightYellowBg+{-# INLINE brightYellowBg #-}++-- | Bright blue background.+brightBlueBg :: String -> String+brightBlueBg =+  lift Builder.ANSI.brightBlueBg+{-# INLINE brightBlueBg #-}++-- | Bright magenta background.+brightMagentaBg :: String -> String+brightMagentaBg =+  lift Builder.ANSI.brightMagentaBg+{-# INLINE brightMagentaBg #-}++-- | Bright cyan background.+brightCyanBg :: String -> String+brightCyanBg =+  lift Builder.ANSI.brightCyanBg+{-# INLINE brightCyanBg #-}++-- | Bright white background.+brightWhiteBg :: String -> String+brightWhiteBg =+  lift Builder.ANSI.brightWhiteBg+{-# INLINE brightWhiteBg #-}++-- | RGB background.+rgbBg :: Word8 -> Word8 -> Word8 -> String -> String+rgbBg r g b =+  lift (Builder.ANSI.rgbBg r g b)+{-# INLINE rgbBg #-}++-- | __Bold__ style (high intensity).+bold :: String -> String+bold =+  lift Builder.ANSI.bold+{-# INLINE bold #-}++-- | Faint style (low intensity).+faint :: String -> String+faint =+  lift Builder.ANSI.faint+{-# INLINE faint #-}++-- | /Italic/ style.+italic :: String -> String+italic =+  lift Builder.ANSI.italic+{-# INLINE italic #-}++-- | U̲n̲d̲e̲r̲l̲i̲n̲e̲ style.+underline :: String -> String+underline =+  lift Builder.ANSI.underline+{-# INLINE underline #-}++-- | D̳o̳u̳b̳l̳e̳ ̳u̳n̳d̳e̳r̳l̳i̳n̳e̳ style.+doubleUnderline :: String -> String+doubleUnderline =+  lift Builder.ANSI.doubleUnderline+{-# INLINE doubleUnderline #-}++-- | S̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶ style.+strikethrough :: String -> String+strikethrough =+  lift Builder.ANSI.strikethrough+{-# INLINE strikethrough #-}++-- | Frame style.+frame :: String -> String+frame =+  lift Builder.ANSI.frame+{-# INLINE frame #-}++-- | Encircle style.+encircle :: String -> String+encircle =+  lift Builder.ANSI.encircle+{-# INLINE encircle #-}++-- | O̅v̅e̅r̅l̅i̅n̅e̅ style.+overline :: String -> String+overline =+  lift Builder.ANSI.overline+{-# INLINE overline #-}++--++lift :: (Builder -> Builder) -> String -> String+lift f =+  Text.unpack . Builder.run . f . Builder.string+-- Don't inline before phase 2+{-# NOINLINE [2] lift #-}++-- Collapse lift/lift to a single lift before phase 2+{-# RULES+"lift/lift" [~2] forall f g s.+  lift f (lift g s) =+    lift (f . g) s+  #-}
text-ansi.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2  name: text-ansi-version: 0.2.0+version: 0.2.1 category: Data synopsis: Text styling for ANSI terminals. description:@@ -41,6 +41,7 @@   default-language:     Haskell2010   exposed-modules:+    String.ANSI     Text.ANSI     Text.Builder.ANSI     Text.Lazy.Builder.ANSI