escaped alternatives and similar packages
Based on the "Text" category.
Alternatively, view escaped alternatives based on common mentions on social networks and blogs.
-
skylighting
A Haskell syntax highlighting library with tokenizers derived from KDE syntax highlighting descriptions -
double-conversion
A fast Haskell library for converting between double precision floating point numbers and text strings. It is implemented as a binding to the V8-derived C++ double-conversion library.
InfluxDB – Built for High-Performance Time Series Workloads

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of escaped or a related project?
Popular Comparisons
README
escaped
Produce Text
with terminal escape sequences.
Usage
Quick Start
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Semigroup ((<>))
import Data.Text.Escaped
import qualified Data.Text.IO as T
main :: IO ()
main = T.putStrLn $ render $ "This is " <> red "red" <> " text."
Example
Running the example executable will produce everything this library currently supports:
[Example](./example.png)
Helper Functions
The above uses the red
helper function, which prefixes the given value with
the (foreground) color red, then resets after.
NOTE: this function composes Escaped
s, so you can nest:
"This is " <> red (bg Blue "red on blue") <> " text."
The Escaped
Type
Behind those helpers, a Semigroup
instance, and the OverLoadedStrings
extension, what you're actually doing is building up a value of type Escaped
:
λ> :set -XOverloadedStrings
λ> "one" <> red "red" <> "three"
Many [Plain "one",FG Red,Plain "red",Reset,Plain "three"]
λ> render it
"one\ESC[31mred\ESC[0mthree"
The Escaped
type has constructors for the various shell escapes and is meant
to be used directly for non-trivial cases.
"This is " <> Blink <> FG Red <> "blinking red" <> Reset <> " text."
If you need to interpolate non-literals of type Text
, use the Plain
constructor:
logMessage :: Level -> Text -> Escaped
logMessage l msg = "[" <> prefix <> "] " <> Plain msg
where
prefix :: Level -> Escaped
prefix Info = blue "INFO"
prefix Warn = yellow "WARN"
-- etc.
Terminal Applications
The terminalRenderer
function queries if stdout
is connected to a tty and
returns render
or plain
as appropriate:
main = do
r <- terminalRenderer
T.putStrLn $ r $
"This will be escaped as "
<> red "red"
<> " only if we're connected to a tty."
Development & Testing
stack setup
stack build --pedantic test
See also the [Makefile
](./Makefile).
[CHANGELOG](./CHANGELOG.md) | [LICENSE](./LICENSE)
*Note that all licence references and agreements mentioned in the escaped README section above
are relevant to that project's source code only.