{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleInstances #-}
module Path.Dhall where
import Dhall
import qualified Data.Text as T
import Path
import Data.Either.Validation
pathDecoder f opts =
Decoder
{ extract = extractPath
, expected = expectedPath
}
where
filePathDecoder :: Decoder FilePath
filePathDecoder = autoWith opts
extractPath expression =
case extract filePathDecoder expression of
Success x -> case f x of
Left exception -> Dhall.extractError (T.pack $ show exception)
Right path -> Success path
Failure e -> Failure e
expectedPath = expected filePathDecoder
instance FromDhall (Path Rel Dir) where
autoWith options = pathDecoder parseRelDir options
instance FromDhall (Path Rel File) where
autoWith options = pathDecoder parseRelFile options
instance FromDhall (Path Abs Dir) where
autoWith options = pathDecoder parseAbsDir options
instance FromDhall (Path Abs File) where
autoWith options = pathDecoder parseAbsFile options
instance ToDhall (Path Rel Dir)
instance ToDhall (Path Rel File)
instance ToDhall (Path Abs Dir)
instance ToDhall (Path Abs File)