X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Rakka.git;a=blobdiff_plain;f=Rakka%2FUtils.hs;h=3148c6bf108906112b39ebb81f63132ae8baa158;hp=15bc6f4043f5a87f149cd09a5147c4cb4cb5be7c;hb=42f51754dea02201aececaacbf194d714cd58aaf;hpb=98fd1cb53a837a9bda7145544c34872acb13a634 diff --git a/Rakka/Utils.hs b/Rakka/Utils.hs index 15bc6f4..3148c6b 100644 --- a/Rakka/Utils.hs +++ b/Rakka/Utils.hs @@ -1,3 +1,9 @@ +{-# LANGUAGE + Arrows + , OverloadedStrings + , TypeOperators + , UnicodeSyntax + #-} module Rakka.Utils ( yesOrNo , trueOrFalse @@ -10,35 +16,34 @@ module Rakka.Utils , mkQueryString ) where - import qualified Codec.Binary.UTF8.String as UTF8 import Control.Arrow import Control.Arrow.ArrowList import qualified Data.ByteString.Lazy as Lazy (ByteString) import qualified Data.ByteString.Lazy.Char8 as L8 hiding (ByteString) +import Data.Monoid.Unicode +import Data.String import Magic import Network.HTTP.Lucu import Network.URI +import Prelude.Unicode import System.IO.Unsafe - -yesOrNo :: Bool -> String +yesOrNo ∷ Bool → String yesOrNo True = "yes" yesOrNo False = "no" - -trueOrFalse :: Bool -> String +trueOrFalse ∷ Bool → String trueOrFalse True = "true" trueOrFalse False = "false" - -parseYesOrNo :: ArrowChoice a => a String Bool -parseYesOrNo - = proc str -> do case str of - "yes" -> returnA -< True - "no" -> returnA -< False - _ -> returnA -< error ("Expected yes or no: " ++ str) - +parseYesOrNo ∷ (Eq s, Show s, IsString s, ArrowChoice (⇝)) ⇒ s ⇝ Bool +parseYesOrNo + = proc str → + case str of + _ | str ≡ "yes" → returnA ⤙ True + | str ≡ "no" → returnA ⤙ False + | otherwise → returnA ⤙ error ("Expected yes or no: " ⊕ show str) maybeA :: (ArrowList a, ArrowChoice a) => a b c -> a b (Maybe c) maybeA a = listA a