{- Utils -} module Utils where import Data.List import Data.Function import Data.Maybe import qualified Text.ParserCombinators.Parsec as P split :: Char -> String -> [String] split dlmt = filter ( not . any ((==) dlmt)). groupBy (on (==) ((==) dlmt)) selector :: Eq a => [a] -> [a] -> [Int] selector source picks = (catMaybes [elemIndex x source | x <- picks]) object :: P.Parser String object = do c <- P.letter cs <- P.many (P.letter P.<|> P.digit) return (c:cs) P. "object" csv :: P.Parser [String] csv = do csv <- P.many (P.letter P.<|> P.digit P.<|> P.char ',') return (split ',' csv) P. "columns"