clir 0.22.0 → 0.23.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04a1f95d975d1d275d120e81fb1a3226e2d8ff93807ad70578e6ac1171c6d525
4
- data.tar.gz: 2f16578c4588470f8d4e5ad49971febf3a50201c6fd874b5986b65f53c85fcdb
3
+ metadata.gz: b13a530ef051d62ff909c16a29edb4ad2dbc245f51faf4b87004af0efda9cff7
4
+ data.tar.gz: 050fc8a329008aed78dbe7132071b694cb91a260069c79ddc31be57426fca2ee
5
5
  SHA512:
6
- metadata.gz: cd859cd9d54f2d689939786042943cd65a39ee476964e3d089bef9a5c9468fb3b508ad7fb335ad7e76899745ff19c172de2b302dfffd032521aecc449debd299
7
- data.tar.gz: 7d1a4acba85f7d6cb7197b6b7b98407b8c6280091a867017afc54fe4460fb43b04e138b407773c230ac7ff031e5dc60d09999030485e04aed7b80be81fd80e4f
6
+ metadata.gz: 598f8f9323881d6ce84fa4ace88eb052df61e3de32208f6260d9986132ece7de792517703c0d2af71e892f9403e7a8475d60d30aef722b983eb3183776dc2178
7
+ data.tar.gz: f34e2e3edee84775696f72ee512eca3dd4567e5f2fb578f94e1eff3943d9fed69db3244ede2d81ea9df6b420839d89818a53c59b9cba1f597eac697f56250be7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ * 0.22.1
2
+
3
+ - Rationnalisation de la méthode `CSV.foreach_backward` qui, maintenant, fonctionne plus
4
+ vite que `foreach` pour trouver un élément plus près de la fin.
5
+
1
6
  * 022.0
2
7
 
3
8
  - Extension pour la clas CSV (lecture en arrière)
data/README.md CHANGED
@@ -20,7 +20,21 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- [TODO] Reprendre toutes les méthodes
23
+ ### String extensions
24
+
25
+ > Only some of them below.
26
+
27
+ ~~~ruby
28
+ puts "Some texte in red".red
29
+
30
+ puts <<~EOT
31
+ This text is white.
32
+ #{'color follows'.yellow_} This text is also in yellow thanks
33
+ to the '_' after de color name.
34
+ EOT
35
+ ~~~
36
+
37
+
24
38
 
25
39
  ### Test state
26
40
 
data/clir.gemspec CHANGED
@@ -7,8 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.email = ["philippe.perret@yahoo.fr"]
8
8
 
9
9
  s.summary = %q{Command Line Interface for Ruby applications}
10
- s.description = %q{Command Line Interface for Ruby applications}
11
- # s.homepage = "https://github.com/PhilippePerret/clir"
10
+ s.description = %q{Command Line Interface for Ruby applications, a lot of usefull methods}
12
11
  s.homepage = "https://rubygems.org/gems/clir"
13
12
  s.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
13
 
@@ -26,6 +26,7 @@ class << self
26
26
  def readlines_backward(path, **options, &block)
27
27
 
28
28
  options ||= {}
29
+ options.key?(:col_sep) || options.merge!(col_sep: ',')
29
30
 
30
31
  file = File.new(path)
31
32
  size = File.size(file)
@@ -37,7 +38,9 @@ class << self
37
38
  #
38
39
  # Si options[:headers] est true, il faut récupérer la première
39
40
  # ligne et la transformer en entête
41
+ # @note Cet entête permettra d'instancier les rangées (\CSV::Row)
40
42
  #
43
+ headers = nil
41
44
  if options[:headers]
42
45
  begin
43
46
  fileh = File.open(path,'r')
@@ -53,13 +56,6 @@ class << self
53
56
 
54
57
  if block_given?
55
58
  #
56
- # Les options pour CSV.parse
57
- # On garde seulement les convertisseurs de données et on met
58
- # toujours headers à false (puisque c'est seulement la ligne
59
- # de données qui sera parser)
60
- #
61
- # line_csv_options = {headers:false, converters: options[:converters]}
62
- line_csv_options = options
63
59
  #
64
60
  # Avec un bloc fourni, on va lire ligne par ligne en partant
65
61
  # de la fin.
@@ -79,11 +75,6 @@ class << self
79
75
  #
80
76
  # On boucle tant qu'on n'interrompt pas (pour le moment)
81
77
  #
82
- # QUESTIONS
83
- # 1. Comment repère-t-on la fin ? En comparant la position
84
- # actuelle du pointeur avec 0 ?
85
- # 2. Comment met-on fin à la recherche (c'est presque la
86
- # même question)
87
78
  while true
88
79
  #
89
80
  # On lit la longueur du tampon en l'ajoutant à ce qu'on a
@@ -115,11 +106,41 @@ class << self
115
106
  #
116
107
  lines.each do |line|
117
108
  line = line.chomp
