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 rules record f = lastMay $ assignmentsFor f
|
||||
where
|
||||
assignmentsFor f = map snd $ toplevelassignments ++ conditionalassignments
|
||||
assignmentsFor f = map snd $ filter ((==f).fst) $ toplevelassignments ++ conditionalassignments
|
||||
where
|
||||
toplevelassignments = filter ((==f).fst) $ rassignments rules
|
||||
toplevelassignments = rassignments rules
|
||||
conditionalassignments = concatMap snd $ filter blockMatches $ blocksAssigning f
|
||||
where
|
||||
blocksAssigning f = filter (any ((==f).fst) . snd) $ rconditionalblocks rules
|
||||
|
||||
@ -35,3 +35,12 @@
|
||||
# >>>2 /using conversion rules file.*t.rules/
|
||||
# >>>=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