diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2015-12-25 17:56:13 +0000 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2015-12-25 17:56:13 +0000 |
commit | 9db2c42f4880362cf098358de830415c14f6878c (patch) | |
tree | 2b0b9257f01eec926152746fc2e7646764063c3a /bbcode/src/BBCode/Tokenizer.hs | |
parent | 08eee2f0de77ffa631e84ccf734e8e95817b7c81 (diff) | |
download | thermoprint-9db2c42f4880362cf098358de830415c14f6878c.tar thermoprint-9db2c42f4880362cf098358de830415c14f6878c.tar.gz thermoprint-9db2c42f4880362cf098358de830415c14f6878c.tar.bz2 thermoprint-9db2c42f4880362cf098358de830415c14f6878c.tar.xz thermoprint-9db2c42f4880362cf098358de830415c14f6878c.zip |
Cleaned tree for rewrite
Diffstat (limited to 'bbcode/src/BBCode/Tokenizer.hs')
-rw-r--r-- | bbcode/src/BBCode/Tokenizer.hs | 44 |
1 files changed, 0 insertions, 44 deletions
diff --git a/bbcode/src/BBCode/Tokenizer.hs b/bbcode/src/BBCode/Tokenizer.hs deleted file mode 100644 index c860c7c..0000000 --- a/bbcode/src/BBCode/Tokenizer.hs +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | {-# LANGUAGE OverloadedStrings #-} | ||
2 | |||
3 | module BBCode.Tokenizer | ||
4 | ( Token(..) | ||
5 | , tokenize | ||
6 | ) where | ||
7 | |||
8 | import qualified Data.Text.Lazy as TL | ||
9 | import qualified Data.Text as T | ||
10 | |||
11 | import Control.Applicative | ||
12 | import Data.Attoparsec.Text.Lazy | ||
13 | |||
14 | import Data.Char (isSpace) | ||
15 | import Data.Monoid (mconcat) | ||
16 | |||
17 | data Token = Text String | ||
18 | | Whitespace String | ||
19 | | TagOpen String | ||
20 | | TagClose String | ||
21 | deriving (Show, Read, Eq) | ||
22 | |||
23 | tokenize :: String -> Either String [Token] | ||
24 | tokenize = eitherResult . parse (tokenize' <* endOfInput) . TL.pack | ||
25 | |||
26 | tokenize' :: Parser [Token] | ||
27 | tokenize' = many $ choice [ whitespace | ||
28 | , Text . T.unpack <$> ("\\" *> "[") | ||
29 | , tagClose | ||
30 | , tagOpen | ||
31 | , text | ||
32 | ] | ||
33 | |||
34 | whitespace :: Parser Token | ||
35 | whitespace = Whitespace <$> many1 space | ||
36 | |||
37 | tagOpen :: Parser Token | ||
38 | tagOpen = TagOpen . T.unpack <$> ("[" *> takeWhile1 (/= ']') <* "]") | ||
39 | |||
40 | tagClose :: Parser Token | ||
41 | tagClose = TagClose . T.unpack <$> ("[/" *> takeWhile1 (/= ']') <* "]") | ||
42 | |||
43 | text :: Parser Token | ||
44 | text = Text . T.unpack <$> takeWhile1 (\c -> not (isSpace c) && notInClass "[" c) | ||