hledger-lib-1.31: A reusable library providing the core functionality of hledger
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hledger.Utils.Text

Description

Text formatting helpers, ported from String as needed. There may be better alternatives out there.

Synopsis

misc

textUnbracket :: Text -> Text #

Remove all matching pairs of square brackets and parentheses from the text.

wrap :: Text -> Text -> Text -> Text #

Wrap a Text with the surrounding Text.

textChomp :: Text -> Text #

Remove trailing newlines/carriage returns.

quoteIfSpaced :: Text -> Text #

Wrap a string in double quotes, and -prefix any embedded single quotes, if it contains whitespace and is not already single- or double-quoted.

textQuoteIfNeeded :: Text -> Text #

escapeDoubleQuotes :: Text -> Text #

stripquotes :: Text -> Text #

Strip one matching pair of single or double quotes on the ends of a string.

single-line layout

textElideRight :: Int -> Text -> Text #

formatText :: Bool -> Maybe Int -> Maybe Int -> Text -> Text #

Clip and pad a string to a minimum & maximum width, andor leftright justify it. Works on multi-line strings too (but will rewrite non-unix line endings).

multi-line layout

textConcatTopPadded :: [Text] -> Text #

Join several multi-line strings as side-by-side rectangular strings of the same height, top-padded. Treats wide characters as double width.

textConcatBottomPadded :: [Text] -> Text #

Join several multi-line strings as side-by-side rectangular strings of the same height, bottom-padded. Treats wide characters as double width.

fitText :: Maybe Int -> Maybe Int -> Bool -> Bool -> Text -> Text #

General-purpose wide-char-aware single-line text layout function. It can left- or right-pad a short string to a minimum width. It can left- or right-clip a long string to a maximum width, optionally inserting an ellipsis (the third argument). It clips and pads on the right when the fourth argument is true, otherwise on the left. It treats wide characters as double width.

linesPrepend :: Text -> Text -> Text #

Add a prefix to each line of a string.

linesPrepend2 :: Text -> Text -> Text -> Text #

Add a prefix to the first line of a string, and a different prefix to the remaining lines.

unlinesB :: [Builder] -> Builder #

Join a list of Text Builders with a newline after each item.

wide-character-aware layout

data WideBuilder #

Helper for constructing Builders while keeping track of text width.

Constructors

WideBuilder 

Fields

Instances

Instances details
Monoid WideBuilder # 
Instance details

Defined in Text.WideString

Semigroup WideBuilder # 
Instance details

Defined in Text.WideString

Show WideBuilder # 
Instance details

Defined in Text.WideString

Methods

showsPrec :: Int -> WideBuilder -> ShowS

show :: WideBuilder -> String

showList :: [WideBuilder] -> ShowS

wbToText :: WideBuilder -> Text #

Convert a WideBuilder to a strict Text.

wbFromText :: Text -> WideBuilder #

Convert a strict Text to a WideBuilder.

wbUnpack :: WideBuilder -> String #

Convert a WideBuilder to a String.

textTakeWidth :: Int -> Text -> Text #

Double-width-character-aware string truncation. Take as many characters as possible from a string without exceeding the specified width. Eg textTakeWidth 3 "りんご" = "り".

Reading

readDecimal :: Text -> Integer #

Read a decimal number from a Text. Assumes the input consists only of digit characters.

tests