)
where
-import Data.List
import Network.HTTP.Lucu.Parser
--- |@'isCtl' c@ is False iff @0x20 <= @c@ < 0x7F@.
+-- |@'isCtl' c@ is 'Prelude.False' iff @0x20 <= @c@ < 0x7F@.
isCtl :: Char -> Bool
isCtl c
| c < '\x1f' = True
| c >= '\x7f' = True
| otherwise = False
--- |@'isSeparator' c@ is True iff c is one of HTTP separators.
+-- |@'isSeparator' c@ is 'Prelude.True' iff c is one of HTTP
+-- separators.
isSeparator :: Char -> Bool
isSeparator '(' = True
isSeparator ')' = True
isSeparator '\t' = True
isSeparator _ = False
--- |@'isChar' c@ is True iff @c <= 0x7f@.
+-- |@'isChar' c@ is 'Prelude.True' iff @c <= 0x7f@.
isChar :: Char -> Bool
isChar c
| c <= '\x7f' = True
-- ('Network.HTTP.Lucu.Parser.char' \',\')@ but it allows any
-- occurrences of LWS before and after each tokens.
listOf :: Parser a -> Parser [a]
-listOf p = p `seq`
- do many lws
- sepBy p $! do many lws
- char ','
- many lws
+listOf !p = do _ <- many lws
+ sepBy p $! do _ <- many lws
+ _ <- char ','
+ many lws
-- |'token' is equivalent to @'Network.HTTP.Lucu.Parser.many1' $
-- 'Network.HTTP.Lucu.Parser.satisfy' 'isToken'@
-- |'text' accepts one character which doesn't satisfy 'isCtl'.
text :: Parser Char
-text = satisfy (\ c -> not (isCtl c))
+text = satisfy (not . isCtl)
-- |'separator' accepts one character which satisfies 'isSeparator'.
separator :: Parser Char
-- |'quotedStr' accepts a string surrounded by double quotation
-- marks. Quotes can be escaped by backslashes.
quotedStr :: Parser String
-quotedStr = do char '"'
+quotedStr = do _ <- char '"'
xs <- many (qdtext <|> quotedPair)
- char '"'
+ _ <- char '"'
return $ foldr (++) "" xs
where
qdtext = do c <- satisfy (/= '"')
return [c]
- quotedPair = do q <- char '\\'
+ quotedPair = do _ <- char '\\'
c <- satisfy isChar
return [c]
qvalue :: Parser Double
qvalue = do x <- char '0'
xs <- option ""
- $ do x <- char '.'
- xs <- many digit -- 本當は三文字までに制限
- return (x:xs)
+ $ do y <- char '.'
+ ys <- many digit -- 本當は三文字までに制限
+ return (y:ys)
return $ read (x:xs)
<|>
do x <- char '1'
xs <- option ""
- $ do x <- char '.'
- xs <- many (char '0') -- 本當は三文字までに制限
- return (x:xs)
+ $ do y <- char '.'
+ ys <- many (char '0') -- 本當は三文字までに制限
+ return (y:ys)
return $ read (x:xs)