nesquikcsv 0.1.6-java → 0.1.7-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 255038dee22845b62044b5fe0df5631cc6379ce5
4
- data.tar.gz: cb66e0db4ef59b7f466c6127d45e0420938556e2
3
+ metadata.gz: fbc244bfa0588d12fcfa0254677cb456884544f2
4
+ data.tar.gz: d47f2aae0c71b27494df777ba41649c47666d1d6
5
5
  SHA512:
6
- metadata.gz: 80879dc0e7b5ade30f51f6cbbb1980f190e11115f4c15ba65a78a294f79638efe6e20eed54259f34f8670559529b79c21af0ea0ca72b6ef734d6395811240283
7
- data.tar.gz: fca3005766cf84bde3c23c01613a61074db0f9d5981e7e655602f9f896243e3da41ca26ee95a92dac7578a74b67b8c4c1402117e2f15c653fcf1fd5581dda422
6
+ metadata.gz: 9bb5895ae76a051b8740d6641190e00914181ada5701f51bcc80eb8a64ce11c6d597cfd1a43b20e14de1a6403dcf54d7a39b3c0d5277301114771f90d49bb302
7
+ data.tar.gz: a621bcbe880b777d2edaa23b15dd76187ef1bac1bff38a555722e6a1f7226da0c585d32f349c29be02dc88bb8e7540c4c799f7bbfc979544846d8f7732b3b392
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Fork of the Fastest-CSV gem to support any encoding, using UTF-8 by default.
4
4
 
5
- Uses native C code to parse CSV lines in MRI Ruby.
5
+ Uses native C code to parse CSV lines in MRI Ruby, falls back to standard library CSV parser for JRuby
6
6
 
7
7
  Supports standard CSV according to RFC4180. Not the so-called "csv" from Excel.
8
8
 
data/Rakefile CHANGED
@@ -4,7 +4,8 @@ require "bundler/gem_tasks"
4
4
  spec = Gem::Specification.load('nesquikcsv.gemspec')
5
5
 
6
6
  if RUBY_PLATFORM =~ /java/
7
- # TODO
7
+ require 'rake/javaextensiontask'
8
+ Rake::JavaExtensionTask.new('csv_parser', spec)
8
9
  else
9
10
  require 'rake/extensiontask'
10
11
  Rake::ExtensionTask.new('csv_parser', spec)
@@ -27,3 +28,4 @@ Rake::TestTask.new do |t|
27
28
  #test.verbose = true
28
29
  end
29
30
 
31
+ task :default => [:test]
@@ -0,0 +1,89 @@
1
+ //
2
+ // Copyright (c) Maarten Oelering, BrightCode BV
3
+ //
4
+
5
+ package org.brightcode;
6
+
7
+ import java.util.ArrayList;
8
+ import java.util.List;
9
+
10
+ public class CsvParser {
11
+
12
+ private static int DEF_ARRAY_LEN = 32;
13
+
14
+ private static int UNQUOTED = 0;
15
+ private static int IN_QUOTED = 1;
16
+ private static int QUOTE_IN_QUOTED = 2;
17
+
18
+ public static List parseLine(String line, String encoding) {
19
+ int length = line.length();
20
+ if (length == 0)
21
+ return null;
22
+
23
+ int state = UNQUOTED;
24
+ StringBuilder value = new StringBuilder(length); // field value, no longer than line
25
+ List<String> array = new ArrayList<String>(DEF_ARRAY_LEN);
26
+
27
+ for (int i = 0; i < length; i++) {
28
+ char c = line.charAt(i);
29
+ switch (c) {
30
+ case ',':
31
+ if (state == UNQUOTED) {
32
+ if (value.length() == 0) {
33
+ array.add(null);
34
+ }
35
+ else {
36
+ array.add(value.toString());
37
+ value.setLength(0);
38
+ }
39
+ }
40
+ else if (state == IN_QUOTED) {
41
+ value.append(c);
42
+ }
43
+ else if (state == QUOTE_IN_QUOTED) {
44
+ array.add(value.toString());
45
+ value.setLength(0);
46
+ state = UNQUOTED;
47
+ }
48
+ break;
49
+ case '"':
50
+ if (state == UNQUOTED) {
51
+ state = IN_QUOTED;
52
+ }
53
+ else if (state == IN_QUOTED) {
54
+ state = QUOTE_IN_QUOTED;
55
+ }
56
+ else if (state == QUOTE_IN_QUOTED) {
57
+ value.append(c); // escaped quote
58
+ state = IN_QUOTED;
59
+ }
60
+ break;
61
+ case '\r':
62
+ case '\n':
63
+ if (state == IN_QUOTED) {
64
+ value.append(c);
65
+ }
66
+ else {
67
+ i = length; // only parse first line if multiline
68
+ }
69
+ break;
70
+ default:
71
+ value.append(c);
72
+ break;
73
+ }
74
+ }
75
+ if (state == UNQUOTED) {
76
+ if (value.length() == 0) {
77
+ array.add(null);
78
+ }
79
+ else {
80
+ array.add(value.toString());
81
+ value.setLength(0);
82
+ }
83
+ }
84
+ else if (state == QUOTE_IN_QUOTED) {
85
+ array.add(value.toString());
86
+ }
87
+ return array;
88
+ }
89
+ }
Binary file
@@ -1,3 +1,3 @@
1
1
  class NesquikCSV
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
data/lib/nesquikcsv.rb CHANGED
@@ -1,13 +1,13 @@
1
- if RUBY_PLATFORM =~ /java/
2
- require 'csv'
3
- else
4
- require 'csv_parser'
5
- end
1
+ require 'csv_parser'
6
2
  require 'stringio'
