Merge pull request #126 from adept/master
Fix for assigning multiple fields in CSV parsing
This commit is contained in:
commit
d913ee96f7
@ -623,9 +623,9 @@ showRecord r = "the CSV record is: "++intercalate ", " (map show r)
|
|||||||
getEffectiveAssignment :: CsvRules -> CsvRecord -> JournalFieldName -> Maybe FieldTemplate
|
getEffectiveAssignment :: CsvRules -> CsvRecord -> JournalFieldName -> Maybe FieldTemplate
|
||||||
getEffectiveAssignment rules record f = lastMay $ assignmentsFor f
|
getEffectiveAssignment rules record f = lastMay $ assignmentsFor f
|
||||||
where
|
where
|
||||||
assignmentsFor f = map snd $ toplevelassignments ++ conditionalassignments
|
assignmentsFor f = map snd $ filter ((==f).fst) $ toplevelassignments ++ conditionalassignments
|
||||||
where
|
where
|
||||||
toplevelassignments = filter ((==f).fst) $ rassignments rules
|
toplevelassignments = rassignments rules
|
||||||
conditionalassignments = concatMap snd $ filter blockMatches $ blocksAssigning f
|
conditionalassignments = concatMap snd $ filter blockMatches $ blocksAssigning f
|
||||||
where
|
where
|
||||||
blocksAssigning f = filter (any ((==f).fst) . snd) $ rconditionalblocks rules
|
blocksAssigning f = filter (any ((==f).fst) . snd) $ rconditionalblocks rules
|
||||||
|
|||||||
@ -35,3 +35,12 @@
|
|||||||
# >>>2 /using conversion rules file.*t.rules/
|
# >>>2 /using conversion rules file.*t.rules/
|
||||||
# >>>=0
|
# >>>=0
|
||||||
|
|
||||||
|
# 4. handle conditions assigning multiple fields
|
||||||
|
rm -rf t.rules$$; printf 'fields date, description, amount\ndate-format %%d/%%Y/%%m\ncurrency $\naccount1 assets:myacct\nif Flubber\n account2 acct\n comment cmt' >t.rules$$; echo '10/2009/09,Flubber Co,50' | hledgerdev -f- print --rules-file t.rules$$; rm -rf t.rules$$
|
||||||
|
>>>
|
||||||
|
2009/09/10 Flubber Co ;cmt
|
||||||
|
acct $-50
|
||||||
|
assets:myacct $50
|
||||||
|
|
||||||
|
>>>2 /using conversion rules file.*t.rules/
|
||||||
|
>>>=0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user