hledger-lib-0.11.1: Core types and utilities for working with hledger (or c++ ledger) data.

Hledger.Data.Utils

Description

Standard imports and utilities which are useful everywhere, or needed low in the module hierarchy. This is the bottom of hledger's module graph.

Synopsis

Documentation

module Data.Char

module Data.List

module Data.Maybe

module Data.Ord

module Data.Tree

concatTopPadded :: [String] -> StringSource

Join multi-line strings as side-by-side rectangular strings of the same height, top-padded.

concatBottomPadded :: [String] -> StringSource

Join multi-line strings as side-by-side rectangular strings of the same height, bottom-padded.

vConcatRightAligned :: [String] -> StringSource

Compose strings vertically and right-aligned.

padtop :: Int -> String -> StringSource

Convert a multi-line string to a rectangular string top-padded to the specified height.

padbottom :: Int -> String -> StringSource

Convert a multi-line string to a rectangular string bottom-padded to the specified height.

padleft :: Int -> String -> StringSource

Convert a multi-line string to a rectangular string left-padded to the specified width.

padright :: Int -> String -> StringSource

Convert a multi-line string to a rectangular string right-padded to the specified width.

cliptopleft :: Int -> Int -> String -> StringSource

Clip a multi-line string to the specified width and height from the top left.

fitto :: Int -> Int -> String -> StringSource

Clip and pad a multi-line string to fill the specified width and height.

difforzero :: (Num a, Ord a) => a -> a -> aSource

splitAtElement :: Eq a => a -> [a] -> [[a]]Source

leaves :: Tree a -> [a]Source

List just the leaf nodes of a tree

subtreeat :: Eq a => a -> Tree a -> Maybe (Tree a)Source

get the sub-tree rooted at the first (left-most, depth-first) occurrence of the specified node value

subtreeinforest :: Eq a => a -> [Tree a] -> Maybe (Tree a)Source

get the sub-tree for the specified node value in the first tree in forest in which it occurs.

treeprune :: Int -> Tree a -> Tree aSource

remove all nodes past a certain depth

treemap :: (a -> b) -> Tree a -> Tree bSource

apply f to all tree nodes

treefilter :: (a -> Bool) -> Tree a -> Tree aSource

remove all subtrees whose nodes do not fulfill predicate

treeany :: (a -> Bool) -> Tree a -> BoolSource

is predicate true in any node of tree ?

showtree :: Show a => Tree a -> StringSource

show a compact ascii representation of a tree

showforest :: Show a => Forest a -> StringSource

show a compact ascii representation of a forest

strace :: Show a => a -> aSource

trace (print on stdout at runtime) a showable expression (for easily tracing in the middle of a complex expression)

ltrace :: Show a => String -> a -> aSource

labelled trace - like strace, with a newline and a label prepended

parsewith :: Parser a -> String -> Either ParseError aSource

trace an expression using a custom show function

tname :: Test -> StringSource

Get a Test's label, or the empty string.

tflatten :: Test -> [Test]Source

Flatten a Test containing TestLists into a list of single tests.

tfilter :: (Test -> Bool) -> Test -> TestSource

Filter TestLists in a Test, recursively, preserving the structure.

is :: (Eq a, Show a) => a -> a -> AssertionSource

Simple way to assert something is some expected value, with no label.

assertParse :: Either ParseError a -> AssertionSource

Assert a parse result is successful, printing the parse error on failure.

assertParseEqual :: (Show a, Eq a) => Either ParseError a -> a -> AssertionSource

Assert a parse result is some expected value, printing the parse error on failure.

module Test.HUnit