From 8844ef1b5ffd78de03435b5c98c63cd718f9146a Mon Sep 17 00:00:00 2001 From: Dmitry Astapov Date: Mon, 22 Jun 2020 19:00:00 +0100 Subject: [PATCH] lib: put conditionalblockp pasrser first as it is a more common case --- hledger-lib/Hledger/Read/CsvReader.hs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hledger-lib/Hledger/Read/CsvReader.hs b/hledger-lib/Hledger/Read/CsvReader.hs index 3b95edbda..2e8068813 100644 --- a/hledger-lib/Hledger/Read/CsvReader.hs +++ b/hledger-lib/Hledger/Read/CsvReader.hs @@ -410,14 +410,14 @@ DIGIT: 0-9 rulesp :: CsvRulesParser CsvRules rulesp = do _ <- many $ choice - [blankorcommentlinep "blank or comment line" - ,(directivep >>= modify' . addDirective) "directive" - ,(fieldnamelistp >>= modify' . setIndexesAndAssignmentsFromList) "field name list" - ,(fieldassignmentp >>= modify' . addAssignment) "field assignment" - -- conditionaltablep backtracks because it shares "if" prefix with conditionalblockp and the - -- reverse is there to ensure that conditions are added in the order they listed in the file - ,try (conditionaltablep >>= modify' . addConditionalBlocks . reverse) "conditional table" - ,(conditionalblockp >>= modify' . addConditionalBlock) "conditional block" + [blankorcommentlinep "blank or comment line" + ,(directivep >>= modify' . addDirective) "directive" + ,(fieldnamelistp >>= modify' . setIndexesAndAssignmentsFromList) "field name list" + ,(fieldassignmentp >>= modify' . addAssignment) "field assignment" + -- conditionalblockp backtracks because it shares "if" prefix with conditionaltablep. + ,try (conditionalblockp >>= modify' . addConditionalBlock) "conditional block" + -- 'reverse' is there to ensure that conditions are added in the order they listed in the file + ,(conditionaltablep >>= modify' . addConditionalBlocks . reverse) "conditional table" ] eof r <- get @@ -1141,7 +1141,7 @@ getEffectiveAssignment rules record f = lastMay $ map snd $ assignments -- all top level field assignments toplevelassignments = rassignments rules -- 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 -- does this conditional block match the current csv record ? isBlockActive :: ConditionalBlock -> Bool