oslg 0.2.8 → 0.2.9

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/lib/oslg/oslog.rb +114 -78
  3. data/lib/oslg/version.rb +1 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56637f835e16299c31183815be32900cc972e6b15f1a68368af56d27d5b5aaaa
4
- data.tar.gz: 3fe4cc6657e348b5b8f0d8307b93e72e1a91336baef903597ac020435c250048
3
+ metadata.gz: f6af1c266df1a21c24e1f810ae3a13ea4b8cee514ef522860f67c94e0108faca
4
+ data.tar.gz: ecc6bdccad1d9e3de77eb27f17e9d63b82aa290f982dd3a525f786de576341d3
5
5
  SHA512:
6
- metadata.gz: cc8332dca2148f53bda258a5f2ac302a6f9e2a2e63392c64776afedda9a3c4484e4c3ad5bf815b8d27356b3be4e568049b95cf13e903b1d0565ff9d40f46bbf5
7
- data.tar.gz: 8bd64e2988531d00e8e15443bebecc38317aaa9d2a90fbe764efe105726ca539050832b9dd3a37536eae41c30cb8727ad0d9c9a8ab4f77679c814d66c55c91e2
6
+ metadata.gz: 107bf656388646393a97f60a3a49ddaf3f23764c4f8f91445d131813ec33c53c699a7f25f2e6f90058f23faa93eeb1d5abdeb48f6260ae36f99402a4ab91b4cd
7
+ data.tar.gz: 5a4bd5a3de4d1d0e96c274e31c63cdee2fec3adc470c88881225ebc475d8b91362585766197dd37110565f7480792bfd2523423bba6847158e2c16ad54bb5e05
data/lib/oslg/oslog.rb CHANGED
@@ -29,14 +29,35 @@
29
29
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
 
31
31
  module OSlg
32
- DEBUG = 1 # e.g. for debugging e.g. "argument String? expecting Integer"
33
- INFO = 2 # e.g. informative e.g. "success! no errors, no warnings"
34
- WARN = 3 # e.g. warnings e.g. "partial success, see non-fatal warnings"
35
- ERROR = 4 # e.g. erros e.g. "partial success, see non-fatal errors"
36
- FATAL = 5 # e.g. failures e.g. "stopping! encountered fatal errors"
32
+ DEBUG = 1 # e.g. for debugging e.g. "argument String? expecting Integer"
33
+ INFO = 2 # e.g. informative e.g. "success! no errors, no warnings"
34
+ WARN = 3 # e.g. warnings e.g. "partial success, see non-fatal warnings"
35
+ ERROR = 4 # e.g. erros e.g. "partial success, see non-fatal errors"
36
+ FATAL = 5 # e.g. failures e.g. "stopping! encountered fatal errors"
37
37
 
38
38
  # each log is a Hash with keys :level (Integer) and :message (String)
39
- @@logs = []
39
+ @@logs = []
40
+
41
+ # preset strings matching log levels
42
+ @@tag = [
43
+ "", # (empty string)
44
+ "DEBUG", # DEBUG
45
+ "INFO", # INFO
46
+ "WARNING", # WARNING
47
+ "ERROR", # ERROR
48
+ "FATAL" # FATAL
49
+ ].freeze
50
+
51
+ # preset strings matching log status
52
+ @@msg = [
53
+ "", # (empty string)
54
+ "Debugging ...", # DEBUG
55
+ "Success! No errors, no warnings", # INFO
56
+ "Partial success, raised non-fatal warnings", # WARNING
57
+ "Partial success, encountered non-fatal errors", # ERROR
58
+ "Failure, triggered fatal errors" # FATAL
59
+ ].freeze
60
+
40
61
  @@level = INFO # initial log level
41
62
  @@status = 0 # initial status
42
63
 
@@ -51,7 +72,7 @@ module OSlg
51
72
  ##
52
73
  # Returns current log level.
53
74
  #
54
- # @return [Integer] DEBUG, INFO, WARN, ERROR or FATAL
75
+ # @return [DEBUG, INFO, WARN, ERROR, FATAL] log level
55
76
  def level
56
77
  @@level
57
78
  end
@@ -59,7 +80,7 @@ module OSlg
59
80
  ##
60
81
  # Returns current log status.
61
82
  #
62
- # @return [Integer] DEBUG, INFO, WARN, ERROR or FATAL
83
+ # @return [0, DEBUG, INFO, WARN, ERROR, FATAL] log status
63
84
  def status
64
85
  @@status
65
86
  end
@@ -67,7 +88,7 @@ module OSlg
67
88
  ##
68
89
  # Returns whether current status is DEBUG.
