censive 0.5 → 0.6
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 +4 -4
- data/censive.gemspec +2 -2
- data/lib/censive.rb +19 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fd3e9feff7e7610f300de0896977b7403ad161178c1f4cd28ef9c5248f8b9d1
|
4
|
+
data.tar.gz: 8ac7307f60706052caafa0f1b6c1a28dd4385d33275dfa73af69e29b29471897
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccc3de3e28e7fe7463acd86423f8391cad49238363ea4631727202639815fac10554a1bd388450d07422578ac04840d0b37c464dd56e3f600e7f4b732c6b4fee
|
7
|
+
data.tar.gz: 5304136792442e52d339bd9c86db318104773665b041c5d62ed18e74b1d50dcb0fe1b135ae6e9accffccb883aef34b05bc1f6d0b1681826faf9334d18ed0624e
|
data/censive.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "censive"
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.6"
|
6
6
|
s.author = "Steve Shreeve"
|
7
7
|
s.email = "steve.shreeve@gmail.com"
|
8
8
|
s.summary = "A quick and lightweight CVS handling library for Ruby"
|
@@ -10,5 +10,5 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "https://github.com/shreeve/censive"
|
11
11
|
s.license = "MIT"
|
12
12
|
s.files = `git ls-files`.split("\n") - %w[.gitignore]
|
13
|
-
s.executables = `cd bin && git ls-files .`.split("\n")
|
13
|
+
s.executables = `(cd bin 2>&1) > /dev/null && git ls-files .`.split("\n")
|
14
14
|
end
|
data/lib/censive.rb
CHANGED
@@ -33,17 +33,28 @@ class Censive < StringScanner
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
def initialize(str=nil,
|
36
|
+
def initialize(str=nil,
|
37
|
+
sep: ',' , # column separator character
|
38
|
+
quote: '"' , # quote character
|
39
|
+
out: nil , # output IO/file
|
40
|
+
mode: :compact, # export mode: compact or full
|
41
|
+
drop: false , # enable to drop trailing separators
|
42
|
+
eol: "\n" # desired line endings for exports
|
43
|
+
)
|
37
44
|
super(str || '')
|
38
45
|
reset
|
46
|
+
|
39
47
|
@sep = sep .freeze
|
40
48
|
@quote = quote.freeze
|
49
|
+
@out = out
|
50
|
+
@mode = mode
|
51
|
+
@drop = drop
|
52
|
+
@eol = eol.freeze
|
53
|
+
|
41
54
|
@es = "" .freeze
|
42
55
|
@cr = "\r" .freeze
|
43
56
|
@lf = "\n" .freeze
|
44
|
-
@out = out
|
45
57
|
@esc = (@quote * 2).freeze
|
46
|
-
@mode = mode
|
47
58
|
end
|
48
59
|
|
49
60
|
def reset(str=nil)
|
@@ -156,11 +167,11 @@ class Censive < StringScanner
|
|
156
167
|
row.map {|col| "#{q}#{col.gsub(q, @esc)}#{q}" }
|
157
168
|
end.join(s)
|
158
169
|
|
159
|
-
|
160
|
-
|
170
|
+
# drop trailing seps, if specified
|
171
|
+
out.gsub!(/#{s}+\z/,'') if @drop
|
161
172
|
|
162
|
-
|
163
|
-
@out << out + @
|
173
|
+
# write output, using desired line endings
|
174
|
+
@out << out + @eol
|
164
175
|
end
|
165
176
|
|
166
177
|
def each
|
@@ -181,7 +192,7 @@ end
|
|
181
192
|
|
182
193
|
data = File.read('1.csv')
|
183
194
|
|
184
|
-
Censive.writer('out.csv', sep: ',', quote: "'"
|
195
|
+
Censive.writer('out.csv', sep: ',', quote: "'") do |out|
|
185
196
|
Censive.new(data).each do |row|
|
186
197
|
out << row
|
187
198
|
end
|