web: fix "not:'multi word'" patterns
This commit is contained in:
		
							parent
							
								
									353e3f2d55
								
							
						
					
					
						commit
						3e3475bd76
					
				@ -112,10 +112,13 @@ words'' prefixes = fromparse . parsewith maybeprefixedquotedphrases -- XXX
 | 
				
			|||||||
    where
 | 
					    where
 | 
				
			||||||
      maybeprefixedquotedphrases = choice' [prefixedQuotedPattern, quotedPattern, pattern] `sepBy` many1 spacenonewline
 | 
					      maybeprefixedquotedphrases = choice' [prefixedQuotedPattern, quotedPattern, pattern] `sepBy` many1 spacenonewline
 | 
				
			||||||
      prefixedQuotedPattern = do
 | 
					      prefixedQuotedPattern = do
 | 
				
			||||||
        not' <- optionMaybe $ string "not:"
 | 
					        not' <- fromMaybe "" `fmap` (optionMaybe $ string "not:")
 | 
				
			||||||
        prefix <- choice' $ map string prefixes
 | 
					        let allowednexts | null not' = prefixes
 | 
				
			||||||
 | 
					                         | otherwise = prefixes ++ [""]
 | 
				
			||||||
 | 
					        next <- choice' $ map string allowednexts
 | 
				
			||||||
 | 
					        let prefix = not' ++ next
 | 
				
			||||||
        p <- quotedPattern
 | 
					        p <- quotedPattern
 | 
				
			||||||
        return $ fromMaybe "" not' ++ prefix ++ stripquotes p
 | 
					        return $ prefix ++ stripquotes p
 | 
				
			||||||
      quotedPattern = do
 | 
					      quotedPattern = do
 | 
				
			||||||
        p <- between (oneOf "'\"") (oneOf "'\"") $ many $ noneOf "'\""
 | 
					        p <- between (oneOf "'\"") (oneOf "'\"") $ many $ noneOf "'\""
 | 
				
			||||||
        return $ stripquotes p
 | 
					        return $ stripquotes p
 | 
				
			||||||
@ -310,4 +313,12 @@ tests_Hledger_Data_Matching = TestList
 | 
				
			|||||||
    assertBool "real:1 on virtual posting fails" $ not $ (MatchReal True) `matchesPosting` nullposting{ptype=VirtualPosting}
 | 
					    assertBool "real:1 on virtual posting fails" $ not $ (MatchReal True) `matchesPosting` nullposting{ptype=VirtualPosting}
 | 
				
			||||||
    assertBool "real:1 on balanced virtual posting fails" $ not $ (MatchReal True) `matchesPosting` nullposting{ptype=BalancedVirtualPosting}
 | 
					    assertBool "real:1 on balanced virtual posting fails" $ not $ (MatchReal True) `matchesPosting` nullposting{ptype=BalancedVirtualPosting}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ,"words''" ~: do
 | 
				
			||||||
 | 
					    assertEqual "1" ["a","b"]        (words'' [] "a b")
 | 
				
			||||||
 | 
					    assertEqual "2" ["a b"]          (words'' [] "'a b'")
 | 
				
			||||||
 | 
					    assertEqual "3" ["not:a","b"]    (words'' [] "not:a b")
 | 
				
			||||||
 | 
					    assertEqual "4" ["not:a b"]    (words'' [] "not:'a b'")
 | 
				
			||||||
 | 
					    assertEqual "5" ["not:a b"]    (words'' [] "'not:a b'")
 | 
				
			||||||
 | 
					    assertEqual "6" ["not:desc:a b"]    (words'' ["desc:"] "not:desc:'a b'")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 ]
 | 
					 ]
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user