h*b'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                                                                                                                                                                                                ! ! ! ! ! " " " # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % % % % % % % & ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * * * * * * + + + + + + + + + + + + + + + + + + + + + + + + + , , , , , , , , , , , , - . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..........................................................................................................///////////////////////////////////////////////////////////////////0000001111111111111122223333333334444445555555555555567777777777777777777777777777777777777777777777777777777777777777777777777777778899:::::::::::::::;;<<<<<<<<<<<<<=>1.41> Safe-Inferred"+ hledger-libA traditional currency symbol, like $. Usually one character, sometimes more. Different from hledger's more general CommoditySymbol type. hledger-libAn ISO 4217 currency code, like EUR. Usually three upper case letters.# hledger-libLook for a ISO 4217 currency code corresponding to this currency symbol.currencySymbolToCode ""NothingcurrencySymbolToCode "$" Just "USD"$ hledger-libLook for a currency symbol corresponding to this ISO 4217 currency code.(currencyCodeToSymbol "CZK" -- Just "K" Just "K\269"%#$%#$ Safe-Inferred"0& hledger-libAn error message arising during a regular expression operation. Eg: trying to compile a malformed regular expression, or trying to apply a malformed replacement pattern.' hledger-lib>A replacement pattern. May include numeric backreferences (N).( hledger-libRegular expression. Extended regular expression-ish syntax ? But does not support eg (?i) syntax. hledger-lib-Make a nice error message for a regexp error.. hledger-lib=Test whether a Regexp matches a String. This is an alias for  for consistent naming./ hledger-lib&Tests whether a Regexp matches a Text.This currently unpacks the Text to a String, to work around a performance bug in regex-tdfa (#9), which may or may not be relevant here.0 hledger-libReturn a (possibly empty) list of match groups derived by applying the Regex to a Text.1 hledger-libA memoising version of regexReplace. Caches the result for each search pattern, replacement pattern, target string tuple. This won't generate a regular expression parsing error since that is pre-compiled nowadays, but there can still be a runtime error from the replacement pattern, eg with a backreference referring to a nonexistent match group.()*+,-'&./0123()*+,-'&./0123 Safe-Inferred"%&6<n; hledger-libA Ledger has the journal it derives from, and the accounts derived from that. Accounts are accessible both list-wise and tree-wise, since each one knows its parent and subs; the first account is the root of the tree and always exists.? hledger-libWhether an account's balance is normally a positive number (in accounting terms, a debit balance) or a negative number (credit balance). Assets and expenses are normally positive (debit), while liabilities, equity and income are normally negative (credit). ,https://en.wikipedia.org/wiki/Normal_balanceB hledger-libAn account, with its balances, parent/subaccount relationships, etc. Only the name is required; the other fields are added when needed.D hledger-libthis account's full nameE hledger-liboptional extra info from account directives relationships in the treeF hledger-libthis account's sub-accountsG hledger-libparent accountH hledger-libused in the accounts report to label elidable parents balance informationI hledger-lib&the number of postings to this accountJ hledger-lib-this account's balance, excluding subaccountsK hledger-lib-this account's balance, including subaccountsL hledger-libExtra information about an account that can be derived from its account directive (and the other account directives).N hledger-libany comment lines following an account directive for this accountO hledger-lib/tags extracted from the account comment, if anyP hledger-libthe order in which this account was declared, relative to other account declarations, during parsing (1..)Q hledger-libsource file and positionR hledger-lib+Extra information found in a tag directive.T hledger-libany comment lines following the tag directive. No tags allowed here.U hledger-lib-Extra information found in a payee directive.W hledger-lib/any comment lines following the payee directiveX hledger-lib'tags extracted from the comment, if anyY hledger-lib2The id of a data format understood by hledger, eg journal or csv>. The --output-format option selects one of these for output.` hledger-libOne of the standard *-separated value file types known by hledger,d hledger-libA journal in the process of being parsed, not yet finalised. The data is partial, and list fields are in reverse order.e hledger-libA journal, containing general ledger transactions; also directives and various other things. This is hledger's main data model.-During parsing, it is used as the type alias  ParsedJournal. The jparse* fields are mainly used during parsing and included here for convenience. The list fields described as "in parse order" are usually reversed for efficiency during parsing. After parsing, "journalFinalise" converts ParsedJournal to a finalised Journal, which has all lists correctly ordered, and much data inference and validation applied.g hledger-libthe current default year, specified by the most recent Y directive (or current date)h hledger-libthe current default commodity and its format, specified by the most recent D directivei hledger-libthe character to always parse as decimal point, if set by CsvReader's decimal-mark (or a future journal directive)j hledger-libthe current stack of parent account names, specified by apply account directivesk hledger-libthe current account name aliases in effect, specified by alias directives (& options ?) ,jparsetransactioncount :: Integer -- ^ the current count of transactions parsed so far (only journal format txns, currently)l hledger-lib2timeclock sessions which have not been clocked outn hledger-lib4Payees declared by payee directives, in parse order.o hledger-lib0Tags declared by tag directives, in parse order.p hledger-lib8Accounts declared by account directives, in parse order.q hledger-lib7Accounts which were declared with tags, and those tags.r hledger-libAccounts which were declared with a type: tag, grouped by the type.s hledger-libAll the account types known, from account declarations or account names or parent accounts.t hledger-libCommodities (and their display styles) declared by commodity directives, in parse order.u hledger-lib>Commodity display styles inferred from amounts in the journal.v hledger-libCommodity display styles declared by command line options (sometimes augmented, see the import command).w hledger-lib;P (market price) directives in the journal, in parse order.x hledger-libMarket prices inferred from transactions in the journal, in parse order.y hledger-lib+Auto posting rules declared in the journal.z hledger-lib3Periodic transaction rules declared in the journal.{ hledger-lib8Transactions recorded in the journal. The important bit.| hledger-lib6any final trailing comments in the (main) journal file} hledger-libthe file path and raw text of the main and any included journal files. The main file is first, followed by any included files in the order encountered. TODO: FilePath is a sloppy type here, don't assume it's a real file; values like "", "-", "(string)" can be seen~ hledger-libwhen this journal was last read from its file(s) NOTE: after adding new fields, eg involving account names, consider updating the Anon instance in Hleger.Cli.Anon hledger-libA historical market price (exchange rate) from one commodity to another. A more concise form of a PriceDirective, without the amount display info. hledger-lib+Date on which this price becomes effective. hledger-lib#The commodity being converted from. hledger-lib!The commodity being converted to. hledger-libOne unit of the "from" commodity is worth this quantity of the "to" commodity. hledger-libA market price declaration made by the journal format's P directive. It declares two things: a historical exchange rate between two commodities, and an amount display style for the second commodity. hledger-libA periodic transaction rule, describing a transaction that recurs. hledger-lib the period expression as written hledger-lib-the interval at which this transaction recurs hledger-libthe (possibly unbounded) period during which this transaction recurs. Contains a whole number of intervals. hledger-libthe file position where the period expression starts, and where the last posting ends hledger-libsome of Transaction's fields hledger-libA transaction modifier transformation, which adds an extra posting to the matched posting's transaction. Can be like a regular posting, or can have the tmprIsMultiplier flag set, indicating that it's a multiplier for the matched posting's amount. hledger-libA transaction modifier rule. This has a query which matches postings in the journal, and a list of transformations to apply to those postings or their transactions. Currently there is one kind of transformation: the TMPostingRule, which adds a posting ("auto posting") to the transaction, optionally setting its amount to the matched posting's amount multiplied by a constant. hledger-libthis transaction's 1-based position in the transaction stream, or 0 when not available hledger-lib8any comment lines immediately preceding this transaction hledger-libthe file position where the date starts, and where the last posting ends hledger-libthis transaction's comment lines, as a single non-indented multi-line string hledger-lib0tag names and values, extracted from the comment hledger-libthis transaction's postings hledger-lib8this posting's date, if different from the transaction's hledger-libthis posting's secondary date, if different from the transaction's hledger-libthis posting's comment lines, as a single non-indented multi-line string hledger-libtag names and values, extracted from the posting comment and (after finalisation) the posting account's directive if any hledger-liban expected balance in the account after this posting, in a single commodity, excluding subaccounts. hledger-libthis posting's parent transaction (co-recursive types). Tying this knot gets tedious, Maybe makes it easier/optional. hledger-libWhen this posting has been transformed in some way (eg its amount or cost was inferred, or the account name was changed by a pivot or budget report), this references the original untransformed posting (which will have Nothing in this field). hledger-libA balance assertion is a declaration about an account's expected balance at a certain point (posting date and parse order). They provide additional error checking and readability to a journal file.A balance assignments is an instruction to hledger to adjust an account's balance to a certain amount at a certain point.The - type is used for representing both of these.hledger supports multiple kinds of balance assertions/assignments, which differ in whether they refer to a single commodity or all commodities, and the (subaccount-)inclusive or exclusive account balance. hledger-lib.the expected balance in a particular commodity hledger-lib.disallow additional non-asserted commodities ? hledger-lib9include subaccounts when calculating the actual balance ? hledger-lib2the assertion's file position, for error reporting hledger-libThe status of a transaction or posting, recorded with a status mark (nothing, !, or *). What these mean is ultimately user defined. hledger-libStores the CommoditySymbol of the Amount, along with the CommoditySymbol of the cost, and its unit cost if being used. hledger-libTypes with this class have one or more amounts, which can have display styles applied to them. hledger-libthe (fixed, transaction-specific) cost in another commodity of this amount, if any hledger-libA style for displaying digit groups in the integer part of a floating point number. It consists of the character used to separate groups (comma or period, whichever is not used as decimal point), and the size of each group, starting with the one nearest the decimal point. The last group size is assumed to repeat. Eg, comma between thousands is DigitGroups ',' [3]. hledger-lib"Rounding strategy" - how to apply an AmountStyle's display precision to a posting amount (and its cost, if any). Mainly used to customise print's output, with --round=none|soft|hard|all. hledger-lib1keep display precisions unchanged in amt and cost hledger-libdo soft rounding of amt and cost amounts (show more or fewer decimal zeros to approximate the target precision, but don't hide significant digits) hledger-libdo hard rounding of amt (use the exact target precision, possibly hiding significant digits), and soft rounding of cost hledger-lib do hard rounding of amt and cost hledger-libThe "display precision" for a hledger amount, by which we mean the number of decimal digits to display to the right of the decimal mark. hledger-lib&show this many decimal digits (0..255) hledger-lib5show all significant decimal digits stored internally hledger-libDisplay styles for amounts - things which can be detected during parsing, such as commodity side and spacing, digit group marks, decimal mark, number of decimal digits etc. Every Amount has an AmountStyle. After amounts are parsed from the input, for each  Commodity a standard style is inferred and then used when displaying amounts in that commodity. Related to  AmountFormat but higher level.See also: - hledger manual > Commodity styles - hledger manual > Amounts - hledger manual > Commodity display style hledger-lib*show the symbol on the left or the right ? hledger-lib*show a space between symbol and quantity ? hledger-lib:show the integer part with these digit group marks, or not hledger-libshow this character (should be . or ,) as decimal mark, or use the default (.) hledger-lib"display precision" - show this number of digits after the decimal point hledger-lib"rounding strategy" - kept here for convenience, for now: when displaying an amount, it is ignored, but when applying this style to another amount, it determines how hard we should try to adjust that amount's display precision. hledger-libAn amount's per-unit or total cost/selling price in another commodity, as recorded in the journal entry eg with  or @. Cost, formerly AKA "transaction price". The amount is always positive. hledger-lib'The basic numeric type used in amounts. hledger-lib