censive 0.29 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/censive.rb +42 -3
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ab03fca630d441eb0d600137017738fe47949b1b333ddb92d82bd690b9015ef
4
- data.tar.gz: e864e8e08e27abd92852a6cf28f1a54e09454c421023e004a6222f428a874b81
3
+ metadata.gz: 3db4c7bfa5df5911b7ec460329f59b1dc858881fcfc65e7bab98800861c40b5b
4
+ data.tar.gz: 2f0e4b3ec85aab97c5b9c1436513a0fa4cafb0395f6b02abe6275346ab684bc7
5
5
  SHA512:
6
- metadata.gz: c412bd6870fb5e577436d055cea945905ebc3ab2f74df43ca678eb5bc0c26c9e1d7a4ecb43f10f8896d5735799f64fce2d3f33ee347e454b6840b4ce054d09dc
7
- data.tar.gz: 968a53df8658a96b6f2c74d9e3dd868320028630d7b92c3e7068e3ef52894181cf76283e5516c10cb0df3f711e99896513cb5455db490bff5ee4dca5ac7f33f4
6
+ metadata.gz: dcc066cfd497a52a2481137233c40af86048d41889ce01d08d03ddf21a79e29e1e0236bc2fa4a9aeda35ef03d8f24061e5e4978a047f8a8ab9715bd0e902a0af
7
+ data.tar.gz: 3a3bbbbfb2fc787dc1b58c1f295fa25d0d4a1060310d457230aa1b3e4b675a5539c3b91eedf384edef1abf0c3b9ff58e1d6c191571af8f58034edc503266f7f8
data/lib/censive.rb CHANGED
@@ -28,7 +28,7 @@
28
28
  require "strscan"
29
29
 
30
30
  class Censive < StringScanner
31
- VERSION="0.29"
31
+ VERSION="1.0.1"
32
32
 
33
33
  attr :encoding, :out, :rows
34
34
 
@@ -199,7 +199,7 @@ class Censive < StringScanner
199
199
 
200
200
  # returns 2 (must be quoted and escaped), 1 (must be quoted), 0 (neither)
201
201
  def grok(str)
202
- if idx = str.index(@escapes)
202
+ if idx = str&.index(@escapes)
203
203
  $1 ? 2 : str.index(@quote, idx) ? 2 : 1
204
204
  else
205
205
  0
@@ -220,7 +220,7 @@ class Censive < StringScanner
220
220
  row
221
221
  when 1
222
222
  row.map do |col|
223
- col.match?(@quotable) ? "#{q}#{col}#{q}" : col
223
+ col&.match?(@quotable) ? "#{q}#{col}#{q}" : col
224
224
  end
225
225
  else
226
226
  row.map do |col|
@@ -257,3 +257,42 @@ class Censive < StringScanner
257
257
  abort "\n#{File.basename($0)}: #{msg} at character #{pos} near '#{string[pos-4,7]}'"
258
258
  end
259
259
  end
260
+
261
+ if __FILE__ == $0
262
+ str = DATA.gets("\n\n").chomp
263
+ # str = File.read(ARGV.first || "lc-2023.csv")
264
+ # str = File.open("KEN_ALL.CSV", "r:cp932").read
265
+
266
+ # require "stringio"
267
+ # csv = Censive.new(str, excel: true, relax: true)
268
+ # out = "" # StringIO.new
269
+ # csv.export(out: out) # (excel: true) # sep: "|")
270
+ # puts out # .string
271
+
272
+ # csv = Censive.new(str, excel: true, relax: true, out: "")
273
+ # out = csv.export
274
+ # puts out.out
275
+
276
+ puts Censive.parse(str, excel: true, relax: true).to_csv
277
+ end
278
+
279
+ __END__
280
+ "AAA "BBB",CCC,"DDD"
281
+
282
+ "CHUI, LOK HANG "BENNY",224325325610,="001453","Hemoglobin A1c",=""
283
+ "Don",="007",10,"Ed"
284
+ Name,Age,,,Shoe,,,
285
+ "Alice",27,5
286
+ Bob,33,10 1/2
287
+ Charlie or "Chuck",=B2 + B3,9
288
+ Subtotal,=sum(B2:B5),="01234"
289
+ A,B,C,D
290
+ A,B,"C",D
291
+ A,B,C",D
292
+ A,B,"C",D
293
+ 08/27/2022,="73859443",="04043260",,"Crossover @ Mathilda","CHO, JOELLE "JOJO"",08/19/2022
294
+ 123,
295
+ 123,"CHO, JOELLE "JOJO"",456
296
+ 123,"CHO, JOELLE ""JOJO""",456
297
+ =,=x,x=,="x",="","","=",123,0123,="123",="0123"
298
+ ,=x,x=,x,,,,,,=,,123,="0123",123,,="0123"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: censive
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.29'
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Shreeve
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-22 00:00:00.000000000 Z
11
+ date: 2023-04-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A quick and lightweight CSV handling library for Ruby
14
14
  email: steve.shreeve@gmail.com
@@ -47,7 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  requirements: []
50
- rubygems_version: 3.4.9
50
+ rubygems_version: 3.4.10
51
51
  signing_key:
52
52
  specification_version: 4
53
53
  summary: A quick and lightweight CSV handling library for Ruby