{-# LANGUAGE CPP #-}

{-# OPTIONS_GHC -fno-warn-unused-imports #-}

module Distribution.Compat.FilePath
( isExtensionOf
, stripExtension
) where

import Data.List ( isSuffixOf, stripPrefix )
import System.FilePath

#if !MIN_VERSION_filepath(1,4,2)
isExtensionOf :: String -> FilePath -> Bool
isExtensionOf ext@('.':_) = isSuffixOf ext . takeExtensions
isExtensionOf ext         = isSuffixOf ('.':ext) . takeExtensions
#endif

#if !MIN_VERSION_filepath(1,4,1)
stripExtension :: String -> FilePath -> Maybe FilePath
stripExtension []        path = Just path
stripExtension ext@(x:_) path = stripSuffix dotExt path
 where
  dotExt = if isExtSeparator x then ext else '.':ext
  stripSuffix :: Eq a => [a] -> [a] -> Maybe [a]
  stripSuffix xs ys = fmap reverse $ stripPrefix (reverse xs) (reverse ys)
#endif