69
90
  #
70
- # @return [Bool] true if DEBUG
91
+ # @return [Bool] whether current log status is DEBUG
71
92
  def debug?
72
93
  @@status == DEBUG
73
94
  end
@@ -75,7 +96,7 @@ module OSlg
75
96
  ##
76
97
  # Returns whether current status is INFO.
77
98
  #
78
- # @return [Bool] true if INFO
99
+ # @return [Bool] whether current log status is INFO
79
100
  def info?
80
101
  @@status == INFO
81
102
  end
@@ -83,7 +104,7 @@ module OSlg
83
104
  ##
84
105
  # Returns whether current status is WARN.
85
106
  #
86
- # @return [Bool] true if WARN
107
+ # @return [Bool] whether current log status is WARN
87
108
  def warn?
88
109
  @@status == WARN
89
110
  end
@@ -91,7 +112,7 @@ module OSlg
91
112
  ##
92
113
  # Returns whether current status is ERROR.
93
114
  #
94
- # @return [Bool] true if ERROR
115
+ # @return [Bool] whether current log status is ERROR
95
116
  def error?
96
117
  @@status == ERROR
97
118
  end
@@ -99,17 +120,68 @@ module OSlg
99
120
  ##
100
121
  # Returns whether current status is FATAL.
101
122
  #
102
- # @return [Bool] true if FATAL
123
+ # @return [Bool] whether current log status is FATAL
103
124
  def fatal?
104
125
  @@status == FATAL
105
126
  end
106
127
 
128
+ ##
129
+ # Returns preset OSlg string that matches log level.
130
+ #
131
+ # @param lvl [#to_i] 0, DEBUG, INFO, WARN, ERROR or FATAL
132
+ #
133
+ # @return [String] preset OSlg tag (see @@tag)
134
+ def tag(lvl)
135
+ return "" unless lvl.respond_to?(:to_i)
136
+
137
+ lvl = lvl.to_i
138
+ return "" if lvl < DEBUG
139
+ return "" if lvl > FATAL
140
+
141
+ @@tag[lvl]
142
+
143
+ end
144
+
145
+ ##
146
+ # Returns preset OSlg message that matches log status.
147
+ #
148
+ # @param stat [Integer] 0, DEBUG, INFO, WARN, ERROR or FATAL
149
+ #
150
+ # @return [String] preset OSlg message (see @@msg)
151
+ def msg(stat)
152
+ return "" unless stat.respond_to?(:to_i)
153
+
154
+ stat = stat.to_i
155
+ return "" if stat < DEBUG
156
+ return "" if stat > FATAL
157
+
158
+ @@msg[stat]
159
+ end
160
+
161
+ ##
162
+ # Converts object to String and trims if necessary.
163
+ #
164
+ # @param txt [#to_s] a stringable object
165
+ # @param length [#to_i] maximum return string length
166
+ #
167
+ # @return [String] a trimmed message string (empty unless stringable)
168
+ def trim(txt = "", length = 60)
169
+ length = 60 unless length.respond_to?(:to_i)
170
+ length = length.to_i if length.respond_to?(:to_i)
171
+ return "" unless txt.respond_to?(:to_s)
172
+
173
+ txt = txt.to_s.strip
174
+ txt = txt[0...length] + " ..." if txt.length > length
175
+
176
+ txt
177
+ end
178
+
107
179
  ##
108
180
  # Resets level, if lvl (input) is within accepted range.
109
181
  #
110
182
  # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL
111
183
  #
112
- # @return [Integer] updated/current level
184
+ # @return [DEBUG, INFO, WARN, ERROR, FATAL] updated/current level
113
185
  def reset(lvl = DEBUG)
114
186
  return @@level unless lvl.respond_to?(:to_i)
115
187
 
@@ -129,13 +201,13 @@ module OSlg
129
201
  # @example A user warning
130
202
  # log(WARN, "Surface area < 100cm2")
131
203
  #
132
- # @return [Integer] updated/current status
204
+ # @return [DEBUG, INFO, WARN, ERROR, FATAL] updated/current status
133
205
  def log(lvl = DEBUG, message = "")
134
206
  return @@status unless lvl.respond_to?(:to_i)
135
207
  return @@status unless message.respond_to?(:to_s)
136
208
 
137
209
  lvl = lvl.to_i
138
- message = message.to_s.strip
210
+ message = message.to_s
139
211
  return @@status if lvl < DEBUG
140
212
  return @@status if lvl > FATAL
141
213
  return @@status if lvl < @@level
@@ -152,7 +224,7 @@ module OSlg
152
224
  # @param id [#to_s] 'invalid object' identifier
