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