packages feed

path-pieces 0.1.5 → 0.2.1

raw patch · 3 files changed

Files

ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.2.0++* Make `PathMultiPiece` instance for lists based on `PathPiece` [Yesod issue #932](https://github.com/yesodweb/yesod/issues/932)+ ## 0.1.5  Added more integral instances, and check bounds on them [#5](https://github.com/yesodweb/path-pieces/pull/5).
Web/PathPieces.hs view
@@ -2,6 +2,8 @@ module Web.PathPieces     ( PathPiece (..)     , PathMultiPiece (..)+    , readFromPathPiece+    , showToPathPiece     -- * Deprecated     , toSinglePiece     , toMultiPiece@@ -16,11 +18,16 @@ import qualified Data.Text.Read import Data.Time (Day) import Control.Exception (assert)+import Text.Read (readMaybe)  class PathPiece s where     fromPathPiece :: S.Text -> Maybe s     toPathPiece :: s -> S.Text +instance PathPiece () where+    fromPathPiece t = if t == "_" then Just () else Nothing+    toPathPiece () = "_"+ instance PathPiece String where     fromPathPiece = Just . S.unpack     toPathPiece = S.pack@@ -118,17 +125,30 @@     fromPathMultiPiece :: [S.Text] -> Maybe s     toPathMultiPiece :: s -> [S.Text] -instance PathMultiPiece [String] where-    fromPathMultiPiece = Just . map S.unpack-    toPathMultiPiece = map S.pack+instance PathPiece a => PathMultiPiece [a] where+    fromPathMultiPiece = mapM fromPathPiece+    toPathMultiPiece = map toPathPiece -instance PathMultiPiece [S.Text] where-    fromPathMultiPiece = Just-    toPathMultiPiece = id+-- | A function for helping generate free 'PathPiece'+--   instances for enumeration data types +--   that have derived 'Read' and 'Show' instances.+--   Intended to be used like this:+--+--   > data MyData = Foo | Bar | Baz+--   >   deriving (Read,Show)+--   > instance PathPiece MyData where+--   >   fromPathPiece = readFromPathPiece+--   >   toPathPiece = showToPathPiece+--+--  Since 0.2.1. +readFromPathPiece :: Read s => S.Text -> Maybe s+readFromPathPiece = readMaybe . S.unpack -instance PathMultiPiece [L.Text] where-    fromPathMultiPiece = Just . map (L.fromChunks . return)-    toPathMultiPiece = map $ S.concat . L.toChunks+-- | See the documentation for 'readFromPathPiece'.+--+--  Since 0.2.1. +showToPathPiece :: Show s => s -> S.Text+showToPathPiece = S.pack . show  {-# DEPRECATED toSinglePiece "Use toPathPiece instead of toSinglePiece" #-} toSinglePiece :: PathPiece p => p -> S.Text
path-pieces.cabal view
@@ -1,5 +1,5 @@ name:            path-pieces-version:         0.1.5+version:         0.2.1 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>