lib: put conditionalblockp pasrser first as it is a more common case
This commit is contained in:
parent
ed01e57b23
commit
8844ef1b5f
@ -410,14 +410,14 @@ DIGIT: 0-9
|
|||||||
rulesp :: CsvRulesParser CsvRules
|
rulesp :: CsvRulesParser CsvRules
|
||||||
rulesp = do
|
rulesp = do
|
||||||
_ <- many $ choice
|
_ <- many $ choice
|
||||||
[blankorcommentlinep <?> "blank or comment line"
|
[blankorcommentlinep <?> "blank or comment line"
|
||||||
,(directivep >>= modify' . addDirective) <?> "directive"
|
,(directivep >>= modify' . addDirective) <?> "directive"
|
||||||
,(fieldnamelistp >>= modify' . setIndexesAndAssignmentsFromList) <?> "field name list"
|
,(fieldnamelistp >>= modify' . setIndexesAndAssignmentsFromList) <?> "field name list"
|
||||||
,(fieldassignmentp >>= modify' . addAssignment) <?> "field assignment"
|
,(fieldassignmentp >>= modify' . addAssignment) <?> "field assignment"
|
||||||
-- conditionaltablep backtracks because it shares "if" prefix with conditionalblockp and the
|
-- conditionalblockp backtracks because it shares "if" prefix with conditionaltablep.
|
||||||
-- reverse is there to ensure that conditions are added in the order they listed in the file
|
,try (conditionalblockp >>= modify' . addConditionalBlock) <?> "conditional block"
|
||||||
,try (conditionaltablep >>= modify' . addConditionalBlocks . reverse) <?> "conditional table"
|
-- 'reverse' is there to ensure that conditions are added in the order they listed in the file
|
||||||
,(conditionalblockp >>= modify' . addConditionalBlock) <?> "conditional block"
|
,(conditionaltablep >>= modify' . addConditionalBlocks . reverse) <?> "conditional table"
|
||||||
]
|
]
|
||||||
eof
|
eof
|
||||||
r <- get
|
r <- get
|
||||||
@ -1141,7 +1141,7 @@ getEffectiveAssignment rules record f = lastMay $ map snd $ assignments
|
|||||||
-- all top level field assignments
|
-- all top level field assignments
|
||||||
toplevelassignments = rassignments rules
|
toplevelassignments = rassignments rules
|
||||||
-- all field assignments in conditional blocks assigning to field f and active for the current csv record
|
-- all field assignments in conditional blocks assigning to field f and active for the current csv record
|
||||||
conditionalassignments = concatMap cbAssignments $ filter isBlockActive $ rblocksassigning rules f
|
conditionalassignments = concatMap cbAssignments $ filter isBlockActive $ (rblocksassigning rules) f
|
||||||
where
|
where
|
||||||
-- does this conditional block match the current csv record ?
|
-- does this conditional block match the current csv record ?
|
||||||
isBlockActive :: ConditionalBlock -> Bool
|
isBlockActive :: ConditionalBlock -> Bool
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user