lib, app, web: remove differences between command line and journal file aliases
This commit is contained in:
parent
f6ec26e321
commit
d82370d10b
@ -16,7 +16,6 @@ module Hledger.Data.Journal (
|
||||
addModifierTransaction,
|
||||
addPeriodicTransaction,
|
||||
addTransaction,
|
||||
journalApplyAliases,
|
||||
journalBalanceTransactions,
|
||||
journalApplyCommodityStyles,
|
||||
commodityStylesFromAmounts,
|
||||
@ -485,19 +484,6 @@ filterJournalTransactionsByAccount apats j@Journal{jtxns=ts} = j{jtxns=filter tm
|
||||
|
||||
-}
|
||||
|
||||
-- | Apply additional account aliases (eg from the command-line) to all postings in a journal.
|
||||
journalApplyAliases :: [AccountAlias] -> Journal -> Journal
|
||||
journalApplyAliases aliases j@Journal{jtxns=ts} =
|
||||
-- (if null aliases
|
||||
-- then id
|
||||
-- else (dbgtrace $
|
||||
-- "applying additional command-line aliases:\n"
|
||||
-- ++ chomp (unlines $ map (" "++) $ lines $ ppShow aliases))) $
|
||||
j{jtxns=map dotransaction ts}
|
||||
where
|
||||
dotransaction t@Transaction{tpostings=ps} = t{tpostings=map doposting ps}
|
||||
doposting p@Posting{paccount=a} = p{paccount= accountNameApplyAliases aliases a}
|
||||
|
||||
-- | Do post-parse processing on a parsed journal to make it ready for
|
||||
-- use. Reverse parsed data to normal order, canonicalise amount
|
||||
-- formats, check/ensure that transactions are balanced, and maybe
|
||||
|
||||
@ -25,7 +25,6 @@ module Hledger.Read (
|
||||
readJournal',
|
||||
|
||||
-- * Re-exported
|
||||
JournalReader.accountaliasp,
|
||||
JournalReader.postingp,
|
||||
module Hledger.Read.Common,
|
||||
|
||||
|
||||
@ -63,8 +63,7 @@ module Hledger.Read.JournalReader (
|
||||
-- numberp,
|
||||
statusp,
|
||||
emptyorcommentlinep,
|
||||
followingcommentp,
|
||||
accountaliasp
|
||||
followingcommentp
|
||||
|
||||
-- * Tests
|
||||
,tests_Hledger_Read_JournalReader
|
||||
@ -120,7 +119,17 @@ reader = Reader
|
||||
-- | Parse and post-process a "Journal" from hledger's journal file
|
||||
-- format, or give an error.
|
||||
parse :: InputOpts -> FilePath -> Text -> ExceptT String IO Journal
|
||||
parse = parseAndFinaliseJournal journalp
|
||||
parse iopts = parseAndFinaliseJournal journalp' iopts
|
||||
where
|
||||
journalp' = do
|
||||
-- reverse parsed aliases to ensure that they are applied in order given on commandline
|
||||
mapM_ addAccountAlias (reverse $ aliasesFromOpts iopts)
|
||||
journalp
|
||||
|
||||
-- | Get the account name aliases from options, if any.
|
||||
aliasesFromOpts :: InputOpts -> [AccountAlias]
|
||||
aliasesFromOpts = map (\a -> fromparse $ runParser accountaliasp ("--alias "++quoteIfNeeded a) $ T.pack a)
|
||||
. aliases_
|
||||
|
||||
--- * parsers
|
||||
--- ** journal
|
||||
|
||||
@ -78,7 +78,6 @@ withJournalDoUICommand uopts@UIOpts{cliopts_=copts} cmd = do
|
||||
let fn = cmd uopts
|
||||
. pivotByOpts copts
|
||||
. anonymiseByOpts copts
|
||||
. journalApplyAliases (aliasesFromOpts copts)
|
||||
<=< journalApplyValue (reportopts_ copts)
|
||||
<=< journalAddForecast copts
|
||||
either error' fn ej
|
||||
|
||||
@ -63,7 +63,6 @@ withJournalDo' opts@WebOpts {cliopts_ = cliopts} cmd = do
|
||||
let fn = cmd opts
|
||||
. pivotByOpts cliopts
|
||||
. anonymiseByOpts cliopts
|
||||
. journalApplyAliases (aliasesFromOpts cliopts)
|
||||
<=< journalApplyValue (reportopts_ cliopts)
|
||||
<=< journalAddForecast cliopts
|
||||
readJournalFile def f >>= either error' fn
|
||||
|
||||
@ -44,7 +44,6 @@ module Hledger.Cli.CliOptions (
|
||||
-- possibly these should move into argsToCliOpts
|
||||
-- * CLI option accessors
|
||||
-- | These do the extra processing required for some options.
|
||||
aliasesFromOpts,
|
||||
journalFilePathFromOpts,
|
||||
rulesFilePathFromOpts,
|
||||
outputFileFromOpts,
|
||||
@ -484,11 +483,6 @@ getHledgerCliOpts mode' = do
|
||||
|
||||
-- CliOpts accessors
|
||||
|
||||
-- | Get the account name aliases from options, if any.
|
||||
aliasesFromOpts :: CliOpts -> [AccountAlias]
|
||||
aliasesFromOpts = map (\a -> fromparse $ runParser accountaliasp ("--alias "++quoteIfNeeded a) $ T.pack a)
|
||||
. aliases_ . inputopts_
|
||||
|
||||
-- | Get the (tilde-expanded, absolute) journal file path from
|
||||
-- 1. options, 2. an environment variable, or 3. the default.
|
||||
-- Actually, returns one or more file paths. There will be more
|
||||
|
||||
@ -70,7 +70,6 @@ withJournalDo opts cmd = do
|
||||
let f = cmd opts
|
||||
. pivotByOpts opts
|
||||
. anonymiseByOpts opts
|
||||
. journalApplyAliases (aliasesFromOpts opts)
|
||||
<=< journalApplyValue (reportopts_ opts)
|
||||
<=< journalAddForecast opts
|
||||
either error' f ej
|
||||
@ -161,7 +160,7 @@ writeOutput opts s = do
|
||||
journalReload :: CliOpts -> IO (Either String Journal)
|
||||
journalReload opts = do
|
||||
journalpaths <- journalFilePathFromOpts opts
|
||||
((pivotByOpts opts . journalApplyAliases (aliasesFromOpts opts)) <$>) <$>
|
||||
(pivotByOpts opts <$>) <$>
|
||||
readJournalFiles (inputopts_ opts) journalpaths
|
||||
|
||||
-- | Re-read the option-specified journal file(s), but only if any of
|
||||
|
||||
@ -122,6 +122,36 @@ alias E=F
|
||||
>>>2
|
||||
>>>=0
|
||||
|
||||
# alias options
|
||||
hledger -f- balance --alias=cc=credit-card --alias=b=bank
|
||||
<<<
|
||||
01/01 Opening balances
|
||||
(bank) 100
|
||||
(credit-card) -10
|
||||
|
||||
01/02
|
||||
expenses 5
|
||||
cc
|
||||
|
||||
01/03
|
||||
expenses 5
|
||||
b
|
||||
|
||||
01/04 Credit card charge
|
||||
cc = 0
|
||||
b
|
||||
|
||||
01/05
|
||||
expenses 5
|
||||
b = 75
|
||||
>>>
|
||||
75 bank
|
||||
15 expenses
|
||||
--------------------
|
||||
90
|
||||
>>>2
|
||||
>>>=0
|
||||
|
||||
# query will search both origin and substitution in alias
|
||||
hledger -f- reg '^a$' '^b$'
|
||||
<<<
|
||||
|
||||
Loading…
Reference in New Issue
Block a user