An interface for other Penny components to use. A report is
anything that is a
- type PosArg = String
- type HelpStr = String
- type ArgsAndReport = ([PosArg], PrintReport)
- type ParseResult = Exceptional Text ArgsAndReport
- type PrintReport = (Amount Qty -> Text) -> [Transaction] -> [PricePoint] -> Exceptional Text [Chunk]
- type Report = Runtime -> (HelpStr, MkReport)
- type MkReport = CaseSensitive -> (CaseSensitive -> Text -> Exceptional Text Matcher) -> Changers -> ExprDesc -> ([Transaction] -> [(LibertyMeta, Posting)]) -> Mode (ProgName -> String) ParseResult
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.
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.
|= (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.
All transactions to be included in the report. The report must sort and filter them
PricePoints to be included in the report
|-> Exceptional 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
Result from previous parses indicating whether the user desires case sensitivity (this may have been changed in the filtering options)
|-> (CaseSensitive -> Text -> Exceptional Text Matcher)|
Result from previous parsers indicating the matcher factory the user wishes to use
Result from previous parsers indicating which color scheme to use.
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|