@@ -34,16 +34,9 @@ bracketedPasteFinished = isInfixOf bracketedPasteEnd
3434-- 'True'.
3535parseBracketedPaste :: String -> KClass
3636parseBracketedPaste s =
37− let (p, rest) = takeUntil (drop (length bracketedPasteStart) s) bracketedPasteEnd
38− rest' = if bracketedPasteEnd `isPrefixOf` rest
39− then drop (length bracketedPasteEnd) rest
40− else rest
41− in Valid (EvPaste $ BS8.pack p) rest'
42−
43−takeUntil :: (Eq a) => [a] -> [a] -> ([a],[a])
44−takeUntil [] _ = ([], [])
45−takeUntil cs sub
46− | length cs < length sub = (cs, [])
47− | take (length sub) cs == sub = ([], drop (length sub) cs)
48− | otherwise = let (pre, suf) = takeUntil (tail cs) sub
49− in (head cs:pre, suf)
37+ Valid (EvPaste p) (BS8.unpack $ BS8.drop (BS8.length end) rest')
38+ where
39+ start = BS8.pack bracketedPasteStart
40+ end = BS8.pack bracketedPasteEnd
41+ (_, rest ) = BS8.breakSubstring start . BS8.pack $ s
42+ (p, rest') = BS8.breakSubstring end . BS8.drop (BS8.length start) $ rest