-- | -- Module: Trace.Hpc.Coveralls.Util -- Copyright: (c) 2014 Guillaume Nargeot -- License: BSD3 -- Maintainer: Guillaume Nargeot -- Stability: experimental -- -- Utility functions. module Trace.Hpc.Coveralls.Util where import Data.List fst4 :: (a, b, c, d) -> a fst4 (x, _, _, _) = x toFirstAndRest :: (a, b, c, d) -> (a, (b, c, d)) toFirstAndRest (a, b, c, d) = (a, (b, c, d)) matchAny :: [String] -> String -> Bool matchAny patterns fileName = any (`isPrefixOf` fileName) patterns groupByIndex :: Int -> [(Int, a)] -> [[a]] groupByIndex size = take size . flip (++) (repeat []) . groupByIndex' 0 [] where groupByIndex' _ ys [] = [ys] groupByIndex' i ys xx@((xi, x) : xs) = if xi == i then groupByIndex' i (x : ys) xs else ys : groupByIndex' (i + 1) [] xx