fasterer-csv 1.6.0 → 2.0.0
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.
- data/LICENSE +1 -1
- data/README.rdoc +2 -14
- data/VERSION +1 -1
- data/fasterer-csv.gemspec +1 -1
- data/lib/fasterer_csv.rb +11 -10
- data/spec/fasterer_csv_spec.rb +20 -20
- metadata +4 -15
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -6,21 +6,9 @@ Depends on various stuff and such it almost always reads at least twice as fast,
|
|
6
6
|
|
7
7
|
It's got some caveats, though... which you'll discover in fun and entertaining ways.
|
8
8
|
|
9
|
-
Also, it's not *completely* a drop in replacement, but it's really really close. Why do it this way?
|
9
|
+
Also, it's not *completely* a drop in replacement, but it's really really close. Why do it this way? To be contrary.
|
10
10
|
|
11
|
-
|
12
|
-
== Note on Patches/Pull Requests
|
13
|
-
|
14
|
-
* Spoon the project.
|
15
|
-
* Make your feature addition or bug fix.
|
16
|
-
* Add tests for it. This is important so I don't break it in a
|
17
|
-
future version unintentionally.
|
18
|
-
* Commit, do not mess with rakefile, version, or history.
|
19
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
20
|
-
* Send me a pull request.
|
21
|
-
* Delete everything you've done at the point because I'm probably going to reimplement it anyways.
|
22
|
-
|
23
|
-
== Monkyright
|
11
|
+
== Monkeyright
|
24
12
|
|
25
13
|
Monkeyright (m) 2010 Mason. See LICENSE for details.
|
26
14
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0
|
data/fasterer-csv.gemspec
CHANGED
data/lib/fasterer_csv.rb
CHANGED
@@ -159,6 +159,7 @@ module FastererCSV
|
|
159
159
|
|
160
160
|
def pull(*columns)
|
161
161
|
columns.map do |column|
|
162
|
+
column = [nil] if column.nil?
|
162
163
|
self[*column]
|
163
164
|
end
|
164
165
|
end
|
@@ -221,13 +222,13 @@ module FastererCSV
|
|
221
222
|
end
|
222
223
|
|
223
224
|
def <<(ch)
|
224
|
-
if ch ==
|
225
|
+
if ch == ?-.ord
|
225
226
|
@float = @int = size == 0
|
226
|
-
elsif (ch > ?9 || ch < ?0) && ch !=
|
227
|
+
elsif (ch > ?9.ord || ch < ?0.ord) && ch != ?..ord
|
227
228
|
@int = @float = false
|
228
|
-
elsif ch ==
|
229
|
+
elsif ch == ?..ord && @dot
|
229
230
|
@int = @float = false
|
230
|
-
elsif ch ==
|
231
|
+
elsif ch == ?..ord
|
231
232
|
@int = false
|
232
233
|
@dot = true
|
233
234
|
end
|
@@ -304,21 +305,21 @@ module FastererCSV
|
|
304
305
|
end
|
305
306
|
|
306
307
|
def parse(data, quot = '~', sep = ',', fail_on_malformed = true, column = NoConversion.new)
|
307
|
-
q, s, row, inquot, clean, maybe, table, field, endline = quot
|
308
|
+
q, s, row, inquot, clean, maybe, table, field, endline = quot.ord, sep.ord, [], false, true, false, nil, true, false
|
308
309
|
|
309
310
|
data.each_byte do |c|
|
310
|
-
next if c == ?\r
|
311
|
+
next if c == ?\r.ord
|
311
312
|
|
312
313
|
if maybe && c == s
|
313
314
|
row << column.convert(true)
|
314
315
|
column.clear
|
315
316
|
clean, inquot, maybe, field, endline = true, false, false, true, false
|
316
|
-
elsif maybe && c == ?\n && table.nil?
|
317
|
+
elsif maybe && c == ?\n.ord && table.nil?
|
317
318
|
row << column.convert(true) unless (column.empty? && endline)
|
318
319
|
column.clear
|
319
320
|
table = Table.new(row, fail_on_malformed) unless row.empty?
|
320
321
|
row, clean, inquot, maybe, field, endline = [], true, false, false, false, true
|
321
|
-
elsif maybe && c == ?\n
|
322
|
+
elsif maybe && c == ?\n.ord
|
322
323
|
row << column.convert(true) unless (column.empty? && endline)
|
323
324
|
column.clear
|
324
325
|
table << row unless row.empty?
|
@@ -337,14 +338,14 @@ module FastererCSV
|
|
337
338
|
row << column.convert(false)
|
338
339
|
column.clear
|
339
340
|
clean, field, endline = true, true, false
|
340
|
-
elsif c == ?\n && table.nil?
|
341
|
+
elsif c == ?\n.ord && table.nil?
|
341
342
|
|
342
343
|
row << column.convert(false) unless column.empty? && endline
|
343
344
|
|
344
345
|
column.clear
|
345
346
|
table = Table.new(row, fail_on_malformed) unless row.empty?
|
346
347
|
row, clean, inquot, field, endline = [], true, false, false, true
|
347
|
-
elsif c == ?\n
|
348
|
+
elsif c == ?\n.ord
|
348
349
|
|
349
350
|
row << column.convert(false) unless column.empty? && endline
|
350
351
|
|
data/spec/fasterer_csv_spec.rb
CHANGED
@@ -21,7 +21,7 @@ describe "FastererCSV" do
|
|
21
21
|
it "works" do
|
22
22
|
|
23
23
|
conv = FastererCSV::NumericConversion.new
|
24
|
-
conv << ?1
|
24
|
+
conv << ?1.ord
|
25
25
|
conv.convert(true).class.should == String
|
26
26
|
conv.convert(true).should == "1"
|
27
27
|
|
@@ -29,37 +29,37 @@ describe "FastererCSV" do
|
|
29
29
|
conv.convert(false).should == 1
|
30
30
|
|
31
31
|
conv.clear
|
32
|
-
conv <<
|
33
|
-
conv << ?1
|
32
|
+
conv << ?-.ord
|
33
|
+
conv << ?1.ord
|
34
34
|
conv.convert(false).class.should == Fixnum
|
35
35
|
conv.convert(false).should == -1
|
36
36
|
|
37
37
|
conv.clear
|
38
|
-
conv << ?1
|
39
|
-
conv <<
|
40
|
-
conv << ?1
|
38
|
+
conv << ?1.ord
|
39
|
+
conv << ?..ord
|
40
|
+
conv << ?1.ord
|
41
41
|
conv.convert(false).class.should == Float
|
42
42
|
conv.convert(false).should == 1.1
|
43
43
|
|
44
44
|
conv.clear
|
45
|
-
conv <<
|
46
|
-
conv << ?1
|
47
|
-
conv <<
|
48
|
-
conv << ?1
|
45
|
+
conv << ?-.ord
|
46
|
+
conv << ?1.ord
|
47
|
+
conv << ?..ord
|
48
|
+
conv << ?1.ord
|
49
49
|
conv.convert(false).class.should == Float
|
50
50
|
conv.convert(false).should == -1.1
|
51
51
|
|
52
52
|
conv.clear
|
53
|
-
conv << ?1
|
54
|
-
conv <<
|
55
|
-
conv << ?1
|
56
|
-
conv <<
|
57
|
-
conv << ?1
|
53
|
+
conv << ?1.ord
|
54
|
+
conv << ?..ord
|
55
|
+
conv << ?1.ord
|
56
|
+
conv << ?..ord
|
57
|
+
conv << ?1.ord
|
58
58
|
conv.convert(false).class.should == String
|
59
59
|
conv.convert(false).should == "1.1.1"
|
60
60
|
|
61
61
|
conv.clear
|
62
|
-
conv << ?a
|
62
|
+
conv << ?a.ord
|
63
63
|
conv.convert(false).class.should == String
|
64
64
|
conv.convert(false).should == "a"
|
65
65
|
|
@@ -74,7 +74,7 @@ describe "FastererCSV" do
|
|
74
74
|
it "works" do
|
75
75
|
|
76
76
|
conv = FastererCSV::NoConversion.new
|
77
|
-
conv << ?1
|
77
|
+
conv << ?1.ord
|
78
78
|
conv.convert(true).class.should == String
|
79
79
|
conv.convert(false).class.should == String
|
80
80
|
|
@@ -105,11 +105,11 @@ a,b,c,d,e,f,g,h,i,j,k,l,m,
|
|
105
105
|
describe "parse" do
|
106
106
|
it "works" do
|
107
107
|
table = FastererCSV.parse(@data)
|
108
|
-
table.headers.should == [:a, :b, :c
|
108
|
+
table.headers.should == [:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :_]
|
109
109
|
table.lines.should == 2
|
110
110
|
|
111
|
-
table[0].should == [nil, nil, "1", "1.1", "-1", "-1.1", "1.1.1", "1", "a", "a", "a~a", "a\n~a",
|
112
|
-
table[1].should == ["0", "1", "2",
|
111
|
+
table[0].should == [nil, nil, "1", "1.1", "-1", "-1.1", "1.1.1", "1", "a", "a", "a~a", "a\n~a", ",", nil ]
|
112
|
+
table[1].should == ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "14"]
|
113
113
|
|
114
114
|
row = table[1]
|
115
115
|
row.pull(:a, nil, 'd').should == ["0","14","3"]
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fasterer-csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 6
|
9
|
-
- 0
|
10
|
-
version: 1.6.0
|
4
|
+
prerelease:
|
5
|
+
version: 2.0.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Mason
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2010-07-02 00:00:00 -
|
13
|
+
date: 2010-07-02 00:00:00 -05:00
|
19
14
|
default_executable:
|
20
15
|
dependencies: []
|
21
16
|
|
@@ -76,23 +71,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
71
|
requirements:
|
77
72
|
- - ">="
|
78
73
|
- !ruby/object:Gem::Version
|
79
|
-
hash: 3
|
80
|
-
segments:
|
81
|
-
- 0
|
82
74
|
version: "0"
|
83
75
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
76
|
none: false
|
85
77
|
requirements:
|
86
78
|
- - ">="
|
87
79
|
- !ruby/object:Gem::Version
|
88
|
-
hash: 3
|
89
|
-
segments:
|
90
|
-
- 0
|
91
80
|
version: "0"
|
92
81
|
requirements: []
|
93
82
|
|
94
83
|
rubyforge_project:
|
95
|
-
rubygems_version: 1.
|
84
|
+
rubygems_version: 1.5.2
|
96
85
|
signing_key:
|
97
86
|
specification_version: 3
|
98
87
|
summary: Even fasterer than FasterCSV!
|