Safe Haskell | None |
---|
An interface for other Penny components to use. A report is
anything that is a Report
.
- type PosArg = String
- type HelpStr = String
- type ArgsAndReport = ([PosArg], PrintReport)
- type ParseResult = Either Text ArgsAndReport
- type PrintReport = (Amount Qty -> Text) -> [Transaction] -> [PricePoint] -> Either Text [Chunk]
- type Report = Runtime -> (HelpStr, MkReport)
- type MkReport = CaseSensitive -> (CaseSensitive -> Text -> Either Text Matcher) -> Changers -> ExprDesc -> ([Transaction] -> [(LibertyMeta, Posting)]) -> Mode (ProgName -> String) ParseResult
Documentation
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 ArgsAndReport = ([PosArg], PrintReport)Source
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
= (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 |
= 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 |