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.
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