hledger-1.1: Command-line interface for the hledger accounting tool

Safe HaskellNone



A history-aware add command to help with data entry. |



data EntryState Source #

State used while entering transactions.




add :: CliOpts -> Journal -> IO () Source #

Read multiple transactions from the console, prompting for each field, and append them to the journal file. If the journal came from stdin, this command has no effect.

getAndAddTransactions :: EntryState -> IO () Source #

Loop reading transactions from the console, prompting, validating and appending each one to the journal file, until end of input or ctrl-c (then raise an EOF exception). If provided, command-line arguments are used as defaults; otherwise defaults come from the most similar recent transaction in the journal.

completer :: [String] -> String -> CompletionFunc IO Source #

Generate a haskeline completion function from the given completions and default, that case insensitively completes with prefix matches, or infix matches above a minimum length, or completes the null string with the default.

green :: [Char] -> [Char] Source #

journalAddTransaction :: Journal -> CliOpts -> Transaction -> IO Journal Source #

Append this transaction to the journal's file and transaction list.

appendToJournalFileOrStdout :: FilePath -> String -> IO () Source #

Append a string, typically one or more transactions, to a journal file, or if the file is "-", dump it to stdout. Tries to avoid excess whitespace.

ensureOneNewlineTerminated :: String -> String Source #

Replace a string's 0 or more terminating newlines with exactly one.

registerFromString :: String -> IO String Source #

Convert a string of journal data into a register report.

transactionsSimilarTo :: Journal -> Query -> Text -> [(Double, Transaction)] Source #

Find the most similar and recent transactions matching the given transaction description and report query. Transactions are listed with their "relevancy" score, most relevant first.

compareDescriptions :: Text -> Text -> Double Source #

Return a similarity measure, from 0 to 1, for two transaction descriptions. This is like compareStrings, but first strips out any numbers, to improve accuracy eg when there are bank transaction ids from imported data.

compareStrings :: String -> String -> Double Source #

Return a similarity measure, from 0 to 1, for two strings. This was based on Simon White's string similarity algorithm (http:/www.catalysoft.comarticles/StrikeAMatch.html), later found to be https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient, modified to handle short strings better. Todo: check out http://nlp.fi.muni.cz/raslan/2008/raslan08.pdf#page=14 .

letterPairs :: [a] -> [[a]] Source #