penny-0.32.0.0: Extensible double-entry accounting system

Safe HaskellNone

Penny.Cabin.Interface

Description

An interface for other Penny components to use. A report is anything that is a Report.

Synopsis

Documentation

type PosArg = StringSource

The function that will print the report, and the positional arguments. If there was a problem parsing the command line options, return an Exception with an error message.

Parsing the filter options can have one of two results: a help string, or a list of positional arguments and a function that prints a report. Or, the parse might fail.

type ParseResult = Either Text ArgsAndReportSource

The result of parsing the arguments to a report. Failures are indicated with a Text. The name of the executable and the word error will be prepended to this Text; otherwise, it is printed as-is, so be sure to include any trailing newline if needed.

type PrintReportSource

Arguments

 = (Amount Qty -> Text)

Function that gives a rendering for quantities that are not already formatted. This function is passed as part of PrintReport because it allows the function to be built after the ledger has already been parsed.

-> [Transaction]

All transactions to be included in the report. The report must sort and filter them

-> [PricePoint]

PricePoints to be included in the report

-> Either Text [Chunk]

The exception type is a strict Text, containing the error message. The success type is a list of either a Chunk or a PreChunk containing the resulting report. This allows for errors after the list of transactions has been seen. The name of the executable and the word error will be prepended to this Text; otherwise, it is printed as-is, so be sure to include any trailing newline if needed.

type MkReportSource

Arguments

 = CaseSensitive

Result from previous parses indicating whether the user desires case sensitivity (this may have been changed in the filtering options)

-> (CaseSensitive -> Text -> Either Text Matcher)

Result from previous parsers indicating the matcher factory the user wishes to use

-> Changers

Result from previous parsers indicating which color scheme to use.

-> ExprDesc

Result from previous parsers indicating whether the user wants RPN or infix

-> ([Transaction] -> [(LibertyMeta, Posting)])

Result from previous parsers that will sort and filter incoming transactions

-> Mode (ProgName -> String) ParseResult