cab-0.2.0: Distribution/Cab/Utils.hs
module Distribution.Cab.Utils where
import Data.List
-- |
-- >>> fromDotted "1.2.3"
-- [1,2,3]
fromDotted :: String -> [Int]
fromDotted [] = []
fromDotted xs = case break (=='.') xs of
(x,"") -> [read x :: Int]
(x,_:ys) -> (read x :: Int) : fromDotted ys
-- |
-- >>> toDotted [1,2,3]
-- "1.2.3"
toDotted :: [Int] -> String
toDotted = joinBy "." . map show
-- |
-- >>> joinBy "," ["foo","bar","baz"]
-- "foo,bar,baz"
joinBy :: String -> [String] -> String
joinBy = intercalate
-- |
-- >>> split 4 "0123457689"
-- ["0123","4576","89"]
split :: Int -> [a] -> [[a]]
split _ [] = []
split n ss = x : split n rest
where
(x,rest) = splitAt n ss