diff options
| -rw-r--r-- | bbcode/src/BBCode.hs | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/bbcode/src/BBCode.hs b/bbcode/src/BBCode.hs index 118aed7..3071db6 100644 --- a/bbcode/src/BBCode.hs +++ b/bbcode/src/BBCode.hs | |||
| @@ -55,20 +55,7 @@ make' (Cooked c) = c | |||
| 55 | make' (Raw _) = error "Cannot transform block containing raw data to bbcode" | 55 | make' (Raw _) = error "Cannot transform block containing raw data to bbcode" |
| 56 | 56 | ||
| 57 | parse :: String -> Either String (Block String) | 57 | parse :: String -> Either String (Block String) |
| 58 | parse input = (remerge . massage . blockify <$> (tokenize input >>= treeify)) >>= semantics | 58 | parse input = (remerge . blockify <$> (tokenize input >>= treeify)) >>= semantics |
| 59 | |||
| 60 | massage :: [Decorated String] -> [Decorated String] | ||
| 61 | massage [] = [] | ||
| 62 | massage (x@(Decorated _ tags) : x'@(Decorated wSpace []) : xs) | ||
| 63 | | any $ map isSpace wSpace | ||
| 64 | , any $ map isBlock tags = (x:Decorated (massage' wSpace) []:xs) | ||
| 65 | | otherwise = x : massage (x':xs) | ||
| 66 | where | ||
| 67 | massage' [] = [] | ||
| 68 | massage' l@(x:xs) | ||
| 69 | | isSpace x = massage' xs | ||
| 70 | | otherwise = l | ||
| 71 | massage (x:xs) = x : massage xs | ||
| 72 | 59 | ||
| 73 | blockify :: ContentForest -> [Decorated String] | 60 | blockify :: ContentForest -> [Decorated String] |
| 74 | blockify = map sortDeco . concat . map (blockify' []) | 61 | blockify = map sortDeco . concat . map (blockify' []) |
