{-
  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"
