cevennes 1.4.1 → 1.5.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +30 -0
  4. data/lib/cevennes.rb +24 -4
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b3b29edbb31eb7fab04bc638ea9b9abf85ed2a0fd4563c6dc89a3e433684581
4
- data.tar.gz: 5a1345bc9079f6fff54ca054347bd05e1631a7e995c386a60ee91ffdbc81ae85
3
+ metadata.gz: 874142d4ea26d4cf12e802291ed6cce2b7563cc4c894ceafce5316448b04eb43
4
+ data.tar.gz: ac5051a4827b1af249ea9b5225464b8418ca7afc3bb7acb09c19b39e4c362e18
5
5
  SHA512:
6
- metadata.gz: 9ba5e464074b0b3e21791a4476f3fc062d9b6de49643cdee32353a1dd794343e365a6b65c9145bce73bf0ee247427309aa214ea6bf507331b4171d6a0b6e82ae
7
- data.tar.gz: 95e839e3aba7eedc8672902ec426f1752495f8a0d6890494dc5b92df75e9455e132befcc993c7fe3bb262b7bc7629a1b2373d447e9cabb019c66c9825f66449f
6
+ metadata.gz: 910c01d225504c18b7d74d34566b1449913cdb3045450840b2097ae55e1790d9501baebc5a2677200531186e3c563cb171eff3d3de78155f63428015f5787ecd
7
+ data.tar.gz: 8e0472c583b7b006e0a7aa1227f859f47d0bb4d35043307ca27bbed24cea6d5a2e1f99fa737ce75cd391f83fa2f05163b8852581a41b709a30e73918a86634c6
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
  # CHANGELOG.md
3
3
 
4
4
 
5
+ ## cevennes 1.5.0 released 2026-11-13
6
+
7
+ * Introduce `float: 'narrow'`
8
+
9
+
5
10
  ## cevennes 1.4.1 released 2026-10-20
6
11
 
7
12
  * Require colorato
data/README.md CHANGED
@@ -96,6 +96,36 @@ d = Cevennes.diff('id', cvs0, cvs1, drop_equals: true)
96
96
  # the "=" entries are not included
97
97
  ```
98
98
 
99
+ ### float: 'narrow'
100
+
101
+ Sometimes CSV exports turns numbers like `1.3` to strings like `"1.30"`. By using the `float: 'narrow'` option, Cevennes takes care to compare `1.3` with `1.3`.
102
+
103
+ ```ruby
104
+ csv0 = %{
105
+ id, name, age, city, county
106
+ 0, John, 33, Alexandria, Yorkshire
107
+ 1, Jean-Baptiste, 44.10, Galileia, Lancashire
108
+ 4, Matthew, 20, Beth, Essex
109
+ }.strip + "\n"
110
+
111
+ csv1 = %{
112
+ id, name, age, city, county
113
+ 0, John, 33.0, Alexandria, Yorkshire
114
+ 1, Jean-Baptiste, 44.1, Galileia, Lancashire
115
+ 4, Matthew, 20, Beth, Essex
116
+ }.strip + "\n"
117
+
118
+ d = Cevennes.diff('name', csv0, csv1)
119
+
120
+ pp d[1]
121
+ # => [ "stats", { "!" => 2, "=" => 1, "l0" => 3, "l1" => 3 } ]
122
+
123
+ d = Cevennes.diff('name', csv0, csv1, float: 'narrow')
124
+
125
+ pp d[1]
126
+ # => [ "stats", { "=" => 3, "l0" => 3, "l1" => 3 } ]
127
+ ```
128
+
99
129
 
100
130
  ## LICENSE
101
131
 
data/lib/cevennes.rb CHANGED
@@ -7,7 +7,7 @@ require 'colorato'
7
7
 
8
8
  module Cevennes
9
9
 
10
- VERSION = '1.4.1'
10
+ VERSION = '1.5.0'
11
11
 
12
12
  class << self
13
13
 
@@ -23,9 +23,9 @@ module Cevennes
23
23
  h0
24
24
  .collect { |k, v|
25
25
  v1 = h1[k]
26
- if v1 == nil then [ '-', *v, -1, nil ]
27
- elsif v1[1] == v[1] then [ '=', *v, v[0], nil ]
28
- else [ '!', *v, *v1 ]
26
+ if v1 == nil then [ '-', *v, -1, nil ]
27
+ elsif rowEquals(v1, v, opts) then [ '=', *v, v[0], nil ]
28
+ else [ '!', *v, *v1 ]
29
29
  end }
30
30
 
31
31
  (h1.keys - h0.keys)
@@ -141,6 +141,26 @@ module Cevennes
141
141
 
142
142
  protected
143
143
 
144
+ def rowEquals(row0, row1, opts)
145
+
146
+ row01, row11 = row0[1], row1[1]
147
+
148
+ return false if row01.length != row11.length
149
+
150
+ if opts[:float] == 'narrow'
151
+
152
+ row01.each_with_index { |c0, i| c1 = row11[i]
153
+ next if c0 == c1
154
+ cf0 = Float(c0, exception: false) || c0
155
+ cf1 = Float(c1, exception: false) || c1
156
+ return false if cf0 != cf1 }
157
+
158
+ return true
159
+ end
160
+
161
+ row01 == row11
162
+ end
163
+
144
164
  def strip(row)
145
165
 
146
166
  row.collect { |cell| cell.is_a?(String) ? cell.strip : cell }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cevennes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mettraux