packages feed

foscam-directory 0.0.5 → 0.0.6

raw patch · 3 files changed

+52/−13 lines, 3 files

Files

changelog view
@@ -18,3 +18,6 @@  * Fix `getFoscamDirectoryContents` to include directory. +0.0.6++* Add optics for `FoscamDirectoryFile`.
foscam-directory.cabal view
@@ -1,5 +1,5 @@ name:               foscam-directory-version:            0.0.5+version:            0.0.6 license:            BSD3 license-file:       LICENSE author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> <dibblego>
src/Data/Foscam/Directory.hs view
@@ -3,15 +3,20 @@ module Data.Foscam.Directory(   getFoscamDirectoryContents , FoscamDirectoryFile(Isn't, Is)-, filenames+, _FoscamDirectory+, _Isn't+, _Is+, _Isn'tFilename+, _IsFilename ) where -import Control.Category(id)+import Control.Category((.))+import Control.Lens(Lens', Prism', Traversal', lens, prism', _1, _2) import Data.ByteString.UTF8 as UTF8(fromString) import Data.Eq(Eq) import Data.Foscam.File.Filename(Filename, filename) import Data.Functor(fmap, (<$>))-import Data.List(foldr)+import Data.Maybe(Maybe(Just, Nothing)) import Data.Ord(Ord) import System.Directory(getDirectoryContents) import System.IO(IO, FilePath)@@ -20,7 +25,7 @@ import Prelude(Show)  data FoscamDirectoryFile =-  Isn't FilePath+  Isn't FilePath FilePath   | Is FilePath Filename   deriving (Eq, Ord, Show) @@ -31,12 +36,43 @@   (fmap (\f ->      case parseString filename (Directed (UTF8.fromString p) 0 0 0 0) f of       Success n -> Is p n-      Failure _ -> Isn't f)) <$> getDirectoryContents p+      Failure _ -> Isn't p f)) <$> getDirectoryContents p -filenames ::-  [FoscamDirectoryFile]-  -> [(FilePath, Filename)]-filenames =-  foldr (\f -> case f of-                 Isn't _ -> id-                 Is p n -> ((p,n):)) []+_FoscamDirectory ::+  Lens' FoscamDirectoryFile FilePath+_FoscamDirectory =+  lens+    (\d -> case d of +             Isn't p _ -> p+             Is    p _ -> p)+    (\d p -> case d of +               Isn't _ x -> Isn't p x+               Is    _ x -> Is p x)++_Isn't ::+  Prism' FoscamDirectoryFile (FilePath, FilePath)+_Isn't =+  prism'+    (\(d, p) -> Isn't d p)+    (\d -> case d of+             Isn't p x -> Just (p, x)+             Is    _ _ -> Nothing)++_Is ::+  Prism' FoscamDirectoryFile (FilePath, Filename)+_Is =+  prism'+    (\(d, p) -> Is d p)+    (\d -> case d of+             Isn't _ _ -> Nothing+             Is    p x -> Just (p, x))++_IsFilename ::+  Traversal' FoscamDirectoryFile Filename+_IsFilename =+  _Is . _2++_Isn'tFilename ::+  Traversal' FoscamDirectoryFile FilePath+_Isn'tFilename =+  _Is . _1