packages feed

naturalcomp-0.0.1: Text/NaturalComp/FilePath.hs

{- |
   Module:      Text.NaturalComp.FilePath
   Copyright:   2013 Hironao Komatsu
   License:     BSD
   Maintainer:  Hironao Komatsu <hirkmt@gmail.com>
   Portability: portable

   FilePaths are hard to instantiate Stringy, thus newtypes here.
-}

module Text.NaturalComp.FilePath (FilePathNC (..), FilePathNCC (..)) where

import Filesystem.Path.CurrentOS
import Prelude hiding (FilePath)
import Text.NaturalComp

newtype FilePathNC  = FilePathNC  { getFilePath  :: FilePath }
newtype FilePathNCC = FilePathNCC { getFilePathC :: FilePath }

instance Eq FilePathNC where
    x == y =
        let x' = encode $ getFilePath x
            y' = encode $ getFilePath y
        in naturalComp x' y' == EQ

instance Ord FilePathNC where
    x `compare` y =
        let x' = encode $ getFilePath x
            y' = encode $ getFilePath y
        in naturalComp x' y'

instance Eq FilePathNCC where
    x == y =
        let x' = encode $ getFilePathC x
            y' = encode $ getFilePathC y
        in naturalCaseComp x' y' == EQ

instance Ord FilePathNCC where
    x `compare` y =
        let x' = encode $ getFilePathC x
            y' = encode $ getFilePathC y
        in naturalCaseComp x' y'