encoded platform string helpers
This commit is contained in:
parent
3531d4d54d
commit
4cd85ec767
@ -25,6 +25,7 @@ module Test.HUnit,
|
|||||||
)
|
)
|
||||||
where
|
where
|
||||||
import Data.Char
|
import Data.Char
|
||||||
|
import Codec.Binary.UTF8.String as UTF8 (decodeString, encodeString, isUTF8Encoded)
|
||||||
import Control.Exception
|
import Control.Exception
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Data.List
|
import Data.List
|
||||||
@ -44,6 +45,7 @@ import Test.HUnit
|
|||||||
import Text.Printf
|
import Text.Printf
|
||||||
import Text.RegexPR
|
import Text.RegexPR
|
||||||
import Text.ParserCombinators.Parsec
|
import Text.ParserCombinators.Parsec
|
||||||
|
import System.Info (os)
|
||||||
|
|
||||||
|
|
||||||
-- strings
|
-- strings
|
||||||
@ -146,6 +148,33 @@ fitto w h s = intercalate "\n" $ take h $ rows ++ repeat blankline
|
|||||||
fit w = take w . (++ repeat ' ')
|
fit w = take w . (++ repeat ' ')
|
||||||
blankline = replicate w ' '
|
blankline = replicate w ' '
|
||||||
|
|
||||||
|
-- encoded platform strings
|
||||||
|
|
||||||
|
-- | A platform string is a string value from or for the operating system,
|
||||||
|
-- such as a file path or command-line argument (or environment variable's
|
||||||
|
-- name or value ?). On some platforms (such as unix) these are not real
|
||||||
|
-- unicode strings but have some encoding such as UTF-8. This alias does
|
||||||
|
-- no type enforcement but aids code clarity.
|
||||||
|
type PlatformString = String
|
||||||
|
|
||||||
|
-- | Convert a possibly encoded platform string to a real unicode string.
|
||||||
|
-- We decode the UTF-8 encoding recommended for unix systems
|
||||||
|
-- (cf http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html)
|
||||||
|
-- and leave anything else unchanged.
|
||||||
|
fromPlatformString :: PlatformString -> String
|
||||||
|
fromPlatformString s = if UTF8.isUTF8Encoded s then UTF8.decodeString s else s
|
||||||
|
|
||||||
|
-- | Convert a unicode string to a possibly encoded platform string.
|
||||||
|
-- On unix we encode with the recommended UTF-8
|
||||||
|
-- (cf http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html)
|
||||||
|
-- and elsewhere we leave it unchanged.
|
||||||
|
toPlatformString :: String -> PlatformString
|
||||||
|
toPlatformString = case os of
|
||||||
|
"unix" -> UTF8.encodeString
|
||||||
|
"linux" -> UTF8.encodeString
|
||||||
|
"darwin" -> UTF8.encodeString
|
||||||
|
_ -> id
|
||||||
|
|
||||||
-- math
|
-- math
|
||||||
|
|
||||||
difforzero :: (Num a, Ord a) => a -> a -> a
|
difforzero :: (Num a, Ord a) => a -> a -> a
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user