hledger-0.26: The main command-line interface for the hledger accounting tool.

Safe Haskell | None
Language | Haskell2010

Hledger.Cli.Add

Description

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

Synopsis

- addmode :: Mode RawOpts
- data EntryState = EntryState {
  - esOpts :: CliOpts
  - esArgs :: [String]
  - esToday :: Day
  - esDefDate :: Day
  - esJournal :: Journal
  - esSimilarTransaction :: Maybe Transaction
  - esPostings :: [Posting]
  }
- defEntryState :: EntryState
- data RestartTransactionException = RestartTransactionException
- add :: CliOpts -> Journal -> IO ()
- showHelp :: IO ()
- getAndAddTransactions :: EntryState -> IO ()
- confirmedTransactionWizard :: EntryState -> Wizard Haskeline Transaction
- transactionWizard :: EntryState -> Wizard Haskeline Transaction
- similarTransaction :: EntryState -> String -> Maybe Transaction
- dateAndCodeWizard :: EntryState -> Wizard Haskeline (Day, String)
- descriptionAndCommentWizard :: EntryState -> Wizard Haskeline (String, String)
- postingsWizard :: EntryState -> Wizard Haskeline [Posting]
- postingWizard :: EntryState -> Wizard Haskeline (Maybe Posting)
- postingsBalanced :: [Posting] -> Bool
- accountWizard :: EntryState -> Wizard Haskeline [Char]
- amountAndCommentWizard :: EntryState -> Wizard Haskeline (Amount, String)
- maybeExit :: Wizard Haskeline [Char] -> Wizard Haskeline [Char]
- maybeRestartTransaction :: Wizard Haskeline [Char] -> Wizard Haskeline [Char]
- dateCompleter :: String -> CompletionFunc IO
- descriptionCompleter :: Journal -> String -> CompletionFunc IO
- accountCompleter :: Journal -> String -> CompletionFunc IO
- amountCompleter :: String -> CompletionFunc IO
- completer :: [String] -> String -> CompletionFunc IO
- defaultTo' :: a -> Wizard Haskeline a -> Wizard Haskeline a
- withCompletion :: (:<:) WithSettings b => CompletionFunc IO -> Wizard b a -> Wizard b a
- green :: [Char] -> [Char]
- showDefault :: [Char] -> [Char]
- journalAddTransaction :: Journal -> CliOpts -> Transaction -> IO Journal
- appendToJournalFileOrStdout :: FilePath -> String -> IO ()
- ensureOneNewlineTerminated :: String -> String
- registerFromString :: String -> IO String
- capitalize :: String -> String
- transactionsSimilarTo :: Journal -> Query -> String -> [(Double, Transaction)]
- compareDescriptions :: [Char] -> [Char] -> Double
- compareStrings :: String -> String -> Double
- wordLetterPairs :: String -> [[Char]]
- letterPairs :: [t] -> [[t]]

# Documentation

addmode :: Mode RawOpts Source

data EntryState Source

State used while entering transactions.

Constructors

EntryState |

Fields

esOpts :: CliOpts

  command line options

esArgs :: [String]

  command line arguments remaining to be used as defaults

esToday :: Day

  today's date

esDefDate :: Day

  the default date for next transaction

esJournal :: Journal

  the journal we are adding to

esSimilarTransaction :: Maybe Transaction

  the most similar historical txn

esPostings :: [Posting]

  postings entered so far in the current txn

Instances

Show EntryState Source |

defEntryState :: EntryState Source

data RestartTransactionException Source

Constructors

RestartTransactionException |

Instances

Show RestartTransactionException Source |
Exception RestartTransactionException Source |

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.

showHelp :: IO () Source

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.

confirmedTransactionWizard :: EntryState -> Wizard Haskeline Transaction Source

transactionWizard :: EntryState -> Wizard Haskeline Transaction Source

similarTransaction :: EntryState -> String -> Maybe Transaction Source

dateAndCodeWizard :: EntryState -> Wizard Haskeline (Day, String) Source

descriptionAndCommentWizard :: EntryState -> Wizard Haskeline (String, String) Source

postingsWizard :: EntryState -> Wizard Haskeline [Posting] Source

postingWizard :: EntryState -> Wizard Haskeline (Maybe Posting) Source

postingsBalanced :: [Posting] -> Bool Source

accountWizard :: EntryState -> Wizard Haskeline [Char] Source

amountAndCommentWizard :: EntryState -> Wizard Haskeline (Amount, String) Source

maybeExit :: Wizard Haskeline [Char] -> Wizard Haskeline [Char] Source

maybeRestartTransaction :: Wizard Haskeline [Char] -> Wizard Haskeline [Char] Source

dateCompleter :: String -> CompletionFunc IO Source

descriptionCompleter :: Journal -> String -> CompletionFunc IO Source

accountCompleter :: Journal -> String -> CompletionFunc IO Source

amountCompleter :: String -> CompletionFunc IO Source

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.

defaultTo' :: a -> Wizard Haskeline a -> Wizard Haskeline a Source

withCompletion :: (:<:) WithSettings b => CompletionFunc IO -> Wizard b a -> Wizard b a Source

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

showDefault :: [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.

capitalize :: String -> String Source

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

compareDescriptions :: [Char] -> [Char] -> Double Source

compareStrings :: String -> String -> Double Source

Return a similarity measure, from 0 to 1, for two strings. This is Simon White's letter pairs algorithm from http://www.catalysoft.com/articles/StrikeAMatch.html with a modification for short strings.

wordLetterPairs :: String -> [[Char]] Source

letterPairs :: [t] -> [[t]] Source