7
3
 
8
4
  # Fast CSV parser using native code
9
5
  class NesquikCSV
10
6
  include Enumerable
7
+
8
+ if RUBY_PLATFORM =~ /java/
9
+ include_package "org.brightcode"
10
+ end
11
11
 
12
12
  # Pass each line of the specified +path+ as array to the provided +block+
13
13
  def self.foreach(path, &block)
@@ -57,10 +57,9 @@ class NesquikCSV
57
57
 
58
58
  def self.parse_line(line, encoding="UTF-8")
59
59
  if RUBY_PLATFORM =~ /java/
60
- CSV.parse_line(line.force_encoding(encoding))
61
- else
62
- CsvParser.parse_line(line, encoding)
60
+ line = line.force_encoding(encoding)
63
61
  end
62
+ CsvParser.parse_line(line, encoding)
64
63
  end
65
64
 
66
65
  # Create new NesquikCSV wrapping the specified IO object
@@ -96,11 +95,7 @@ class NesquikCSV
96
95
  # Read next line from the wrapped IO and return as array or nil at EOF
97
96
  def shift(encoding='UTF-8')
98
97
  if line = get_line_with_quotes
99
- if RUBY_PLATFORM =~ /java/
100
- CSV.parse_line(line.force_encoding(encoding))
101
- else
102
- CsvParser.parse_line(line, encoding)
103
- end
98
+ CsvParser.parse_line(line, encoding)
104
99
  else
105
100
  nil
106
101
  end
data/nesquikcsv.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  if RUBY_PLATFORM =~ /java/
19
19
  gem.platform = "java"
20
+ gem.files << "lib/csv_parser.jar"
20
21
  else
21
22
  gem.extensions = ['ext/csv_parser/extconf.rb']
22
23
  end
@@ -3,144 +3,141 @@
3
3
  # Tests copied from faster_csv by James Edward Gray II
4
4
  #
5
5
 
6
- if RUBY_DESCRIPTION =~ /jruby/
7
- # TODO
8
- # These tests dont make sense for jruby since there's no Java extension
9
- else
6
+ require 'test/unit'
7
+ require 'nesquikcsv'
10
8
 
11
- require 'test/unit'
12
- require 'nesquikcsv'
9
+ #
10
+ # Following tests are my interpretation of the
11
+ # {CSV RCF}[http://www.ietf.org/rfc/rfc4180.txt]. I only deviate from that
12
+ # document in one place (intentionally) and that is to make the default row
13
+ # separator <tt>$/</tt>.
14
+ #
15
+ class TestCSVParsing < Test::Unit::TestCase
13
16
 
