packages feed

txt-sushi-0.1: selectcol.hs

import Data.List
import System.Environment
import System.Exit
import System.IO

import TxtSushi.IO
import TxtSushi.Transform
import Util.CommandLineArgument
import Util.IOUtil

{-
byNameOption = OptionDescription
    False       -- isRequired
    "-by-name"  -- optionFlag
    []          -- argumentNames
    0           -- minArgumentCount
    True        -- argumentCountIsFixed

helpOption = OptionDescription
    False       -- isRequired
    "-help"     -- optionFlag
    []          -- argumentNames
    0           -- minArgumentCount
    True        -- argumentCountIsFixed

options = [helpOption, byNameOption]
-}

--toColumnIndices optionMap [] = 

main = do
    args <- getArgs
    progName <- getProgName
    
    if (length args) <= 1
        then do
            error $ progName ++ " requires at least two arguments " ++
                    "(one column argument and a filename or '-')"
        else do
            let argCount = length args
                (argsWithoutFile, [fileName]) = splitAt (argCount - 1) args
                --(optionsMap, tailArgs) = extractOptions options argsWithoutFile
                colIndices = map read (init args) :: [Int]
            
            contents <- getContentsFromFileOrStdin fileName
            
            let table = parseTable csvFormat contents
                subsetTable = selectColumns colIndices table
                subsetTableText = formatTable csvFormat subsetTable
            putStr subsetTableText
            return ()