hledger-lib-1.2: Core data types, parsers and functionality for the hledger accounting tools

Safe HaskellNone



Parse format strings provided by --format, with awareness of hledger's report item fields. The formats are used by report-specific renderers like renderBalanceReportItem.



parseStringFormat :: String -> Either String StringFormat Source #

Parse a string format specification, or return a parse error.

data StringFormat Source #

A format specification/template to use when rendering a report line item as text.

A format is a sequence of components; each is either a literal string, or a hledger report item field with specified width and justification whose value will be interpolated at render time.

A component's value may be a multi-line string (or a multi-commodity amount), in which case the final string will be either single-line or a top or bottom-aligned multi-line string depending on the StringFormat variant used.

Currently this is only used in the balance command's single-column mode, which provides a limited StringFormat renderer.


OneLine [StringFormatComponent]

multi-line values will be rendered on one line, comma-separated

TopAligned [StringFormatComponent]

values will be top-aligned (and bottom-padded to the same height)

BottomAligned [StringFormatComponent]

values will be bottom-aligned (and top-padded)

data StringFormatComponent Source #


FormatLiteral String

Literal text to be rendered as-is

FormatField Bool (Maybe Int) (Maybe Int) ReportItemField

A data field to be formatted and interpolated. Parameters:

  • Left justify ? Right justified if false
  • Minimum width ? Will be space-padded if narrower than this
  • Maximum width ? Will be clipped if wider than this
  • Which of the standard hledger report item fields to interpolate

data ReportItemField Source #

An id identifying which report item field to interpolate. These are drawn from several hledger report types, so are not all applicable for a given report.



A posting or balance report item's account name


A posting or register or entry report item's date


A posting or register or entry report item's description


A balance or posting report item's balance or running total. Always rendered right-justified.


A balance report item's indent level (which may be different from the account name depth). Rendered as this number of spaces, multiplied by the minimum width spec if any.

FieldNo Int

A report item's nth field. May be unimplemented.