hledger-lib-1.22.1: A reusable library providing the core functionality of hledger
Safe HaskellNone
LanguageHaskell2010

Hledger.Utils.Text

Description

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

Synopsis

misc

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

Wrap a Text with the surrounding Text.

textChomp :: Text -> Text Source #

Remove trailing newlines/carriage returns.

quoteIfSpaced :: Text -> Text Source #

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

stripquotes :: Text -> Text Source #

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

single-line layout

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

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 Source #

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 Source #

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 Source #

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 Source #

Add a prefix to each line of a string.

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

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

unlinesB :: [Builder] -> Builder Source #

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

wide-character-aware layout

data WideBuilder Source #

Helper for constructing Builders while keeping track of text width.

Constructors

WideBuilder 

Fields

wbToText :: WideBuilder -> Text Source #

Convert a WideBuilder to a strict Text.

wbUnpack :: WideBuilder -> String Source #

Convert a WideBuilder to a String.

textWidth :: Text -> Int Source #

Calculate the render width of a string, considering wide characters (counted as double width)

textTakeWidth :: Int -> Text -> Text Source #

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 Source #

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

tests