parseTags :: Parser [String]
parseTags = parseName >>= (\t -> parseTags' >>= (\ts -> return (t:ts)))
  where parseTags' = do e <- eof
                        if e then return []
                          else do p <- peek
                                  if p == ',' then item >> parseTags
                                    else return []
parseTags :: Parser [String]
parseTags = parseName >>= (\t -> parseTags' >>= (\ts -> return (t:ts)))
  where parseTags' = do e <- eof
                        if e then return []
                          else do p <- peek
                                  if p == ',' then item >> parseTags
                                    else return []
parseTags = parseName >>= (\t -> parseTags' >>= (\ts -> return (t:ts)))
  where parseTags' = do e <- eof
                        if e then return []
                          else do p <- peek
                                  if p == ',' then item >> parseTags
                                    else return []