path-pieces 0.1.5 → 0.2.1
raw patch · 3 files changed
Files
- ChangeLog.md +4/−0
- Web/PathPieces.hs +29/−9
- path-pieces.cabal +1/−1
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>