14
- #
15
- # Following tests are my interpretation of the
16
- # {CSV RCF}[http://www.ietf.org/rfc/rfc4180.txt]. I only deviate from that
17
- # document in one place (intentionally) and that is to make the default row
18
- # separator <tt>$/</tt>.
19
- #
20
- class TestCSVParsing < Test::Unit::TestCase
21
-
22
- def test_mastering_regex_example
23
- ex = %Q{Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K}
24
- assert_equal( [ "Ten Thousand", "10000", " 2710 ", nil, "10,000",
25
- "It's \"10 Grand\", baby", "10K" ],
26
- CsvParser.parse_line(ex, "UTF-8") )
27
- end
28
-
29
- # Pulled from: http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/test/csv/test_csv.rb?rev=1.12.2.2;content-type=text%2Fplain
30
- def test_std_lib_csv
31
- [ ["\t", ["\t"]],
32
- ["foo,\"\"\"\"\"\",baz", ["foo", "\"\"", "baz"]],
33
- ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
34
- ["\"\"\"\n\",\"\"\"\n\"", ["\"\n", "\"\n"]],
35
- ["foo,\"\r\n\",baz", ["foo", "\r\n", "baz"]],
36
- ["\"\"", [""]],
37
- ["foo,\"\"\"\",baz", ["foo", "\"", "baz"]],
38
- ["foo,\"\r.\n\",baz", ["foo", "\r.\n", "baz"]],
39
- ["foo,\"\r\",baz", ["foo", "\r", "baz"]],
40
- ["foo,\"\",baz", ["foo", "", "baz"]],
41
- ["\",\"", [","]],
42
- ["foo", ["foo"]],
43
- [",,", [nil, nil, nil]],
44
- [",", [nil, nil]],
45
- ["foo,\"\n\",baz", ["foo", "\n", "baz"]],
46
- ["foo,,baz", ["foo", nil, "baz"]],
47
- ["\"\"\"\r\",\"\"\"\r\"", ["\"\r", "\"\r"]],
48
- ["\",\",\",\"", [",", ","]],
49
- ["foo,bar,", ["foo", "bar", nil]],
50
- [",foo,bar", [nil, "foo", "bar"]],
51
- ["foo,bar", ["foo", "bar"]],
52
- [";", [";"]],
53
- ["\t,\t", ["\t", "\t"]],
54
- ["foo,\"\r\n\r\",baz", ["foo", "\r\n\r", "baz"]],
55
- ["foo,\"\r\n\n\",baz", ["foo", "\r\n\n", "baz"]],
56
- ["foo,\"foo,bar\",baz", ["foo", "foo,bar", "baz"]],
57
- [";,;", [";", ";"]] ].each do |csv_test|
58
- assert_equal(csv_test.last, CsvParser.parse_line(csv_test.first, "UTF-8"))
59
- end
60
-
61
- [ ["foo,\"\"\"\"\"\",baz", ["foo", "\"\"", "baz"]],
62
- ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
63
- ["foo,\"\r\n\",baz", ["foo", "\r\n", "baz"]],
64
- ["\"\"", [""]],
65
- ["foo,\"\"\"\",baz", ["foo", "\"", "baz"]],
66
- ["foo,\"\r.\n\",baz", ["foo", "\r.\n", "baz"]],
67
- ["foo,\"\r\",baz", ["foo", "\r", "baz"]],
68
- ["foo,\"\",baz", ["foo", "", "baz"]],
69
- ["foo", ["foo"]],
70
- [",,", [nil, nil, nil]],
71
- [",", [nil, nil]],
72
- ["foo,\"\n\",baz", ["foo", "\n", "baz"]],
73
- ["foo,,baz", ["foo", nil, "baz"]],
74
- ["foo,bar", ["foo", "bar"]],
75
- ["foo,\"\r\n\n\",baz", ["foo", "\r\n\n", "baz"]],
76
- ["foo,\"foo,bar\",baz", ["foo", "foo,bar", "baz"]] ].each do |csv_test|
77
- assert_equal(csv_test.last, CsvParser.parse_line(csv_test.first, "UTF-8"))
78
- end
79
- end
17
+ if RUBY_PLATFORM =~ /java/
18
+ include_package "org.brightcode"
19
+ end
80
20
 
