lens-5.0.1: Lenses, Folds and Traversals
Copyright (C) 2012-16 Edward Kmett
License BSD-style (see the file LICENSE)
Maintainer Edward Kmett <ekmett@gmail.com>
Stability experimental
Portability Rank2Types
Safe Haskell Safe-Inferred
Language Haskell2010

System.FilePath.Lens

Description

Synopsis

Operators

(</>~) :: ASetter s t FilePath FilePath -> FilePath -> s -> t infixr 4 Source #

Modify the path by adding another path.

>>> (both </>~ "bin" $ ("hello","world")) == ("hello" </> "bin", "world" </> "bin")
True
(</>~) :: Setter s a FilePath FilePath -> FilePath -> s -> a
(</>~) :: Iso s a FilePath FilePath -> FilePath -> s -> a
(</>~) :: Lens s a FilePath FilePath -> FilePath -> s -> a
(</>~) :: Traversal s a FilePath FilePath -> FilePath -> s -> a

(<</>~) :: LensLike ( (,) FilePath ) s a FilePath FilePath -> FilePath -> s -> ( FilePath , a) infixr 4 Source #

Add a path onto the end of the target of a Lens and return the result

When you do not need the result of the operation, ( </>~ ) is more flexible.

(<<</>~) :: Optical' (->) q ( (,) FilePath ) s FilePath -> FilePath -> q s ( FilePath , s) infixr 4 Source #

Add a path onto the end of the target of a Lens and return the original value.

When you do not need the original value, ( </>~ ) is more flexible.

(<.>~) :: ASetter s a FilePath FilePath -> String -> s -> a infixr 4 Source #

Modify the path by adding an extension.

>>> both <.>~ "txt" $ ("hello","world")
("hello.txt","world.txt")
(<.>~) :: Setter s a FilePath FilePath -> String -> s -> a
(<.>~) :: Iso s a FilePath FilePath -> String -> s -> a
(<.>~) :: Lens s a FilePath FilePath -> String -> s -> a
(<.>~) :: Traversal s a FilePath FilePath -> String -> s -> a

(<<.>~) :: LensLike ( (,) FilePath ) s a FilePath FilePath -> String -> s -> ( FilePath , a) infixr 4 Source #

Add an extension onto the end of the target of a Lens and return the result

>>> _1 <<.>~ "txt" $ ("hello","world")
("hello.txt",("hello.txt","world"))

When you do not need the result of the operation, ( <.>~ ) is more flexible.

(<<<.>~) :: Optical' (->) q ( (,) FilePath ) s FilePath -> String -> q s ( FilePath , s) infixr 4 Source #

Add an extension onto the end of the target of a Lens but return the old value

>>> _1 <<<.>~ "txt" $ ("hello","world")
("hello",("hello.txt","world"))

When you do not need the old value, ( <.>~ ) is more flexible.

(</>=) :: MonadState s m => ASetter' s FilePath -> FilePath -> m () infix 4 Source #

Modify the target(s) of a Lens' , Iso' , Setter' or Traversal' by adding a path.

>>> execState (both </>= "bin") ("hello","world") == ("hello" </> "bin", "world" </> "bin")
True
(</>=) :: MonadState s m => Setter' s FilePath -> FilePath -> m ()
(</>=) :: MonadState s m => Iso' s FilePath -> FilePath -> m ()
(</>=) :: MonadState s m => Lens' s FilePath -> FilePath -> m ()
(</>=) :: MonadState s m => Traversal' s FilePath -> FilePath -> m ()

(<</>=) :: MonadState s m => LensLike' ( (,) FilePath ) s FilePath -> FilePath -> m FilePath infix 4 Source #

Add a path onto the end of the target of a Lens into your monad's state and return the result.

When you do not need the result of the operation, ( </>= ) is more flexible.

(<<</>=) :: MonadState s m => LensLike' ( (,) FilePath ) s FilePath -> FilePath -> m FilePath infix 4 Source #

Add a path onto the end of a target of a Lens into your monad's state and return the old value.

When you do not need the result of the operation, ( </>= ) is more flexible.

(<.>=) :: MonadState s m => ASetter' s FilePath -> String -> m () infix 4 Source #

Modify the target(s) of a Lens' , Iso' , Setter' or Traversal' by adding an extension.

>>> execState (both <.>= "txt") ("hello","world")
("hello.txt","world.txt")
(<.>=) :: MonadState s m => Setter' s FilePath -> String -> m ()
(<.>=) :: MonadState s m => Iso' s FilePath -> String -> m ()
(<.>=) :: MonadState s m => Lens' s FilePath -> String -> m ()
(<.>=) :: MonadState s m => Traversal' s FilePath -> String -> m ()

(<<.>=) :: MonadState s m => LensLike' ( (,) FilePath ) s FilePath -> String -> m FilePath infix 4 Source #

Add an extension onto the end of the target of a Lens into your monad's state and return the result.

>>> evalState (_1 <<.>= "txt") ("hello","world")
"hello.txt"

When you do not need the result of the operation, ( <.>= ) is more flexible.

(<<<.>=) :: MonadState s m => LensLike' ( (,) FilePath ) s FilePath -> String -> m FilePath infix 4 Source #

Add an extension onto the end of the target of a Lens into your monad's state and return the old value.

>>> runState (_1 <<<.>= "txt") ("hello","world")
("hello",("hello.txt","world"))

When you do not need the old value, ( <.>= ) is more flexible.

Lenses

basename :: Lens' FilePath FilePath Source #

A Lens for reading and writing to the basename

Note: This is not a legal Lens unless the outer FilePath has both a directory and filename component and the generated basenames are not null and contain no directory separators.

>>> (basename .~ "filename" $ "path" </> "name.png") == "path" </> "filename.png"
True

directory :: Lens' FilePath FilePath Source #

A Lens for reading and writing to the directory

Note: this is not a legal Lens unless the outer FilePath already has a directory component, and generated directories are not null.

>>> (("long" </> "path" </> "name.txt") ^. directory) == "long" </> "path"
True

extension :: Lens' FilePath FilePath Source #

A Lens for reading and writing to the extension

Note: This is not a legal Lens , unless you are careful to ensure that generated extension FilePath components are either null or start with extSeparator and do not contain any internal extSeparator s.

>>> (extension .~ ".png" $ "path" </> "name.txt") == "path" </> "name.png"
True

filename :: Lens' FilePath FilePath Source #

A Lens for reading and writing to the full filename

Note: This is not a legal Lens , unless you are careful to ensure that generated filename FilePath components are not null and do not contain any elements of pathSeparators s.

>>> (filename .~ "name.txt" $ "path" </> "name.png") == "path" </> "name.txt"
True