servant-static-th-0.1.0.0: src/Servant/Static/TH/Internal/Util.hs
{- |
Module : Servant.Static.TH.Internal.Util
Copyright : Dennis Gosnell 2017
License : BSD3
Maintainer : Dennis Gosnell (cdep.illabout@gmail.com)
Stability : experimental
Portability : unknown
Utilities functions for use in this package.
-}
module Servant.Static.TH.Internal.Util where
import System.FilePath (takeExtension)
-- | Remove a leading period from a 'String'.
--
-- >>> removeLeadingPeriod ".jpg"
-- "jpg"
--
-- Just return the 'String' if it doesn't start with a period:
--
-- >>> removeLeadingPeriod "hello"
-- "hello"
--
-- Return an empty string if the only character in the string is a period:
--
-- >>> removeLeadingPeriod "."
-- ""
--
-- Remove at most one period:
--
-- >>> removeLeadingPeriod "..bye"
-- ".bye"
removeLeadingPeriod :: String -> String
removeLeadingPeriod ('.':chars) = chars
removeLeadingPeriod string = string
-- | Return an extension for a 'FilePath'. Just like 'takeExtension', but
-- doesn't return the leading period.
--
-- >>> getExtension "/some/file.html"
-- "html"
--
-- Empty string is returned for files with no extension:
--
-- >>> getExtension "file"
-- ""
getExtension :: FilePath -> FilePath
getExtension = removeLeadingPeriod . takeExtension