mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-08 07:09:28 +03:00
lib: remove partial code from journalApplyAliases etc.
This commit is contained in:
parent
794c5f32a5
commit
0dc8eca68a
@ -1228,9 +1228,12 @@ postingFindTag :: TagName -> Posting -> Maybe (TagName, TagValue)
|
||||
postingFindTag tagname p = find ((tagname==) . fst) $ postingAllTags p
|
||||
|
||||
-- | Apply some account aliases to all posting account names in the journal, as described by accountNameApplyAliases.
|
||||
-- This can raise an error arising from a bad replacement pattern in a regular expression alias.
|
||||
journalApplyAliases :: [AccountAlias] -> Journal -> Journal
|
||||
journalApplyAliases aliases j = j{jtxns = map (transactionApplyAliases aliases) $ jtxns j} -- PARTIAL:
|
||||
-- This can fail due to a bad replacement pattern in a regular expression alias.
|
||||
journalApplyAliases :: [AccountAlias] -> Journal -> Either RegexError Journal
|
||||
journalApplyAliases aliases j =
|
||||
case mapM (transactionApplyAliases aliases) $ jtxns j of
|
||||
Right ts -> Right j{jtxns = ts}
|
||||
Left err -> Left err
|
||||
|
||||
-- -- | Build a database of market prices in effect on the given date,
|
||||
-- -- from the journal's price directives.
|
||||
|
@ -291,14 +291,15 @@ concatAccountNames as = accountNameWithPostingType t $ T.intercalate ":" $ map a
|
||||
where t = headDef RegularPosting $ filter (/= RegularPosting) $ map accountNamePostingType as
|
||||
|
||||
-- | Apply some account aliases to the posting's account name, as described by accountNameApplyAliases.
|
||||
-- This can raise an error arising from a bad replacement pattern in a regular expression alias.
|
||||
postingApplyAliases :: [AccountAlias] -> Posting -> Posting
|
||||
-- This can fail due to a bad replacement pattern in a regular expression alias.
|
||||
postingApplyAliases :: [AccountAlias] -> Posting -> Either RegexError Posting
|
||||
postingApplyAliases aliases p@Posting{paccount} =
|
||||
case accountNameApplyAliases aliases paccount of
|
||||
Right a -> p{paccount=a}
|
||||
Left e -> error' err -- PARTIAL:
|
||||
Right a -> Right p{paccount=a}
|
||||
Left e -> Left err
|
||||
where
|
||||
err = "problem in account aliases:\n" ++ pshow aliases ++ "\n applied to account name: "++T.unpack paccount++"\n "++e
|
||||
err = "problem while applying account aliases:\n" ++ pshow aliases
|
||||
++ "\n to account name: "++T.unpack paccount++"\n "++e
|
||||
|
||||
-- | Rewrite an account name using all matching aliases from the given list, in sequence.
|
||||
-- Each alias sees the result of applying the previous aliases.
|
||||
|
@ -593,10 +593,12 @@ transactionToCost :: M.Map CommoditySymbol AmountStyle -> Transaction -> Transac
|
||||
transactionToCost styles t@Transaction{tpostings=ps} = t{tpostings=map (postingToCost styles) ps}
|
||||
|
||||
-- | Apply some account aliases to all posting account names in the transaction, as described by accountNameApplyAliases.
|
||||
-- This can raise an error arising from a bad replacement pattern in a regular expression alias.
|
||||
transactionApplyAliases :: [AccountAlias] -> Transaction -> Transaction
|
||||
-- This can fail due to a bad replacement pattern in a regular expression alias.
|
||||
transactionApplyAliases :: [AccountAlias] -> Transaction -> Either RegexError Transaction
|
||||
transactionApplyAliases aliases t =
|
||||
txnTieKnot $ t{tpostings = map (postingApplyAliases aliases) $ tpostings t} -- PARTIAL:
|
||||
case mapM (postingApplyAliases aliases) $ tpostings t of
|
||||
Right ps -> Right $ txnTieKnot $ t{tpostings=ps}
|
||||
Left err -> Left err
|
||||
|
||||
-- tests
|
||||
|
||||
|
@ -296,10 +296,11 @@ parseAndFinaliseJournal' parser iopts f txt = do
|
||||
-- see notes above
|
||||
case ep of
|
||||
Left e -> throwError $ customErrorBundlePretty e
|
||||
Right pj -> journalFinalise iopts f txt $
|
||||
-- apply any command line account aliases. Can fail with a bad replacement pattern.
|
||||
journalApplyAliases (aliasesFromOpts iopts) $ -- PARTIAL:
|
||||
pj
|
||||
Right pj ->
|
||||
-- apply any command line account aliases. Can fail with a bad replacement pattern.
|
||||
case journalApplyAliases (aliasesFromOpts iopts) pj of
|
||||
Left e -> throwError e
|
||||
Right pj' -> journalFinalise iopts f txt pj'
|
||||
|
||||
-- | Post-process a Journal that has just been parsed or generated, in this order:
|
||||
--
|
||||
|
@ -108,15 +108,16 @@ parse iopts f t = do
|
||||
let rulesfile = mrules_file_ iopts
|
||||
r <- liftIO $ readJournalFromCsv rulesfile f t
|
||||
case r of Left e -> throwError e
|
||||
Right pj -> journalFinalise iopts{ignore_assertions_=True} f t pj''
|
||||
where
|
||||
-- journalFinalise assumes the journal's items are
|
||||
-- reversed, as produced by JournalReader's parser.
|
||||
-- But here they are already properly ordered. So we'd
|
||||
-- better preemptively reverse them once more. XXX inefficient
|
||||
pj' = journalReverse pj
|
||||
-- apply any command line account aliases. Can fail with a bad replacement pattern.
|
||||
pj'' = journalApplyAliases (aliasesFromOpts iopts) pj' -- PARTIAL:
|
||||
Right pj ->
|
||||
-- journalFinalise assumes the journal's items are
|
||||
-- reversed, as produced by JournalReader's parser.
|
||||
-- But here they are already properly ordered. So we'd
|
||||
-- better preemptively reverse them once more. XXX inefficient
|
||||
let pj' = journalReverse pj
|
||||
-- apply any command line account aliases. Can fail with a bad replacement pattern.
|
||||
in case journalApplyAliases (aliasesFromOpts iopts) pj' of
|
||||
Left e -> throwError e
|
||||
Right pj'' -> journalFinalise iopts{ignore_assertions_=True} f t pj''
|
||||
|
||||
--- ** reading rules files
|
||||
--- *** rules utilities
|
||||
|
@ -147,7 +147,9 @@ toRegexCI' = either error' id . toRegexCI
|
||||
-- | A replacement pattern. May include numeric backreferences (\N).
|
||||
type Replacement = String
|
||||
|
||||
-- | An regular expression compilation/processing error message.
|
||||
-- | An error message arising during a regular expression operation.
|
||||
-- Eg: trying to compile a malformed regular expression, or
|
||||
-- trying to apply a malformed replacement pattern.
|
||||
type RegexError = String
|
||||
|
||||
-- helpers
|
||||
|
Loading…
Reference in New Issue
Block a user