X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FHttpVersion.hs;h=36b6c499b1428e48f9ea4c0c1a383fbeab8f8026;hp=2029a7facbaf3e5eec5a1bc42201a74e26ff9151;hb=a362be1c8664306b970c32e1df9b62081498feb1;hpb=45e3770f440c9fa8668f7e33063d630d73bcbe55 diff --git a/Network/HTTP/Lucu/HttpVersion.hs b/Network/HTTP/Lucu/HttpVersion.hs index 2029a7f..36b6c49 100644 --- a/Network/HTTP/Lucu/HttpVersion.hs +++ b/Network/HTTP/Lucu/HttpVersion.hs @@ -6,11 +6,9 @@ module Network.HTTP.Lucu.HttpVersion ( HttpVersion(..) , printHttpVersion - - , httpVersionP + , httpVersion ) where -import qualified Blaze.Text.Int as BT import Control.Applicative import Control.Applicative.Unicode import Data.Ascii (AsciiBuilder) @@ -39,18 +37,15 @@ printHttpVersion v -- Optimisation for special cases. HttpVersion 1 0 → A.toAsciiBuilder "HTTP/1.0" HttpVersion 1 1 → A.toAsciiBuilder "HTTP/1.1" - -- General cases. + -- General (but almost never stumbling) cases. HttpVersion maj min - → A.toAsciiBuilder "HTTP/" ⊕ - A.unsafeFromBuilder (BT.integral maj) ⊕ - A.toAsciiBuilder "." ⊕ - A.unsafeFromBuilder (BT.integral min) + → A.toAsciiBuilder "HTTP/" ⊕ + A.toAsciiBuilder (A.unsafeFromString $ show maj) ⊕ + A.toAsciiBuilder "." ⊕ + A.toAsciiBuilder (A.unsafeFromString $ show min) -- |'Parser' for an 'HttpVersion'. -httpVersionP ∷ Parser HttpVersion -httpVersionP = string "HTTP/" - *> - choice [ string "1.1" *> pure (HttpVersion 1 1) - , string "1.0" *> pure (HttpVersion 1 0) - , HttpVersion <$> decimal ⊛ (char '.' *> decimal) - ] +httpVersion ∷ Parser HttpVersion +httpVersion = string "HTTP/" + *> + (HttpVersion <$> decimal ⊛ (char '.' *> decimal))