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