Skip to content

Commit 95bcf91

Browse files
committed
unit tests; lazy quotes; output header; ErrEmptyRow; Options struct; much refractoring
1 parent d9bd17d commit 95bcf91

35 files changed

Lines changed: 1007 additions & 450 deletions

.travis.yml

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ sudo: false
22
language: go
33

44
go:
5-
- 1.9
5+
- "1.9"
66
- "1.10"
7+
- "1.11"
78
- tip
89

910
os:
@@ -21,13 +22,5 @@ install:
2122
- gometalinter --install
2223

2324
script:
24-
- gometalinter --misspell-locale=US --disable-all --enable=misspell --enable=vet ./gss/
25-
- gometalinter --misspell-locale=US --disable-all --enable=misspell --enable=vet ./plugins/gss/
26-
- gometalinter --misspell-locale=US --disable-all --enable=misspell --enable=vet ./cmd/gss/
27-
- gometalinter --misspell-locale=US --disable-all --enable=misspell --enable=vet ./cmd/gss.js/
28-
- cd gss
29-
- go fmt
30-
- cd ./../cmd/gss
31-
- go fmt
32-
- cd ./../../cmd/gss.js
33-
- go fmt
25+
- scripts/format.sh
26+
- scripts/test.sh

Gopkg.toml

Whitespace-only changes.

cmd/gss.js/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121

2222
func main() {
2323
js.Global.Set("gss", map[string]interface{}{
24-
"version": gss.VERSION,
24+
"version": gss.Version,
2525
"formats": gss.Formats,
2626
"convert": gssjs.Convert,
2727
"deserialize": gssjs.Deserialize,

cmd/gss/main.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,24 @@ func main() {
3434
var input_format string
3535
var input_header_text string
3636
var input_comment string
37+
var input_lazy_quotes bool
3738
var input_limit int
3839

3940
var output_format string
41+
var output_header_text string
4042
var output_limit int
4143

4244
var version bool
4345
var verbose bool
4446
var help bool
4547

4648
flag.StringVar(&input_format, "i", "", "The input format: "+strings.Join(gss.Formats, ", "))
47-
flag.StringVar(&input_header_text, "h", "", "The input header if the stdin input has no header.")
49+
flag.StringVar(&input_header_text, "", "", "The input header if the stdin input has no header.")
4850
flag.StringVar(&input_comment, "c", "", "The input comment character, e.g., #. Commented lines are not sent to output.")
51+
flag.BoolVar(&input_lazy_quotes, "", false, "allows lazy quotes for CSV and TSV")
4952
flag.IntVar(&input_limit, "", -1, "The input limit")
5053
flag.StringVar(&output_format, "o", "", "The output format: "+strings.Join(gss.Formats, ", "))
54+
flag.StringVar(&output_header_text, "", "", "The output header if the stdout output has no header.")
5155
flag.IntVar(&output_limit, "", -1, "the output limit")
5256
flag.BoolVar(&version, "version", false, "Prints version to stdout")
5357
flag.BoolVar(&verbose, "verbose", false, "Print debug info to stdout")
@@ -72,7 +76,7 @@ func main() {
7276
}
7377

7478
if version {
75-
fmt.Println(gss.VERSION)
79+
fmt.Println(gss.Version)
7680
os.Exit(0)
7781
}
7882

@@ -99,7 +103,12 @@ func main() {
99103
input_header = strings.Split(input_header_text, ",")
100104
}
101105

102-
output_string, err := gss.Convert(input_bytes, input_format, input_header, input_comment, input_limit, output_format, output_limit, verbose)
106+
output_header := make([]string, 0)
107+
if len(input_header_text) > 0 {
108+
output_header = strings.Split(output_header_text, ",")
109+
}
110+
111+
output_string, err := gss.Convert(input_bytes, input_format, input_header, input_comment, input_lazy_quotes, input_limit, output_format, output_header, output_limit, verbose)
103112
if err != nil {
104113
fmt.Println(errors.Wrap(err, "Error converting"))
105114
os.Exit(1)

gss/Convert.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414

1515
// Convert converts an input_string from the input_format to the output_format.
1616
// Returns the output string and error, if any.
17-
func Convert(input_bytes []byte, input_format string, input_header []string, input_comment string, input_limit int, output_format string, output_limit int, verbose bool) (string, error) {
17+
func Convert(input_bytes []byte, input_format string, input_header []string, input_comment string, input_lazy_quotes bool, input_limit int, output_format string, output_header []string, output_limit int, verbose bool) (string, error) {
1818

1919
input_type, err := GetType(input_bytes, input_format)
2020
if err != nil {
@@ -29,24 +29,24 @@ func Convert(input_bytes []byte, input_format string, input_header []string, inp
2929

3030
if input_format == "bson" || input_format == "json" || input_format == "hcl" || input_format == "hcl2" || input_format == "properties" || input_format == "toml" || input_format == "yaml" {
3131
if output_format == "bson" || output_format == "json" || input_format == "hcl" || input_format == "hcl2" || output_format == "properties" || output_format == "toml" || output_format == "yaml" {
32-
object, err := Deserialize(string(input_bytes), input_format, input_header, input_comment, input_limit, input_type, verbose)
32+
object, err := DeserializeBytes(input_bytes, input_format, input_header, input_comment, input_lazy_quotes, input_limit, input_type, verbose)
3333
if err != nil {
3434
return "", errors.Wrap(err, "Error deserializing input")
3535
}
3636
if verbose {
3737
fmt.Println("Object:", object)
3838
}
39-
output_string, err := Serialize(object, output_format)
39+
output_string, err := SerializeString(object, output_format, output_header, output_limit)
4040
if err != nil {
4141
return "", errors.Wrap(err, "Error serializing output")
4242
}
4343
return output_string, nil
4444
} else if output_format == "jsonl" {
45-
object, err := Deserialize(string(input_bytes), input_format, input_header, input_comment, input_limit, input_type, verbose)
45+
object, err := DeserializeBytes(input_bytes, input_format, input_header, input_comment, input_lazy_quotes, input_limit, input_type, verbose)
4646
if err != nil {
4747
return "", errors.Wrap(err, "Error deserializing input")
4848
}
49-
output_string, err := Serialize(object, output_format)
49+
output_string, err := SerializeString(object, output_format, output_header, output_limit)
5050
if err != nil {
5151
return "", errors.Wrap(err, "Error serializing output")
5252
}
@@ -60,11 +60,11 @@ func Convert(input_bytes []byte, input_format string, input_header []string, inp
6060
}
6161
} else if input_format == "jsonl" || input_format == "csv" || input_format == "tsv" {
6262
if output_format == "bson" || output_format == "json" || output_format == "hcl" || output_format == "hcl2" || output_format == "toml" || output_format == "yaml" || output_format == "jsonl" || output_format == "csv" || output_format == "tsv" {
63-
object, err := Deserialize(string(input_bytes), input_format, input_header, input_comment, input_limit, input_type, verbose)
63+
object, err := DeserializeBytes(input_bytes, input_format, input_header, input_comment, input_lazy_quotes, input_limit, input_type, verbose)
6464
if err != nil {
6565
return "", errors.Wrap(err, "Error deserializing input")
6666
}
67-
output_string, err := Serialize(object, output_format)
67+
output_string, err := SerializeString(object, output_format, output_header, output_limit)
6868
if err != nil {
6969
return "", errors.Wrap(err, "Error serializing output")
7070
}

gss/Deserialize.go

Lines changed: 0 additions & 215 deletions
This file was deleted.

0 commit comments

Comments
 (0)