github.com/getgauge/gauge@v1.6.9/parser/tableParser.go (about)

     1  /*----------------------------------------------------------------
     2   *  Copyright (c) ThoughtWorks, Inc.
     3   *  Licensed under the Apache License, Version 2.0
     4   *  See LICENSE in the project root for license information.
     5   *----------------------------------------------------------------*/
     6  
     7  package parser
     8  
     9  import (
    10  	"encoding/csv"
    11  	"os"
    12  	"strings"
    13  
    14  	"github.com/getgauge/gauge/env"
    15  	"github.com/getgauge/gauge/gauge"
    16  )
    17  
    18  func convertCsvToTable(csvContents string) (*gauge.Table, error) {
    19  	r := csv.NewReader(strings.NewReader(csvContents))
    20  	var de = os.Getenv(env.CsvDelimiter)
    21  	if de != "" {
    22  		r.Comma = []rune(os.Getenv(env.CsvDelimiter))[0]
    23  	}
    24  	r.Comment = '#'
    25  	lines, err := r.ReadAll()
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	table := new(gauge.Table)
    30  	for i, line := range lines {
    31  		if i == 0 {
    32  			table.AddHeaders(line)
    33  		} else {
    34  			table.AddRowValues(table.CreateTableCells(line))
    35  		}
    36  	}
    37  	return table, nil
    38  }