diff options
author | Joey Hess <joeyh@joeyh.name> | 2017-05-15 23:32:17 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2017-05-16 01:03:52 -0400 |
commit | 4dc2000f97236089a8613cc6b0bf9846fea6abfa (patch) | |
tree | 83df60ef702246b0b71bc99e141d4a8bf1990438 /Utility/Split.hs | |
parent | 973180b077e60b5d12d7c57d926878d11d7f2105 (diff) |
adeiu, MissingH
Removed dependency on MissingH, instead depending on the split
library.
After laying groundwork for this since 2015, it
was mostly straightforward. Added Utility.Tuple and
Utility.Split. Eyeballed System.Path.WildMatch while implementing
the same thing.
Since MissingH's progress meter display was being used, I re-implemented
my own. Bonus: Now progress is displayed for transfers of files of
unknown size.
This commit was sponsored by Shane-o on Patreon.
Diffstat (limited to 'Utility/Split.hs')
-rw-r--r-- | Utility/Split.hs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Utility/Split.hs b/Utility/Split.hs new file mode 100644 index 000000000..decfe7d39 --- /dev/null +++ b/Utility/Split.hs @@ -0,0 +1,30 @@ +{- split utility functions + - + - Copyright 2017 Joey Hess <id@joeyh.name> + - + - License: BSD-2-clause + -} + +{-# OPTIONS_GHC -fno-warn-tabs #-} + +module Utility.Split where + +import Data.List (intercalate) +import Data.List.Split (splitOn) + +-- | same as Data.List.Utils.split +-- +-- intercalate x . splitOn x === id +split :: Eq a => [a] -> [a] -> [[a]] +split = splitOn + +-- | Split on a single character. This is over twice as fast as using +-- split on a list of length 1, while producing identical results. -} +splitc :: Eq c => c -> [c] -> [[c]] +splitc c s = case break (== c) s of + (i, _c:rest) -> i : splitc c rest + (i, []) -> i : [] + +-- | same as Data.List.Utils.replace +replace :: Eq a => [a] -> [a] -> [a] -> [a] +replace old new = intercalate new . split old |