censive 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/censive.gemspec +2 -2
  3. data/lib/censive.rb +19 -8
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3de2789bb1678210e42d6fb3c4987b91c70b18765cc417c336db6f6f1eb969a7
4
- data.tar.gz: 6ffdf0f664df8978b9b44cacbdc81a3c664c95d48a1d0c940dd8634fd51fc3e2
3
+ metadata.gz: 2fd3e9feff7e7610f300de0896977b7403ad161178c1f4cd28ef9c5248f8b9d1
4
+ data.tar.gz: 8ac7307f60706052caafa0f1b6c1a28dd4385d33275dfa73af69e29b29471897
5
5
  SHA512:
6
- metadata.gz: d64e1980813c2e7231637a3f7386c583892f6deee14991412075e559ac0d97118900d6f42d9722dc36db2c9195d909fb8dbd3dc1f9914ab1b493f4a46f9eacd0
7
- data.tar.gz: 0bb17da4415090f1d6235d594f03a604be3b594142e9add762eeaa1d25048942e64d7d99f2e1310566c03a7011e2457f87ce137f293c414d175a47bc4f6d5a8f
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"
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, sep: ',', quote: '"', out: nil, mode: :compact)
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
- #!# TODO: allow an option to remove trailing seps in the output
160
- # out.gsub!(/#{s}+\z/,'')
170
+ # drop trailing seps, if specified
171
+ out.gsub!(/#{s}+\z/,'') if @drop
161
172
 
162
- #!# TODO: allow these line endings to be configurable
163
- @out << out + @lf
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: "'", mode: :compact) do |out|
195
+ Censive.writer('out.csv', sep: ',', quote: "'") do |out|
185
196
  Censive.new(data).each do |row|
186
197
  out << row
187
198
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: censive
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Shreeve