118
- line = "#{header}\n#{line}\n" if options[:headers]
109
+
110
+ # Je crois que c'est ça qui prend trop de temps
111
+ # line = "#{header}\n#{line}\n" if options[:headers]
119
112
  # puts "line parsée : #{line.inspect}".bleu
120
- line_csv = CSV.parse(line, **line_csv_options)
113
+ # line_csv = CSV.parse(line, **line_csv_options)
121
114
  # puts "line_csv: #{line_csv.inspect}::#{line_csv.class}".orange
122
- yield line_csv[0]
115
+ # yield line_csv[0]
116
+ #
117
+
118
+ #
119
+ # Convertir les valeurs si des convertisseurs sont
120
+ # définis
121
+ # NOTE : Pour le moment, je reste simple et un peu brut
122
+ #
123
+ values = line.split(options[:col_sep])
124
+ if options[:converters]
125
+ values = values.collect do |value|
126
+ options[:converters].each do |converter|
127
+ if converter == :numeric && value.numeric?
128
+ value = value.to_i and break
129
+ elsif converter == :date && value.match?(/[0-9]{2,4}/)
130
+ begin
131
+ value = Date.parse(value)
132
+ break
133
+ rescue nil
134
+ end
135
+ end
136
+ end
137
+ value
138
+ end
139
+ end
140
+
141
+ row = CSV::Row.new(headers, values)
142
+
143
+ yield row
123
144
  end
124
145
  end
125
146
  #
@@ -193,19 +193,33 @@ class String
193
193
  "\033[0;38m#{self}\033[0m"
194
194
  end
195
195
  alias :white :blanc
196
+ def blanc_
197
+ "\033[0;38m#{self}"
198
+ end
196
199
 
197
200
  def blanc_clair
198
201
  "\033[0;37m#{self}\033[0m"
199
202
  end
203
+ def blanc_clair_
204
+ "\033[0;37m#{self}"
205
+ end
200
206
 
201
207
  def bleu
202
208
  "\033[0;96m#{self}\033[0m"
203
209
  end
204
210
  alias :blue :bleu
211
+
212
+ def bleu_
213
+ "\033[0;96m#{self}"
214
+ end
205
215
 
206
216
  def bleu_clair
207
217
  "\033[0;36m#{self}\033[0m"
208
218
  end
219
+ def bleu_clair_
220
+ "\033[0;36m#{self}"
221
+ end
222
+
209
223
 
210
224
  def fond_bleu
211
225
  "\033[0;44m#{self}\033[0m"
@@ -219,11 +233,17 @@ class String
219
233
  "\033[0;92m#{self}\033[0m"
220
234
  end
221
235
  alias :green :vert
236
+ def vert_
237
+ "\033[0;92m#{self}"
238
+ end
222
239
 
223
240
  def vert_clair
224
241
  "\033[0;32m#{self}\033[0m"
225
242
  end
226
243
  alias :ligth_green :vert_clair
244
+ def vert_clair_
245
+ "\033[0;32m#{self}"
246
+ end
227
247
 
228
248
  def fond_vert
229
249
  "\033[0;42m#{self}\033[0m"
@@ -233,20 +253,32 @@ class String
233
253
  "\033[0;91m#{self}\033[0m"
234
254
  end
235
255
  alias :red :rouge
256
+ def rouge_
257
+ "\033[0;91m#{self}"
258
+ end
236
259
 
237
260
  def gris
238
261
  "\033[0;90m#{self}\033[0m"
239
262
  end
240
263
  alias :grey :gris
264
+ def gris_
265
+ "\033[0;90m#{self}"
266
+ end
241
267
 
242
268
  def orange
243
269
  "\033[38;5;214m#{self}\033[0m"
244
270
  end
271
+ def orange_
272
+ "\033[38;5;214m#{self}"
273
+ end
245
274
 
246
275
  def jaune
247
276
  "\033[0;93m#{self}\033[0m"
248
277
  end
249
278
  alias :yellow :jaune
279
+ def jaune_
280
+ "\033[0;93m#{self}"
281
+ end
250
282
 
251
283
  def jaune_dark
252
284
  "\033[0;33m#{self}\033[0m"
@@ -256,6 +288,9 @@ class String
256
288
  "\033[1;94m#{self}\033[0m"
257
289
  end
258
290
  alias :purple :mauve
291
+ def mauve_
292
+ "\033[1;94m#{self}"
293
+ end
259
294
 
260
295
 
261
296
  # --- Transform Methods ---
data/lib/clir/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Clir
2
- VERSION = "0.22.0"
2
+ VERSION = "0.23.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philippe Perret
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-30 00:00:00.000000000 Z
11
+ date: 2023-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- description: Command Line Interface for Ruby applications
69
+ description: Command Line Interface for Ruby applications, a lot of usefull methods
70
70
  email:
71
71
  - philippe.perret@yahoo.fr
72
72
  executables: []