xqsr3 0.37.2 → 0.38.1
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 +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
         |