hledger-lib-0.22: Core data types, parsers and utilities for the hledger accounting tool.

Safe Haskell | None

Hledger.Data.AccountName

Description

`AccountName`s are strings like `assets:cash:petty`, with multiple components separated by `:`. From a set of these we derive the account hierarchy.

Synopsis

- acctsepchar :: Char
- accountNameComponents :: AccountName -> [String]
- accountNameFromComponents :: [String] -> AccountName
- accountLeafName :: AccountName -> String
- accountNameLevel :: AccountName -> Int
- accountNameDrop :: Int -> AccountName -> AccountName
- expandAccountNames :: [AccountName] -> [AccountName]
- expandAccountName :: AccountName -> [AccountName]
- topAccountNames :: [AccountName] -> [AccountName]
- parentAccountName :: AccountName -> AccountName
- parentAccountNames :: AccountName -> [AccountName]
- isAccountNamePrefixOf :: AccountName -> AccountName -> Bool
- isSubAccountNameOf :: AccountName -> AccountName -> Bool
- subAccountNamesFrom :: [AccountName] -> AccountName -> [AccountName]
- accountNameTreeFrom :: [AccountName] -> Tree AccountName
- nullaccountnametree :: Tree [Char]
- elideAccountName :: Int -> AccountName -> AccountName
- clipAccountName :: Int -> AccountName -> AccountName
- accountNameToAccountRegex :: String -> String
- accountNameToAccountOnlyRegex :: String -> String
- accountRegexToAccountName :: String -> String
- isAccountRegex :: String -> Bool
- tests_Hledger_Data_AccountName :: Test

# Documentation

acctsepchar :: Char Source

accountNameComponents :: AccountName -> [String]Source

accountNameFromComponents :: [String] -> AccountName Source

accountLeafName :: AccountName -> String Source

accountNameLevel :: AccountName -> Int Source

accountNameDrop :: Int -> AccountName -> AccountName Source

expandAccountNames :: [AccountName] -> [AccountName]Source

a:b:c,d:e
  -> [a,a:b,a:b:c,d,d:e]

expandAccountName :: AccountName -> [AccountName]Source

a:b:c -> [a,a:b,a:b:c]

topAccountNames :: [AccountName] -> [AccountName]Source

a:b:c,d:e
  -> [a,d]

parentAccountName :: AccountName -> AccountName Source

parentAccountNames :: AccountName -> [AccountName]Source

isAccountNamePrefixOf :: AccountName -> AccountName -> Bool Source

isSubAccountNameOf :: AccountName -> AccountName -> Bool Source

subAccountNamesFrom :: [AccountName] -> AccountName -> [AccountName]Source

From a list of account names, select those which are direct subaccounts of the given account name.

accountNameTreeFrom :: [AccountName] -> Tree AccountName Source

Convert a list of account names to a tree.

nullaccountnametree :: Tree [Char]Source

elideAccountName :: Int -> AccountName -> AccountName Source

Elide an account name to fit in the specified width. From the ledger 2.6 news:

       What Ledger now does is that if an account name is too long, it will
       start abbreviating the first parts of the account name down to two
       letters in length.  If this results in a string that is still too
       long, the front will be elided -- not the end.  For example:

    Expenses:Cash           ; OK, not too long
         Ex:Wednesday:Cash       ; Expenses was abbreviated to fit
         Ex:We:Afternoon:Cash    ; Expenses and Wednesday abbreviated
         ; Expenses:Wednesday:Afternoon:Lunch:Snack:Candy:Chocolate:Cash
         ..:Af:Lu:Sn:Ca:Ch:Cash  ; Abbreviated and elided!

clipAccountName :: Int -> AccountName -> AccountName Source

accountNameToAccountRegex :: String -> String Source

Convert an account name to a regular expression matching it and its subaccounts.

accountNameToAccountOnlyRegex :: String -> String Source

Convert an account name to a regular expression matching it but not its subaccounts.

accountRegexToAccountName :: String -> String Source

Convert an exact account-matching regular expression to a plain account name.

isAccountRegex :: String -> Bool Source

Does this string look like an exact account-matching regular expression ?

tests_Hledger_Data_AccountName :: Test Source