
module Parse where

import Text.ParserCombinators.Parsec

parsePair :: Char -> Parser (String, String)
parsePair sep = do
    a <- manyTill anyToken (char sep)
    b <- manyTill anyToken newline
    return (a, b)

parseCommaPairs = many (parsePair ',')

parseTabPairs = many (parsePair '\t')

withParse :: Parser a -> String -> (a -> IO ()) -> IO ()
withParse parser input f =
    case parse parser "" input of
        Left err -> putStrLn ("error: " ++ show err)
        Right parse -> f parse

