hledger-lib-1.32.3: A library providing the core functionality of hledger

Safe Haskell | Safe-Inferred
Language | Haskell2010

Hledger.Utils.Text

Contents

- misc
- single-line layout
- multi-line layout
- wide-character-aware layout
- Reading
- tests

Description

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

Synopsis

- textCapitalise :: Text -> Text
- textUnbracket :: Text -> Text
- wrap :: Text -> Text -> Text -> Text
- textChomp :: Text -> Text
- quoteIfSpaced :: Text -> Text
- textQuoteIfNeeded :: Text -> Text
- escapeDoubleQuotes :: Text -> Text
- escapeBackslash :: Text -> Text
- stripquotes :: Text -> Text
- textElideRight :: Int -> Text -> Text
- formatText :: Bool -> Maybe Int -> Maybe Int -> Text -> Text
- textConcatTopPadded :: [Text] -> Text
- textConcatBottomPadded :: [Text] -> Text
- fitText :: Maybe Int -> Maybe Int -> Bool -> Bool -> Text -> Text
- linesPrepend :: Text -> Text -> Text
- linesPrepend2 :: Text -> Text -> Text -> Text
- unlinesB :: [Builder] -> Builder
- data WideBuilder = WideBuilder {
  - wbBuilder :: !Builder
  - wbWidth :: !Int
  }
- wbToText :: WideBuilder -> Text
- wbFromText :: Text -> WideBuilder
- wbUnpack :: WideBuilder -> String
- textTakeWidth :: Int -> Text -> Text
- readDecimal :: Text -> Integer
- tests_Text :: TestTree

# misc

textCapitalise :: Text -> Text Source #

textUnbracket :: Text -> Text Source #

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

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.

textQuoteIfNeeded :: Text -> Text Source #

escapeDoubleQuotes :: Text -> Text Source #

escapeBackslash :: Text -> Text Source #

stripquotes :: Text -> Text Source #

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

# single-line layout

textElideRight :: Int -> Text -> Text Source #

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

- wbBuilder :: !Builder
- wbWidth :: !Int

#### Instances

Instances details

Monoid WideBuilder Source # |
Instance details Defined in Text.WideString Methods mempty :: WideBuilder Source # mappend :: WideBuilder -> WideBuilder -> WideBuilder Source # mconcat :: [WideBuilder] -> WideBuilder Source #
Semigroup WideBuilder Source # |
Instance details Defined in Text.WideString Methods (<>) :: WideBuilder -> WideBuilder -> WideBuilder Source # sconcat :: NonEmpty WideBuilder -> WideBuilder Source # stimes :: Integral b => b -> WideBuilder -> WideBuilder Source #
Show WideBuilder Source # |
Instance details Defined in Text.WideString Methods showsPrec :: Int -> WideBuilder -> ShowS Source # show :: WideBuilder -> String Source # showList :: [WideBuilder] -> ShowS Source #

wbToText :: WideBuilder -> Text Source #

Convert a WideBuilder to a strict Text.

wbFromText :: Text -> WideBuilder Source #

Convert a strict Text to a WideBuilder.

wbUnpack :: WideBuilder -> String Source #

Convert a WideBuilder to a String.

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

tests_Text :: TestTree Source #