X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FParser%2FHttp.hs;h=77dbe7f225bb2b6c3950b497815efa077d6c98b2;hp=cb21d299418671fccfe308d13a6befe3f75ed9be;hb=636a3b3334f1ede61dc1e6faa2c4a021ea9bbd5c;hpb=7b3c7c2c5be4fc05ee03008aa0af56fab798e1bb diff --git a/Network/HTTP/Lucu/Parser/Http.hs b/Network/HTTP/Lucu/Parser/Http.hs index cb21d29..77dbe7f 100644 --- a/Network/HTTP/Lucu/Parser/Http.hs +++ b/Network/HTTP/Lucu/Parser/Http.hs @@ -13,13 +13,14 @@ module Network.HTTP.Lucu.Parser.Http , text , separator , quotedStr + , qvalue ) where import Data.List import Network.HTTP.Lucu.Parser --- |@'isCtl' c@ is True iff @0x20 <= @c@ < 0x7F@. +-- |@'isCtl' c@ is False iff @0x20 <= @c@ < 0x7F@. isCtl :: Char -> Bool isCtl c | c < '\x1f' = True @@ -105,3 +106,19 @@ quotedStr = do char '"' quotedPair = do q <- char '\\' c <- satisfy isChar return [c] + +-- |'qvalue' accepts a so-called qvalue. +qvalue :: Parser Double +qvalue = do x <- char '0' + xs <- option "" + $ do x <- char '.' + xs <- many digit -- 本當は三文字までに制限 + return (x:xs) + return $ read (x:xs) + <|> + do x <- char '1' + xs <- option "" + $ do x <- char '.' + xs <- many (char '0') -- 本當は三文字までに制限 + return (x:xs) + return $ read (x:xs)