153
225
  # @param mth [#to_s] calling method identifier
154
226
  # @param ord [#to_i] calling method argument order number of obj (optional)
155
- # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL
227
+ # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL (optional)
156
228
  # @param res what to return (optional)
157
229
  #
158
230
  # @example An invalid argument, logging a FATAL error, returning FALSE
@@ -166,23 +238,18 @@ module OSlg
166
238
  return res unless ord.respond_to?(:to_i)
167
239
  return res unless lvl.respond_to?(:to_i)
168
240
 
169
- id = id.to_s.strip
170
- mth = mth.to_s.strip
171
241
  ord = ord.to_i
172
242
  lvl = lvl.to_i
173
-
174
- id = id[0...60] + " ..." if id.length > 60
243
+ id = trim(id)
244
+ mth = trim(mth)
175
245
  return res if id.empty?
176
-
177
- mth = mth[0...60] + " ..." if mth.length > 60
178
246
  return res if mth.empty?
247
+ return res if lvl < DEBUG
248
+ return res if lvl > FATAL
179
249
 
180
250
  msg = "Invalid '#{id}' "
181
251
  msg += "arg ##{ord} " if ord > 0
182
252
  msg += "(#{mth})"
183
- return res if lvl < DEBUG
184
- return res if lvl > FATAL
185
-
186
253
  log(lvl, msg)
187
254
 
188
255
  res
@@ -197,7 +264,7 @@ module OSlg
197
264
  # @param obj the object to validate
198
265
  # @param cl [Class] target class
199
266
  # @param mth [#to_s] calling method identifier (optional)
200
- # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL
267
+ # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL (optional)
201
268
  # @param res what to return (optional)
202
269
  #
203
270
  # @example A mismatched argument instance/class
@@ -207,26 +274,20 @@ module OSlg
207
274
  # @return [nil] if user hasn't provided an object to return
208
275
  def mismatch(id = "", obj = nil, cl = nil, mth = "", lvl = DEBUG, res = nil)
209
276
  return res unless id.respond_to?(:to_s)
277
+ return res unless mth.respond_to?(:to_s)
210
278
  return res unless cl.is_a?(Class)
211
279
  return res if obj.is_a?(cl)
212
- return res unless mth.respond_to?(:to_s)
213
280
  return res unless lvl.respond_to?(:to_i)
214
281
 
215
- id = id.to_s.strip
216
- mth = mth.to_s.strip
217
282
  lvl = lvl.to_i
218
-
219
- id = id[0...60] + " ..." if id.length > 60
283
+ id = trim(id)
284
+ mth = trim(mth)
220
285
  return res if id.empty?
221
-
222
- mth = mth[0...60] + " ..." if mth.length > 60
223
286
  return res if mth.empty?
224
-
225
- msg = "'#{id}' #{obj.class}? expecting #{cl} (#{mth})"
226
287
  return res if lvl < DEBUG
227
288
  return res if lvl > FATAL
228
289
 
229
- log(lvl, msg)
290
+ log(lvl, "'#{id}' #{obj.class}? expecting #{cl} (#{mth})")
230
291
 
231
292
  res
232
293
  end
@@ -239,7 +300,7 @@ module OSlg
239
300
  # @param hsh [Hash] hash to validate
240
301
  # @param key missing key
241
302
  # @param mth [#to_s] calling method identifier
242
- # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL
303
+ # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL (optional)
243
304
  # @param res what to return (optional)
244
305
  #
245
306
  # @example A missing Hash key
@@ -254,21 +315,15 @@ module OSlg
254
315
  return res unless mth.respond_to?(:to_s)
255
316
  return res unless lvl.respond_to?(:to_i)
256
317
 
257
- id = id.to_s.strip
258
- mth = mth.to_s.strip
259
318
  lvl = lvl.to_i
260
-
261
- id = id[0...60] + " ..." if id.length > 60
319
+ id = trim(id)
320
+ mth = trim(mth)
262
321
  return res if id.empty?
263
-
264
- mth = mth[0...60] + " ..." if mth.length > 60
265
322
  return res if mth.empty?
266
-
267
- msg = "Missing '#{key}' key in '#{id}' Hash (#{mth})"
268
323
  return res if lvl < DEBUG
269
324
  return res if lvl > FATAL
270
325
 
271
- log(lvl, msg)
326
+ log(lvl, "Missing '#{key}' key in '#{id}' Hash (#{mth})")
272
327
 
273
328
  res
274
329
  end
@@ -278,7 +333,7 @@ module OSlg
278
333
  #
279
334
  # @param id [#to_s] empty object identifier
280
335
  # @param mth [#to_s] calling method identifier
