{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications  #-}

module HaskellWorks.CabalCache.URI
  ( reslashUri,
  ) where

import Data.Generics.Product.Any (HasAny(the))
import HaskellWorks.Prelude
import Lens.Micro
import Network.URI               (URI)

reslashUri :: URI -> URI
reslashUri :: URI -> URI
reslashUri URI
uri = URI
uri URI -> (URI -> URI) -> URI
forall a b. a -> (a -> b) -> b
& forall {k} (sel :: k) s t a b. HasAny sel s t a b => Lens s t a b
forall (sel :: Symbol) s t a b. HasAny sel s t a b => Lens s t a b
the @"uriPath" (([Char] -> Identity [Char]) -> URI -> Identity URI)
-> ([Char] -> [Char]) -> URI -> URI
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
%~ (Char -> Char) -> [Char] -> [Char]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Char -> Char
reslashChar
  where reslashChar :: Char -> Char
        reslashChar :: Char -> Char
reslashChar Char
'\\' = Char
'/'
        reslashChar Char
c    = Char
c