]> gitweb @ CieloNegro.org - Lucu.git/commitdiff
New file: Parsable.hs
authorPHO <pho@cielonegro.org>
Mon, 19 Dec 2011 13:02:26 +0000 (22:02 +0900)
committerPHO <pho@cielonegro.org>
Mon, 19 Dec 2011 13:02:26 +0000 (22:02 +0900)
Ditz-issue: d23a51590bc111f85646532c9a8538dd04aa20b4

Data/Attoparsec/Parsable.hs [new file with mode: 0644]
Lucu.cabal
Network/HTTP/Lucu/StaticFile.hs
bugs/issue-0a2a377be55430e655ab42fdc4902fa56a058b26.yaml
bugs/issue-d23a51590bc111f85646532c9a8538dd04aa20b4.yaml [new file with mode: 0644]

diff --git a/Data/Attoparsec/Parsable.hs b/Data/Attoparsec/Parsable.hs
new file mode 100644 (file)
index 0000000..a991607
--- /dev/null
@@ -0,0 +1,65 @@
+{-# LANGUAGE MultiParamTypeClasses #-}
+module Data.Attoparsec.Parsable
+    ( Parsable(..)
+    )
+    where
+import qualified Data.Attoparsec.ByteString as B
+import qualified Data.Attoparsec.ByteString.Char8 as B
+import qualified Data.Attoparsec.Text as T
+import Data.Attoparsec.Number
+import Data.Attoparsec.Types
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as LB
+import qualified Data.Text as T
+import qualified Data.Text.Lazy as LT
+import Data.Word
+
+-- |Class of types which have their corresponding parsers.
+--
+-- Minimal complete definition: 'parse'
+class Parsable t a where
+    parse :: Parser t a
+
+instance Parsable B.ByteString Word8 where
+    {-# INLINE CONLIKE parse #-}
+    parse = B.anyWord8
+
+instance Parsable B.ByteString Char where
+    {-# INLINE CONLIKE parse #-}
+    parse = B.anyChar
+
+instance Parsable B.ByteString B.ByteString where
+    {-# INLINE CONLIKE parse #-}
+    parse = B.takeByteString
+
+instance Parsable B.ByteString LB.ByteString where
+    {-# INLINE CONLIKE parse #-}
+    parse = B.takeLazyByteString
+
+instance Parsable B.ByteString Double where
+    {-# INLINE CONLIKE parse #-}
+    parse = B.double
+
+instance Parsable B.ByteString Number where
+    {-# INLINE CONLIKE parse #-}
+    parse = B.number
+
+instance Parsable T.Text Char where
+    {-# INLINE CONLIKE parse #-}
+    parse = T.anyChar
+
+instance Parsable T.Text T.Text where
+    {-# INLINE CONLIKE parse #-}
+    parse = T.takeText
+
+instance Parsable T.Text LT.Text where
+    {-# INLINE CONLIKE parse #-}
+    parse = T.takeLazyText
+
+instance Parsable T.Text Double where
+    {-# INLINE CONLIKE parse #-}
+    parse = T.double
+
+instance Parsable T.Text Number where
+    {-# INLINE CONLIKE parse #-}
+    parse = T.number
index 00f309133b8fbfef854a475d737b64eaa3d2177f..163b9b70fdfaf34fe5186b679198df4d79d2b65a 100644 (file)
@@ -88,6 +88,7 @@ Library
             -DHAVE_SSL
 
     Exposed-Modules:
+        Data.Attoparsec.Parsable
         Data.Collections.Newtype.TH
         Network.HTTP.Lucu
         Network.HTTP.Lucu.Abortion
index 6dd47af6ff465c278842b8947a9180320ea7efca..f560ae3494a31ca53a86e33510f2c96b29e6db6d 100644 (file)
@@ -19,7 +19,6 @@ import Data.Convertible.Base
 import Data.Convertible.Instances.Text ()
 import Data.Monoid.Unicode
 import Data.String
-import qualified Data.Text as T
 import qualified Data.Text.Encoding as T
 import Network.HTTP.Lucu.Abortion
 import Network.HTTP.Lucu.Config
index 79fa84b2991bc0c40c44fdf0ab1395f7aa73e725..808055c3c2aa896ce163b1b67465033061f2cefb 100644 (file)
@@ -5,8 +5,8 @@ type: :task
 component: Lucu
 release: Lucu-1.0
 reporter: PHO <pho@cielonegro.org>
-status: :in_progress
-disposition: 
+status: :closed
+disposition: :fixed
 creation_time: 2011-12-14 14:07:41.367770 Z
 references: []
 
@@ -24,4 +24,8 @@ log_events:
   - PHO <pho@cielonegro.org>
   - changed status from unstarted to in_progress
   - ""
+- - 2011-12-19 13:00:36.705779 Z
+  - PHO <pho@cielonegro.org>
+  - closed with disposition fixed
+  - Done.
 git_branch: 
diff --git a/bugs/issue-d23a51590bc111f85646532c9a8538dd04aa20b4.yaml b/bugs/issue-d23a51590bc111f85646532c9a8538dd04aa20b4.yaml
new file mode 100644 (file)
index 0000000..d33391b
--- /dev/null
@@ -0,0 +1,23 @@
+--- !ditz.rubyforge.org,2008-03-06/issue 
+title: Introduce 'Parsable' type class
+desc: I'll send a pull request to bos/attoparsec when it's ready.
+type: :task
+component: Lucu
+release: Lucu-1.0
+reporter: PHO <pho@cielonegro.org>
+status: :in_progress
+disposition: 
+creation_time: 2011-12-19 13:01:51.401625 Z
+references: []
+
+id: d23a51590bc111f85646532c9a8538dd04aa20b4
+log_events: 
+- - 2011-12-19 13:01:52.375925 Z
+  - PHO <pho@cielonegro.org>
+  - created
+  - ""
+- - 2011-12-19 13:02:07.064863 Z
+  - PHO <pho@cielonegro.org>
+  - changed status from unstarted to in_progress
+  - ""
+git_branch: