// Copyright 2014 Oleku Konko All rights reserved. // Use of this source code is governed by a MIT // license that can be found in the LICENSE file. // This module is a Table Writer API for the Go Programming Language. // The protocols were written in pure Go and works on windows and unix systems package tablewriter import ( "encoding/csv" "io" "os" ) // Start A new table by importing from a CSV file // Takes io.Writer and csv File name func NewCSV(writer io.Writer, fileName string, hasHeader bool) (*Table, error) { file, err := os.Open(fileName) if err != nil { return &Table{}, err } defer file.Close() csvReader := csv.NewReader(file) t, err := NewCSVReader(writer, csvReader, hasHeader) return t, err } // Start a New Table Writer with csv.Reader // This enables customisation such as reader.Comma = ';' // See http://golang.org/src/pkg/encoding/csv/reader.go?s=3213:3671#L94 func NewCSVReader(writer io.Writer, csvReader *csv.Reader, hasHeader bool) (*Table, error) { t := NewWriter(writer) if hasHeader { // Read the first row headers, err := csvReader.Read() if err != nil { return &Table{}, err } t.SetHeader(headers) } for { record, err := csvReader.Read() if err == io.EOF { break } else if err != nil { return &Table{}, err } t.Append(record) } return t, nil }