4 Commits

Author SHA1 Message Date
7d521b3d11 fusion 2022-05-04 12:56:51 +02:00
4806216045 gofmt 2022-05-04 12:52:06 +02:00
8e7dae3638 Renamed Parser 2022-03-28 07:04:45 +00:00
3cf4e76bfa Changed module path 2022-03-25 19:43:51 +00:00
3 changed files with 14 additions and 7 deletions

View File

@@ -29,19 +29,19 @@ var EnclosersRunes = map[EncloserId]Encloser{
CurlyBrackets: Encloser{'{', '}'}, CurlyBrackets: Encloser{'{', '}'},
} }
type CsvParser struct { type Parser struct {
Enclosers []EncloserId Enclosers []EncloserId
Delimiter string Delimiter string
Fields []string Fields []string
Line string Line string
} }
func (parser *CsvParser) Init() { func (parser *Parser) Init() {
parser.Enclosers = []EncloserId{DoubleQuotes, SquareBrackets} parser.Enclosers = []EncloserId{DoubleQuotes, SquareBrackets}
parser.Delimiter = " \t" parser.Delimiter = " \t"
} }
func (parser *CsvParser) ExtractEnclosedFieldValue(endChar byte) error { func (parser *Parser) ExtractEnclosedFieldValue(endChar byte) error {
lineLen := len(parser.Line) lineLen := len(parser.Line)
for i := 1; i < lineLen; i++ { for i := 1; i < lineLen; i++ {
if parser.Line[i] == endChar && parser.Line[i-1] != '\\' { if parser.Line[i] == endChar && parser.Line[i-1] != '\\' {
@@ -53,7 +53,14 @@ func (parser *CsvParser) ExtractEnclosedFieldValue(endChar byte) error {
return errors.New("Encloser close not found") return errors.New("Encloser close not found")
} }
func (parser *CsvParser) Parse(CsvLine string) error { /*
* Usage:
* import "../csv-parser/"
* var parser csvparser.Parser
* parser.init()
* parser.Parse("a b c d")
*/
func (parser *Parser) Parse(CsvLine string) error {
var err error = nil var err error = nil
parser.Fields = make([]string,0) parser.Fields = make([]string,0)

View File

@@ -6,7 +6,7 @@ import(
func TestParse(t *testing.T) { func TestParse(t *testing.T) {
var parser CsvParser var parser Parser
var CsvTestValues = [...]string { var CsvTestValues = [...]string {
"field1 field2 field3", // standard CSV "field1 field2 field3", // standard CSV
@@ -38,7 +38,7 @@ func TestParse(t *testing.T) {
} }
} }
func TestParseWithEscape(t *testing.T) { func TestParseWithEscape(t *testing.T) {
var parser CsvParser var parser Parser
var CsvTestValues = [...]string { var CsvTestValues = [...]string {
"\"\\\"field1 and more\" field2 [\\[field3] ", // Enclosed fields "\"\\\"field1 and more\" field2 [\\[field3] ", // Enclosed fields

2
go.mod
View File

@@ -1,3 +1,3 @@
module fruit.ovh/csv-parser module git.orange.fruit.ovh/laurentu/csv-parser
go 1.17 go 1.17