foscam-filename 0.0.1 → 0.0.3
raw patch · 4 files changed
+35/−7 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Foscam.File.Alias: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.Alias.AsAlias p f GHC.Base.String
- Data.Foscam.File.AliasCharacter: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.AliasCharacter.AsAliasCharacter p f GHC.Types.Char
- Data.Foscam.File.Date: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.Date.AsDate p f GHC.Base.String
- Data.Foscam.File.DeviceId: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.DeviceId.AsDeviceId p f GHC.Base.String
- Data.Foscam.File.DeviceIdCharacter: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.DeviceIdCharacter.AsDeviceIdCharacter p f GHC.Types.Char
- Data.Foscam.File.ImageId: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.ImageId.AsImageId p f GHC.Base.String
- Data.Foscam.File.Time: instance (Data.Profunctor.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.Time.AsTime p f GHC.Base.String
+ Data.Foscam.File.Alias: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.Alias.AsAlias p f GHC.Base.String
+ Data.Foscam.File.AliasCharacter: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.AliasCharacter.AsAliasCharacter p f GHC.Types.Char
+ Data.Foscam.File.Date: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.Date.AsDate p f GHC.Base.String
+ Data.Foscam.File.DeviceId: getDeviceIdCharacters :: Fold DeviceId Char
+ Data.Foscam.File.DeviceId: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.DeviceId.AsDeviceId p f GHC.Base.String
+ Data.Foscam.File.DeviceId: instance (p ~ (->), GHC.Base.Applicative f) => Data.Foscam.File.DeviceIdCharacter.AsDeviceIdCharacter p f Data.Foscam.File.DeviceId.DeviceId
+ Data.Foscam.File.DeviceIdCharacter: getDeviceIdCharacter :: Getter DeviceIdCharacter Char
+ Data.Foscam.File.DeviceIdCharacter: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.DeviceIdCharacter.AsDeviceIdCharacter p f GHC.Types.Char
+ Data.Foscam.File.DeviceIdCharacter: instance (p ~ (->), GHC.Base.Applicative f) => Data.Foscam.File.DeviceIdCharacter.AsDeviceIdCharacter p f GHC.Base.String
+ Data.Foscam.File.ImageId: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.ImageId.AsImageId p f GHC.Base.String
+ Data.Foscam.File.Time: instance (Data.Profunctor.Choice.Choice p, GHC.Base.Applicative f) => Data.Foscam.File.Time.AsTime p f GHC.Base.String
Files
- changelog +4/−0
- foscam-filename.cabal +2/−2
- src/Data/Foscam/File/DeviceId.hs +15/−3
- src/Data/Foscam/File/DeviceIdCharacter.hs +14/−2
changelog view
@@ -2,3 +2,7 @@ * Initial version. +0.0.3++* Add folds, getters, traversals.+
foscam-filename.cabal view
@@ -1,12 +1,12 @@ name: foscam-filename-version: 0.0.1+version: 0.0.3 license: BSD3 license-file: LICENSE author: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> <dibblego> maintainer: Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> <dibblego> copyright: Copyright (C) 2015 Tony Morris synopsis: Foscam File format-category: Data+category: Data, Parsing, File description: Foscam File format
src/Data/Foscam/File/DeviceId.hs view
@@ -1,17 +1,20 @@ {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-} module Data.Foscam.File.DeviceId( DeviceId(..) , AsDeviceId(..) , deviceId+, getDeviceIdCharacters ) where import Control.Applicative(Applicative((<*>)), (<$>))-import Control.Category(id)-import Control.Lens(Optic', Choice, prism', (^?), ( # ))+import Control.Category(id, (.))+import Control.Lens(Optic', Choice, Fold, prism', (^?), ( # )) import Control.Monad(Monad)+import Data.Char(Char) import Data.Eq(Eq) import Data.Foscam.File.DeviceIdCharacter import Data.Functor(fmap)@@ -22,7 +25,6 @@ import Text.Parser.Combinators((<?>)) import Prelude(Show) - -- $setup -- >>> import Text.Parsec @@ -50,6 +52,10 @@ _DeviceId = id +instance (p ~ (->), Applicative f) => AsDeviceIdCharacter p f DeviceId where+ _DeviceIdCharacter f (DeviceId d01 d02 d03 d04 d05 d06 d07 d08 d09 d10 d11 d12) =+ DeviceId <$> f d01 <*> f d02 <*> f d03 <*> f d04 <*> f d05 <*> f d06 <*> f d07 <*> f d08 <*> f d09 <*> f d10 <*> f d11 <*> f d12+ instance (Choice p, Applicative f) => AsDeviceId p f String where _DeviceId = prism'@@ -72,6 +78,12 @@ f c12 _ -> Nothing)++getDeviceIdCharacters :: + Fold DeviceId Char+getDeviceIdCharacters =+ _DeviceIdCharacter . getDeviceIdCharacter+ -- | --
src/Data/Foscam/File/DeviceIdCharacter.hs view
@@ -1,16 +1,18 @@ {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-} module Data.Foscam.File.DeviceIdCharacter( DeviceIdCharacter , AsDeviceIdCharacter(..) , deviceIdCharacter+, getDeviceIdCharacter ) where import Control.Applicative(Applicative(pure)) import Control.Category(id, (.))-import Control.Lens(Optic', Choice, prism')+import Control.Lens(Optic', Choice, Getter, prism', re) import Control.Monad(Monad(fail)) import Data.Char(Char) import Data.Eq(Eq)@@ -18,11 +20,12 @@ import Data.Foscam.File.Internal(boolj, charP) import Data.List(elem, (++)) import Data.Ord(Ord)+import Data.String(String)+import Data.Traversable(traverse) import Text.Parser.Char(CharParsing) import Text.Parser.Combinators((<?>)) import Prelude(Show) - -- $setup -- >>> import Text.Parsec @@ -43,6 +46,15 @@ prism' (\(DeviceIdCharacter c) -> c) (fmap DeviceIdCharacter . boolj (`elem` (['A'..'F'] ++ ['0'..'9'])))++instance (p ~ (->), Applicative f) => AsDeviceIdCharacter p f String where+ _DeviceIdCharacter =+ traverse . _DeviceIdCharacter++getDeviceIdCharacter ::+ Getter DeviceIdCharacter Char+getDeviceIdCharacter =+ re _DeviceIdCharacter -- | --