281
- # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL
336
+ # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL (optional)
282
337
  # @param res what to return (optional)
283
338
  #
284
339
  # @example An uninitialized variable, logging an ERROR, returning FALSE
@@ -291,21 +346,15 @@ module OSlg
291
346
  return res unless mth.respond_to?(:to_s)
292
347
  return res unless lvl.respond_to?(:to_i)
293
348
 
294
- id = id.to_s.strip
295
- mth = mth.to_s.strip
296
349
  lvl = lvl.to_i
297
-
298
- id = id[0...60] + " ..." if id.length > 60
350
+ id = trim(id)
351
+ mth = trim(mth)
299
352
  return res if id.empty?
300
-
301
- mth = mth[0...60] + " ..." if mth.length > 60
302
353
  return res if mth.empty?
303
-
304
- msg = "Empty '#{id}' (#{mth})"
305
354
  return res if lvl < DEBUG
306
355
  return res if lvl > FATAL
307
356
 
308
- log(lvl, msg)
357
+ log(lvl, "Empty '#{id}' (#{mth})")
309
358
 
310
359
  res
311
360
  end
@@ -315,7 +364,7 @@ module OSlg
315
364
  #
316
365
  # @param id [#to_s] zero object identifier
317
366
  # @param mth [#to_s] calling method identifier
318
- # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL
367
+ # @param lvl [#to_i] DEBUG, INFO, WARN, ERROR or FATAL (optional)
319
368
  # @param res what to return (optional)
320
369
  #
321
370
  # @example A near-zero variable
@@ -328,22 +377,16 @@ module OSlg
328
377
  return res unless mth.respond_to?(:to_s)
329
378
  return res unless lvl.respond_to?(:to_i)
330
379
 
331
- id = id.to_s.strip
332
- mth = mth.to_s.strip
333
380
  ord = ord.to_i
334
381
  lvl = lvl.to_i
335
-
336
- id = id[0...60] + " ..." if id.length > 60
382
+ id = trim(id)
383
+ mth = trim(mth)
337
384
  return res if id.empty?
338
-
339
- mth = mth[0...60] + " ..." if mth.length > 60
340
385
  return res if mth.empty?
341
-
342
- msg = "Zero '#{id}' (#{mth})"
343
386
  return res if lvl < DEBUG
344
387
  return res if lvl > FATAL
345
388
 
346
- log(lvl, msg)
389
+ log(lvl, "Zero '#{id}' (#{mth})")
347
390
 
348
391
  res
349
392
  end
@@ -366,22 +409,15 @@ module OSlg
366
409
  return res unless mth.respond_to?(:to_s)
367
410
  return res unless lvl.respond_to?(:to_i)
368
411
 
369
- id = id.to_s.strip
370
- mth = mth.to_s.strip
371
- ord = ord.to_i
372
412
  lvl = lvl.to_i
373
-
374
- id = id[0...60] + " ..." if id.length > 60
413
+ id = trim(id)
414
+ mth = trim(mth)
375
415
  return res if id.empty?
376
-
377
- mth = mth[0...60] + " ..." if mth.length > 60
378
416
  return res if mth.empty?
379
-
380
- msg = "Negative '#{id}' (#{mth})"
381
417
  return res if lvl < DEBUG
382
418
  return res if lvl > FATAL
383
419
 
384
- log(lvl, msg)
420
+ log(lvl, "Negative '#{id}' (#{mth})")
385
421
 
386
422
  res
387
423
  end
@@ -389,7 +425,7 @@ module OSlg
389
425
  ##
390
426
  # Resets log status and entries.
391
427
  #
392
- # @return [Integer] current level
428
+ # @return [Integer] current log level
393
429
  def clean!
394
430
  @@status = 0
395
431
  @@logs = []
data/lib/oslg/version.rb CHANGED
@@ -29,5 +29,5 @@
29
29
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
 
31
31
  module OSlg
32
- VERSION = "0.2.8".freeze # OSlg version
32
+ VERSION = "0.2.9".freeze # OSlg version
33
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oslg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Bourgeois
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-17 00:00:00.000000000 Z
11
+ date: 2023-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,7 +76,7 @@ licenses:
76
76
  - BSD-3-Clause
77
77
  metadata:
78
78
  homepage_uri: https://github.com/rd2/oslg
79
- source_code_uri: https://github.com/rd2/oslg/tree/v0.2.8
79
+ source_code_uri: https://github.com/rd2/oslg/tree/v0.2.9
80
80
  bug_tracker_uri: https://github.com/rd2/oslg/issues
81
81
  post_install_message:
82
82
  rdoc_options: []