xqsr3 0.37.2 → 0.38.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/xqsr3/command_line_utilities/map_option_string.rb +2 -1
- data/lib/xqsr3/containers/frequency_map.rb +10 -15
- data/lib/xqsr3/extensions/string/map_option_string.rb +9 -0
- data/lib/xqsr3/quality/parameter_checking.rb +20 -2
- data/lib/xqsr3/version.rb +2 -2
- data/test/unit/command_line_utilities/tc_map_option_string.rb +5 -0
- data/test/unit/containers/tc_frequency_map.rb +86 -18
- data/test/unit/quality/tc_parameter_checking.rb +36 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 893916b4985f2cf4aacd3880f28d9199b3137f49
|
4
|
+
data.tar.gz: d611a888f54fc3d6bee966a040530637bdfe2423
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 222348a3e0621835acbb5df342e2625eb6f6c7d355b59e9aded4e105e3acdbfe27a13cff0af939964ecde0eab65f16a5bebd8560afb71781a653c98ba981cc0b
|
7
|
+
data.tar.gz: efd82ceb69653fcc88954b3fb03267d3719e00642de1c7a2de564fe008751e0476be9625da6037af8bdcc1aecbf242ceced924f29403858a9d5a3b8eff861391
|
data/README.md
CHANGED
@@ -6,12 +6,13 @@
|
|
6
6
|
# ::Xqsr3::CommandLineUtilities::MapOptionString module
|
7
7
|
#
|
8
8
|
# Created: 15th April 2016
|
9
|
-
# Updated:
|
9
|
+
# Updated: 19th July 2022
|
10
10
|
#
|
11
11
|
# Home: http://github.com/synesissoftware/xqsr3
|
12
12
|
#
|
13
13
|
# Author: Matthew Wilson
|
14
14
|
#
|
15
|
+
# Copyright (c) 2019-2022, Matthew Wilson and Synesis Information Systems
|
15
16
|
# Copyright (c) 2016-2019, Matthew Wilson and Synesis Software
|
16
17
|
# All rights reserved.
|
17
18
|
#
|
@@ -285,9 +285,13 @@ class FrequencyMap
|
|
285
285
|
# keys must be created and sorted from which enumeration is directed
|
286
286
|
def each_by_key
|
287
287
|
|
288
|
-
@elements.
|
288
|
+
sorted_elements = @elements.sort { |a, b| a[0] <=> b[0] }
|
289
289
|
|
290
|
-
|
290
|
+
return sorted_elements.each unless block_given?
|
291
|
+
|
292
|
+
sorted_elements.each do |k, v|
|
293
|
+
|
294
|
+
yield k, v
|
291
295
|
end
|
292
296
|
end
|
293
297
|
|
@@ -298,22 +302,13 @@ class FrequencyMap
|
|
298
302
|
# and map all entries into it in order to achieve the ordering
|
299
303
|
def each_by_frequency
|
300
304
|
|
301
|
-
|
302
|
-
@elements.each do |element, frequency|
|
303
|
-
|
304
|
-
tm[frequency] = [] unless tm.has_key?(frequency)
|
305
|
+
ar = @elements.to_a.sort { |a, b| b[1] <=> a[1] }
|
305
306
|
|
306
|
-
|
307
|
-
end
|
308
|
-
|
309
|
-
keys = tm.keys.sort.reverse
|
310
|
-
keys.each do |frequency|
|
307
|
+
return ar.each unless block_given?
|
311
308
|
|
312
|
-
|
313
|
-
elements.each do |element|
|
309
|
+
ar.each do |k, v|
|
314
310
|
|
315
|
-
|
316
|
-
end
|
311
|
+
yield k, v
|
317
312
|
end
|
318
313
|
end
|
319
314
|
|
@@ -5,13 +5,14 @@
|
|
5
5
|
# Purpose: Definition of the ParameterChecking module
|
6
6
|
#
|
7
7
|
# Created: 12th February 2015
|
8
|
-
# Updated:
|
8
|
+
# Updated: 22nd July 2022
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/xqsr3
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c)
|
14
|
+
# Copyright (c) 2019-2022, Matthew Wilson and Synesis Information Systems
|
15
|
+
# Copyright (c) 2016-2019, Matthew Wilson and Synesis Software
|
15
16
|
# All rights reserved.
|
16
17
|
#
|
17
18
|
# Redistribution and use in source and binary forms, with or without
|
@@ -199,6 +200,22 @@ module ParameterChecking
|
|
199
200
|
Util_.check_parameter value, name, options, &block
|
200
201
|
end
|
201
202
|
|
203
|
+
# Specific form of the +check_parameter()+ that is used to check
|
204
|
+
# options, taking instead the hash and the key
|
205
|
+
#
|
206
|
+
# === Signature
|
207
|
+
#
|
208
|
+
# * *Parameters:*
|
209
|
+
# - +h+ (::Hash) The options hash from which the named element is to be tested. May not be +nil+
|
210
|
+
# - +name+ (::String, ::Symbol, [ ::String, ::Symbol ]) The options key name, or an array of names. May not be +nil+
|
211
|
+
# - +options+ (::Hash) options that moderate the behaviour in the same way as for +check_parameter()+ except that the +:treat_as_option+ option (with the value +true+) is merged in before calling +check_parameter()+
|
212
|
+
#
|
213
|
+
# * *Options:*
|
214
|
+
def self.check_option h, name, options = {}, &block
|
215
|
+
|
216
|
+
Util_.check_option h, name, options, &block
|
217
|
+
end
|
218
|
+
|
202
219
|
private
|
203
220
|
def Util_.check_option h, names, options = {}, &block
|
204
221
|
|
@@ -381,6 +398,7 @@ module ParameterChecking
|
|
381
398
|
# messages
|
382
399
|
|
383
400
|
messages = options[:responds_to] || []
|
401
|
+
messages = [ messages ] unless messages.respond_to? :each
|
384
402
|
|
385
403
|
warn "#{self}::check_parameter: options[:responds_to] of type #{messages.class} - should be #{::Array}" unless messages.is_a?(Array)
|
386
404
|
warn "#{self}::check_parameter: options[:responds_to] should contain only symbols or strings" if messages.is_a?(::Array) && !messages.all? { |m| ::Symbol === m || ::String === m }
|
data/lib/xqsr3/version.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Purpose: Version for Xqsr3 library
|
6
6
|
#
|
7
7
|
# Created: 3rd April 2016
|
8
|
-
# Updated: 26th
|
8
|
+
# Updated: 26th July 2022
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/xqsr3
|
11
11
|
#
|
@@ -51,7 +51,7 @@
|
|
51
51
|
module Xqsr3
|
52
52
|
|
53
53
|
# Current version of the Xqsr3 library
|
54
|
-
VERSION = '0.
|
54
|
+
VERSION = '0.38.1'
|
55
55
|
|
56
56
|
private
|
57
57
|
VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
|
@@ -35,5 +35,10 @@ class Test_Xqsr3_CommandLineUtilities_map_option_string < Test::Unit::TestCase
|
|
35
35
|
assert_nil MapOptionString.map_option_string_from_string(shortcut, option_strings)
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
def test_nil
|
40
|
+
|
41
|
+
assert_nil nil.map_option_string []
|
42
|
+
end
|
38
43
|
end
|
39
44
|
|
@@ -335,7 +335,7 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
335
335
|
assert_eql fm1, fm3
|
336
336
|
end
|
337
337
|
|
338
|
-
def
|
338
|
+
def test_each_WITH_BLOCK
|
339
339
|
|
340
340
|
fm = FrequencyMap.new
|
341
341
|
|
@@ -358,7 +358,25 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
358
358
|
assert_equal [:ghi, 2], r[2]
|
359
359
|
end
|
360
360
|
|
361
|
-
def
|
361
|
+
def test_each_WITHOUT_BLOCK
|
362
|
+
|
363
|
+
fm = FrequencyMap.new
|
364
|
+
|
365
|
+
fm << :def
|
366
|
+
fm << :abc << :abc << :abc << :abc
|
367
|
+
fm << :ghi << :ghi
|
368
|
+
|
369
|
+
r = fm.each.to_a
|
370
|
+
|
371
|
+
r.sort! { |a, b| a[0] <=> b[0] }
|
372
|
+
|
373
|
+
assert_equal 3, r.size
|
374
|
+
assert_equal [:abc, 4], r[0]
|
375
|
+
assert_equal [:def, 1], r[1]
|
376
|
+
assert_equal [:ghi, 2], r[2]
|
377
|
+
end
|
378
|
+
|
379
|
+
def test_each_by_key_WITH_BLOCK
|
362
380
|
|
363
381
|
fm = FrequencyMap.new
|
364
382
|
|
@@ -379,7 +397,23 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
379
397
|
assert_equal [:ghi, 2], r[2]
|
380
398
|
end
|
381
399
|
|
382
|
-
def
|
400
|
+
def test_each_by_key_WITHOUT_BLOCK
|
401
|
+
|
402
|
+
fm = FrequencyMap.new
|
403
|
+
|
404
|
+
fm << :def
|
405
|
+
fm << :abc << :abc << :abc << :abc
|
406
|
+
fm << :ghi << :ghi
|
407
|
+
|
408
|
+
r = fm.each_by_key.to_a
|
409
|
+
|
410
|
+
assert_equal 3, r.size
|
411
|
+
assert_equal [:abc, 4], r[0]
|
412
|
+
assert_equal [:def, 1], r[1]
|
413
|
+
assert_equal [:ghi, 2], r[2]
|
414
|
+
end
|
415
|
+
|
416
|
+
def test_each_by_frequency_WITH_BLOCK
|
383
417
|
|
384
418
|
fm = FrequencyMap.new
|
385
419
|
|
@@ -400,7 +434,23 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
400
434
|
assert_equal [:def, 1], r[2]
|
401
435
|
end
|
402
436
|
|
403
|
-
def
|
437
|
+
def test_each_by_frequency_WITHOUT_BLOCK
|
438
|
+
|
439
|
+
fm = FrequencyMap.new
|
440
|
+
|
441
|
+
fm << :def
|
442
|
+
fm << :abc << :abc << :abc << :abc
|
443
|
+
fm << :ghi << :ghi
|
444
|
+
|
445
|
+
r = fm.each_by_frequency.to_a
|
446
|
+
|
447
|
+
assert_equal 3, r.size
|
448
|
+
assert_equal [:abc, 4], r[0]
|
449
|
+
assert_equal [:ghi, 2], r[1]
|
450
|
+
assert_equal [:def, 1], r[2]
|
451
|
+
end
|
452
|
+
|
453
|
+
def test_each_value_WITH_BLOCK
|
404
454
|
|
405
455
|
fm = FrequencyMap.new
|
406
456
|
|
@@ -412,7 +462,7 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
412
462
|
|
413
463
|
fm.each_value do |v|
|
414
464
|
|
415
|
-
r <<
|
465
|
+
r << v
|
416
466
|
end
|
417
467
|
|
418
468
|
r.sort!
|
@@ -421,7 +471,7 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
421
471
|
assert_equal [1, 2, 4], r
|
422
472
|
end
|
423
473
|
|
424
|
-
def
|
474
|
+
def test_each_value_WITHOUT_BLOCK
|
425
475
|
|
426
476
|
fm = FrequencyMap.new
|
427
477
|
|
@@ -429,19 +479,37 @@ class Test_Xqsr3_Containers_FrequencyMap < Test::Unit::TestCase
|
|
429
479
|
fm << :abc << :abc << :abc << :abc
|
430
480
|
fm << :ghi << :ghi
|
431
481
|
|
432
|
-
fm.
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
482
|
+
r = fm.each_value.to_a
|
483
|
+
|
484
|
+
r.sort!
|
485
|
+
|
486
|
+
assert_equal 3, r.size
|
487
|
+
assert_equal [1, 2, 4], r
|
488
|
+
end
|
489
|
+
|
490
|
+
def test_each_with_index_WITH_BLOCK
|
491
|
+
|
492
|
+
fm = FrequencyMap.new
|
493
|
+
|
494
|
+
fm << :def
|
495
|
+
fm << :abc << :abc << :abc << :abc
|
496
|
+
fm << :ghi << :ghi
|
497
|
+
|
498
|
+
indexes = []
|
499
|
+
kvs = {}
|
500
|
+
|
501
|
+
fm.each_with_index do |kv, index|
|
502
|
+
|
503
|
+
k = kv[0]
|
504
|
+
v = kv[1]
|
505
|
+
|
506
|
+
indexes << index
|
507
|
+
|
508
|
+
kvs[k] = v
|
444
509
|
end
|
510
|
+
|
511
|
+
assert_equal [ 0, 1, 2 ], indexes
|
512
|
+
assert_equal Hash[ :abc, 4, :def, 1, :ghi, 2 ], kvs
|
445
513
|
end
|
446
514
|
|
447
515
|
def test_empty
|
@@ -7,13 +7,39 @@ require 'xqsr3/quality/parameter_checking'
|
|
7
7
|
require 'xqsr3/extensions/test/unit'
|
8
8
|
require 'test/unit'
|
9
9
|
|
10
|
+
|
11
|
+
class Test_check_option_multiple_option_names < Test::Unit::TestCase
|
12
|
+
|
13
|
+
include ::Xqsr3::Quality::ParameterChecking
|
14
|
+
|
15
|
+
def check_method_stringise_stringize **options
|
16
|
+
|
17
|
+
check_option options, [ :stringise, :stringize ], nil: true
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_1
|
21
|
+
|
22
|
+
assert_nil check_method_stringise_stringize()
|
23
|
+
|
24
|
+
assert_nil check_method_stringise_stringize(abc: :abc)
|
25
|
+
|
26
|
+
assert_equal :stringize, check_method_stringise_stringize(stringize: :stringize)
|
27
|
+
assert_equal :stringise, check_method_stringise_stringize(stringise: :stringise)
|
28
|
+
assert_equal :stringise, check_method_stringise_stringize(stringize: :stringize, stringise: :stringise)
|
29
|
+
assert_equal :stringise, check_method_stringise_stringize(stringise: :stringise, stringize: :stringize)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
10
33
|
class Test_parameter_checks_as_separate_module < Test::Unit::TestCase
|
11
34
|
|
12
35
|
PC = ::Xqsr3::Quality::ParameterChecking
|
13
36
|
|
14
37
|
# test 1
|
15
38
|
|
16
|
-
def check_method_1 a
|
39
|
+
def check_method_1 a, **options
|
40
|
+
|
41
|
+
PC.check_option options, :o1, nil: true
|
42
|
+
PC.check_option options, :o2, nil: false
|
17
43
|
|
18
44
|
PC.check_param a, 'a'
|
19
45
|
end
|
@@ -25,10 +51,10 @@ class Test_parameter_checks_as_separate_module < Test::Unit::TestCase
|
|
25
51
|
check_method_1(nil)
|
26
52
|
end
|
27
53
|
|
28
|
-
assert_equal true, check_method_1(true)
|
29
|
-
assert_equal '', check_method_1('')
|
30
|
-
assert_equal [], check_method_1([])
|
31
|
-
assert_equal Hash.new, check_method_1(Hash.new)
|
54
|
+
assert_equal true, check_method_1(true, o1: true, o2: false)
|
55
|
+
assert_equal '', check_method_1('', o1: true, o2: false)
|
56
|
+
assert_equal [], check_method_1([], o1: true, o2: false)
|
57
|
+
assert_equal Hash.new, check_method_1(Hash.new, o1: true, o2: false)
|
32
58
|
end
|
33
59
|
|
34
60
|
|
@@ -328,6 +354,11 @@ end
|
|
328
354
|
|
329
355
|
check_responds_to Hash.new, [ :this_is_not_a_Hash_method ]
|
330
356
|
end
|
357
|
+
|
358
|
+
# check can pass single types
|
359
|
+
assert check_responds_to Hash.new, :[]
|
360
|
+
assert check_responds_to Hash.new, :map
|
361
|
+
assert check_responds_to Hash.new, :to_s
|
331
362
|
end
|
332
363
|
|
333
364
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xqsr3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.38.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
eXtensions by fine Quantum for Standard Ruby and 3rd-party libraries is a
|