81
- # From: http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-core/6496
82
- def test_aras_edge_cases
83
- [ [%Q{a,b}, ["a", "b"]],
84
- [%Q{a,"""b"""}, ["a", "\"b\""]],
85
- [%Q{a,"""b"}, ["a", "\"b"]],
86
- [%Q{a,"b"""}, ["a", "b\""]],
87
- [%Q{a,"\nb"""}, ["a", "\nb\""]],
88
- [%Q{a,"""\nb"}, ["a", "\"\nb"]],
89
- [%Q{a,"""\nb\n"""}, ["a", "\"\nb\n\""]],
90
- [%Q{a,"""\nb\n""",\nc}, ["a", "\"\nb\n\"", nil]],
91
- [%Q{a,,,}, ["a", nil, nil, nil]],
92
- [%Q{,}, [nil, nil]],
93
- [%Q{"",""}, ["", ""]],
94
- [%Q{""""}, ["\""]],
95
- [%Q{"""",""}, ["\"",""]],
96
- [%Q{,""}, [nil,""]],
97
- [%Q{,"\r"}, [nil,"\r"]],
98
- [%Q{"\r\n,"}, ["\r\n,"]],
99
- [%Q{"\r\n,",}, ["\r\n,", nil]] ].each do |edge_case|
100
- assert_equal(edge_case.last, CsvParser.parse_line(edge_case.first, "UTF-8"))
101
- end
102
- end
21
+ def test_mastering_regex_example
22
+ ex = %Q{Ten Thousand,10000, 2710 ,,"10,000","It's ""10 Grand"", baby",10K}
23
+ assert_equal( [ "Ten Thousand", "10000", " 2710 ", nil, "10,000",
24
+ "It's \"10 Grand\", baby", "10K" ],
25
+ CsvParser.parse_line(ex, "UTF-8") )
26
+ end
103
27
 
104
- def test_james_edge_cases
105
- # A read at eof? should return nil.
106
- assert_equal(nil, CsvParser.parse_line("", "UTF-8"))
107
- #
108
- # With CSV it's impossible to tell an empty line from a line containing a
109
- # single +nil+ field. The standard CSV library returns <tt>[nil]</tt>
110
- # in these cases, but <tt>Array.new</tt> makes more sense to me.
111
- #
112
- #assert_equal(Array.new, NesquikCSV.parse_line("\n1,2,3\n"))
113
- assert_equal([nil], CsvParser.parse_line("\n1,2,3\n", "UTF-8"))
28
+ # Pulled from: http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/test/csv/test_csv.rb?rev=1.12.2.2;content-type=text%2Fplain
29
+ def test_std_lib_csv
30
+ [ ["\t", ["\t"]],
31
+ ["foo,\"\"\"\"\"\",baz", ["foo", "\"\"", "baz"]],
32
+ ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
33
+ ["\"\"\"\n\",\"\"\"\n\"", ["\"\n", "\"\n"]],
34
+ ["foo,\"\r\n\",baz", ["foo", "\r\n", "baz"]],
35
+ ["\"\"", [""]],
36
+ ["foo,\"\"\"\",baz", ["foo", "\"", "baz"]],
37
+ ["foo,\"\r.\n\",baz", ["foo", "\r.\n", "baz"]],
38
+ ["foo,\"\r\",baz", ["foo", "\r", "baz"]],
39
+ ["foo,\"\",baz", ["foo", "", "baz"]],
40
+ ["\",\"", [","]],
41
+ ["foo", ["foo"]],
42
+ [",,", [nil, nil, nil]],
43
+ [",", [nil, nil]],
44
+ ["foo,\"\n\",baz", ["foo", "\n", "baz"]],
45
+ ["foo,,baz", ["foo", nil, "baz"]],
46
+ ["\"\"\"\r\",\"\"\"\r\"", ["\"\r", "\"\r"]],
47
+ ["\",\",\",\"", [",", ","]],
48
+ ["foo,bar,", ["foo", "bar", nil]],
49
+ [",foo,bar", [nil, "foo", "bar"]],
50
+ ["foo,bar", ["foo", "bar"]],
51
+ [";", [";"]],
52
+ ["\t,\t", ["\t", "\t"]],
53
+ ["foo,\"\r\n\r\",baz", ["foo", "\r\n\r", "baz"]],
54
+ ["foo,\"\r\n\n\",baz", ["foo", "\r\n\n", "baz"]],
55
+ ["foo,\"foo,bar\",baz", ["foo", "foo,bar", "baz"]],
56
+ [";,;", [";", ";"]] ].each do |csv_test|
57
+ assert_equal(csv_test.last, CsvParser.parse_line(csv_test.first, "UTF-8"))
114
58
  end
59
+
60
+ [ ["foo,\"\"\"\"\"\",baz", ["foo", "\"\"", "baz"]],
61
+ ["foo,\"\"\"bar\"\"\",baz", ["foo", "\"bar\"", "baz"]],
62
+ ["foo,\"\r\n\",baz", ["foo", "\r\n", "baz"]],
63
+ ["\"\"", [""]],
64
+ ["foo,\"\"\"\",baz", ["foo", "\"", "baz"]],
65
+ ["foo,\"\r.\n\",baz", ["foo", "\r.\n", "baz"]],
66
+ ["foo,\"\r\",baz", ["foo", "\r", "baz"]],
67
+ ["foo,\"\",baz", ["foo", "", "baz"]],
68
+ ["foo", ["foo"]],
69
+ [",,", [nil, nil, nil]],
70
+ [",", [nil, nil]],
71
+ ["foo,\"\n\",baz", ["foo", "\n", "baz"]],
72
+ ["foo,,baz", ["foo", nil, "baz"]],
73
+ ["foo,bar", ["foo", "bar"]],
74
+ ["foo,\"\r\n\n\",baz", ["foo", "\r\n\n", "baz"]],
75
+ ["foo,\"foo,bar\",baz", ["foo", "foo,bar", "baz"]] ].each do |csv_test|
76
+ assert_equal(csv_test.last, CsvParser.parse_line(csv_test.first, "UTF-8"))
77
+ end
78
+ end
115
79
 
116
- def test_rob_edge_cases
117
- [ [%Q{"a\nb"}, ["a\nb"]],
118
- [%Q{"\n\n\n"}, ["\n\n\n"]],
119
- [%Q{a,"b\n\nc"}, ['a', "b\n\nc"]],
120
- [%Q{,"\r\n"}, [nil,"\r\n"]],
121
- [%Q{,"\r\n."}, [nil,"\r\n."]],
122
- [%Q{"a\na","one newline"}, ["a\na", 'one newline']],
123
- [%Q{"a\n\na","two newlines"}, ["a\n\na", 'two newlines']],
124
- [%Q{"a\r\na","one CRLF"}, ["a\r\na", 'one CRLF']],
125
- [%Q{"a\r\n\r\na","two CRLFs"}, ["a\r\n\r\na", 'two CRLFs']],
126
- [%Q{with blank,"start\n\nfinish"\n}, ['with blank', "start\n\nfinish"]],
127
- ].each do |edge_case|
80
+ # From: http://ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-core/6496
81
+ def test_aras_edge_cases
82
+ [ [%Q{a,b}, ["a", "b"]],
83
+ [%Q{a,"""b"""}, ["a", "\"b\""]],
84
+ [%Q{a,"""b"}, ["a", "\"b"]],
85
+ [%Q{a,"b"""}, ["a", "b\""]],
86
+ [%Q{a,"\nb"""}, ["a", "\nb\""]],
87
+ [%Q{a,"""\nb"}, ["a", "\"\nb"]],
88
+ [%Q{a,"""\nb\n"""}, ["a", "\"\nb\n\""]],
89
+ [%Q{a,"""\nb\n""",\nc}, ["a", "\"\nb\n\"", nil]],
90
+ [%Q{a,,,}, ["a", nil, nil, nil]],
91
+ [%Q{,}, [nil, nil]],
92
+ [%Q{"",""}, ["", ""]],
93
+ [%Q{""""}, ["\""]],
94
+ [%Q{"""",""}, ["\"",""]],
95
+ [%Q{,""}, [nil,""]],
96
+ [%Q{,"\r"}, [nil,"\r"]],
97
+ [%Q{"\r\n,"}, ["\r\n,"]],
98
+ [%Q{"\r\n,",}, ["\r\n,", nil]] ].each do |edge_case|
128
99
  assert_equal(edge_case.last, CsvParser.parse_line(edge_case.first, "UTF-8"))
129
100
  end
130
- end
101
+ end
131
102
 
132
- def test_encoding
133
- assert_equal(["ñ","ó","¸"], CsvParser.parse_line("ñ,ó,¸", "UTF-8"))
134
- end
103
+ def test_james_edge_cases
104
+ # A read at eof? should return nil.
105
+ assert_equal(nil, CsvParser.parse_line("", "UTF-8"))
106
+ #
107
+ # With CSV it's impossible to tell an empty line from a line containing a
108
+ # single +nil+ field. The standard CSV library returns <tt>[nil]</tt>
109
+ # in these cases, but <tt>Array.new</tt> makes more sense to me.
110
+ #
111
+ #assert_equal(Array.new, NesquikCSV.parse_line("\n1,2,3\n"))
112
+ assert_equal([nil], CsvParser.parse_line("\n1,2,3\n", "UTF-8"))
113
+ end
135
114
 
136
- def test_quoted_line_break
137
- assert_equal(["foo","bar,baz\nbeam","bee"], CsvParser.parse_line("foo,\"bar,baz\nbeam\",bee", "UTF-8"))
115
+ def test_rob_edge_cases
116
+ [ [%Q{"a\nb"}, ["a\nb"]],
117
+ [%Q{"\n\n\n"}, ["\n\n\n"]],
118
+ [%Q{a,"b\n\nc"}, ['a', "b\n\nc"]],
119
+ [%Q{,"\r\n"}, [nil,"\r\n"]],
120
+ [%Q{,"\r\n."}, [nil,"\r\n."]],
121
+ [%Q{"a\na","one newline"}, ["a\na", 'one newline']],
122
+ [%Q{"a\n\na","two newlines"}, ["a\n\na", 'two newlines']],
123
+ [%Q{"a\r\na","one CRLF"}, ["a\r\na", 'one CRLF']],
124
+ [%Q{"a\r\n\r\na","two CRLFs"}, ["a\r\n\r\na", 'two CRLFs']],
125
+ [%Q{with blank,"start\n\nfinish"\n}, ['with blank', "start\n\nfinish"]],
126
+ ].each do |edge_case|
127
+ assert_equal(edge_case.last, CsvParser.parse_line(edge_case.first, "UTF-8"))
138
128
  end
129
+ end
139
130
 
140
- def test_quoted_line_break_at_end
141
- assert_equal(["foo","bar,baz\n","bee"], CsvParser.parse_line("foo,\"bar,baz\n\",bee", "UTF-8"))
142
- end
131
+ def test_encoding
132
+ assert_equal(["ñ","ó","¸"], CsvParser.parse_line("ñ,ó,¸", "UTF-8"))
133
+ end
134
+
135
+ def test_quoted_line_break
136
+ assert_equal(["foo","bar,baz\nbeam","bee"], CsvParser.parse_line("foo,\"bar,baz\nbeam\",bee", "UTF-8"))
137
+ end
143
138
 
139
+ def test_quoted_line_break_at_end
140
+ assert_equal(["foo","bar,baz\n","bee"], CsvParser.parse_line("foo,\"bar,baz\n\",bee", "UTF-8"))
144
141
  end
145
142
 
146
143
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nesquikcsv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: java
6
6
  authors:
7
7
  - Juan Martty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-02 00:00:00.000000000 Z
11
+ date: 2017-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: test-unit
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
14
  requirement: !ruby/object:Gem::Requirement
21
15
  requirements:
22
16
  - - '>='
23
17
  - !ruby/object:Gem::Version
24
18
  version: '0'
19
+ name: test-unit
25
20
  prerelease: false
26
21
  type: :development
27
- - !ruby/object:Gem::Dependency
28
- name: rake-compiler
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
24
  - - '>='
32
25
  - !ruby/object:Gem::Version
33
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
34
28
  requirement: !ruby/object:Gem::Requirement
35
29
  requirements:
36
30
  - - '>='
37
31
  - !ruby/object:Gem::Version
38
32
  version: '0'
33
+ name: rake-compiler
39
34
  prerelease: false
40
35
  type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
41
  description: Fastest-CSV fork with encoding support
42
42
  email:
43
43
  - null.terminated.string@gmail.com
@@ -50,8 +50,10 @@ files:
50
50
  - LICENSE
51
51
  - README.md
52
52
  - Rakefile
53
+ - ext/csv_parser/CsvParser.java
53
54
  - ext/csv_parser/extconf.rb
54
55
  - ext/csv_parser/parser.c
56
+ - lib/csv_parser.jar
55
57
  - lib/nesquikcsv.rb
56
58
  - lib/nesquikcsv/version.rb
57
59
  - nesquikcsv.gemspec