clir 0.22.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
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: []