evt-collection 2.4.4.0 → 2.4.4.2

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: 699f42d6306d91f0390b798ca859f6d68ee1df6eb6641dc78dfef84f2db0006b
4
- data.tar.gz: 3d3c3853ae0b9e7a96d537e6406f4e4c780c6e62e03813c420d657b111e8e62b
3
+ metadata.gz: c3c0236190e801658ae9b8caa4a44afecfd165c210d217babfa19fb7a5c6e5bb
4
+ data.tar.gz: 802cdca0655f52a893d0dda1b7f104b1e033f8d7995a31da2476a4670a417caa
5
5
  SHA512:
6
- metadata.gz: '0697d5d3bdc8b40f263b68907d7b75ac7ceaf1f236bed99fb9c4b44424b8aafd51d8d2df695748676a62f7e281f9525b60f0cc18d19e4dc5a03f4615fed8c54e'
7
- data.tar.gz: 9a959a04cc0421afaea92c179ac087411855438792906bfccd632fa5084908478abd6e075dfc2edffdbea3ddcaae9c510126f7771b264708c4aca391ca474095
6
+ metadata.gz: b1e114ebb8e32ca1a94ecbec0784df572e6a06bcf19bfd7cc04cd57e6efa6e4d421dbb41d48c763a9355f721a57dfd23cea8ffc8540b703ee715026a4787f001
7
+ data.tar.gz: 55e475ec4fda87a9c239e3dce4b47bd77a88b3cb39a8208378c9d1b8538ce949a5e604877ea09b96290eb916a1ec980870c2f113779ec95684926027200125a0
@@ -2,12 +2,13 @@ module Collection
2
2
  class Array
3
3
  include Collection
4
4
 
5
- def content
6
- @content ||= ::Array.new
5
+ def items
6
+ @items ||= ::Array.new
7
7
  end
8
+ alias :content :items
8
9
 
9
10
  def last
10
- content.last
11
+ items.last
11
12
  end
12
13
 
13
14
  def length
@@ -15,47 +15,55 @@ module Collection
15
15
  raise ArgumentError, "#{val.inspect} must be a #{type_parameter.name}"
16
16
  end
17
17
 
18
- content << val
18
+ items << val
19
19
 
20
20
  self
21
21
  end
22
22
  alias :<< :add
23
23
 
24
24
  def each(&action)
25
- content.each(&action)
25
+ items.each(&action)
26
26
  end
27
27
 
28
28
  def empty?
29
- content.empty?
29
+ items.empty?
30
30
  end
31
31
 
32
32
  def clear
33
- content.clear
33
+ items.clear
34
34
  self
35
35
  end
36
36
 
37
37
  def ==(other)
38
- other.class == self.class && other.type_parameter == self.type_parameter && other.content == self.content
38
+ other.class == self.class && other.type_parameter == self.type_parameter && other.items == self.items
39
39
  end
40
40
  alias :eql? :==
41
41
 
42
- def self.Set(items)
42
+ def self.Set(items, &implementation)
43
43
  items = Kernel::Array(items)
44
44
 
45
45
  raise ArgumentError, "Collection can't be empty" if items.empty?
46
46
 
47
47
  type_parameter = items[0].class
48
48
 
49
- Set[type_parameter].build(items)
49
+ cls = Set[type_parameter, &implementation]
50
+
51
+ collection = cls.build(items)
52
+
53
+ collection
50
54
  end
51
55
 
52
- def self.Array(items)
56
+ def self.Array(items, &implementation)
53
57
  items = Kernel::Array(items)
54
58
 
55
59
  raise ArgumentError, "Collection can't be empty" if items.empty?
56
60
 
57
61
  type_parameter = items[0].class
58
62
 
59
- Array[type_parameter].build(items)
63
+ cls = Array[type_parameter, &implementation]
64
+
65
+ collection = cls.build(items)
66
+
67
+ collection
60
68
  end
61
69
  end
@@ -2,18 +2,30 @@ module Collection
2
2
  module Controls
3
3
  module Array
4
4
  def self.example
5
- [Member.new, Member.new]
5
+ [member_class.new, member_class.new]
6
6
  end
7
7
 
8
- class Member
8
+ def self.member_class
9
+ Class.example
9
10
  end
10
11
 
11
- module Anomaly
12
- def self.example
13
- [Array::Member.new, Member.new]
12
+ module RandomMemberClass
13
+ def self.example(homogeneous_classes: nil)
14
+ homogeneous_classes ||= false
15
+
16
+ if homogeneous_classes
17
+ cls_1 = member_class
18
+ cls_2 = cls_1
19
+ else
20
+ cls_1 = member_class
21
+ cls_2 = member_class
22
+ end
23
+
24
+ [cls_1.new, cls_2.new]
14
25
  end
15
26
 
16
- class Member
27
+ def self.member_class
28
+ Class::Random.example
17
29
  end
18
30
  end
19
31
  end
@@ -0,0 +1,37 @@
1
+ module Collection
2
+ module Controls
3
+ module Class
4
+ def self.example
5
+ Example
6
+ end
7
+
8
+ Example = ::Class.new
9
+
10
+ module Random
11
+ def self.example(root: nil)
12
+ root ||= false
13
+
14
+ class_name = "Class#{SecureRandom.hex(2).upcase}"
15
+
16
+ namespace = namespace(root)
17
+
18
+ namespace.const_set(class_name, ::Class.new)
19
+ end
20
+
21
+ def self.namespace(root)
22
+ if root
23
+ Object
24
+ else
25
+ Collection::Controls::Class
26
+ end
27
+ end
28
+ end
29
+
30
+ module Root
31
+ def self.example
32
+ Random.example(root: true)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,2 +1,2 @@
1
- require 'collection/controls/member'
1
+ require 'collection/controls/class'
2
2
  require 'collection/controls/array'
@@ -3,15 +3,11 @@ module Collection
3
3
  def [](type_parameter, &implementation)
4
4
  type_parameter_name = constant_name(type_parameter)
5
5
 
6
- cls = nil
7
- unless self.const_defined?(type_parameter_name, false)
8
- cls = define_class(type_parameter, &implementation)
9
- set_collection_constant(type_parameter, cls)
6
+ if implementation.nil? && self.const_defined?(type_parameter_name, false)
7
+ return const_get(type_parameter_name)
10
8
  else
11
- cls = const_get(type_parameter_name)
9
+ return define_class(type_parameter, &implementation)
12
10
  end
13
-
14
- cls
15
11
  end
16
12
 
17
13
  def define_class(type_parameter, &implementation)
@@ -37,23 +33,29 @@ module Collection
37
33
  cls.class_exec(&implementation)
38
34
  end
39
35
 
40
- set_collection_constant(type_parameter, cls)
36
+ randomize = !implementation.nil?
37
+ set_collection_constant(type_parameter, cls, randomize)
41
38
 
42
39
  cls
43
40
  end
44
41
 
45
- def constant_name(constant)
46
- constant.name.gsub('::', '_')
47
- end
42
+ def set_collection_constant(constant, cls, randomize=nil)
43
+ randomize ||= false
48
44
 
49
- def set_collection_constant(constant, cls)
50
- class_name = constant_name(constant)
45
+ constant_name = constant_name(constant)
51
46
 
52
- unless self.const_defined?(class_name, false)
53
- self.const_set(class_name, cls)
47
+ if randomize
48
+ suffix = SecureRandom.hex.upcase
49
+ constant_name = "#{constant_name}_#{suffix}"
54
50
  end
55
51
 
56
- class_name
52
+ self.const_set(constant_name, cls)
53
+
54
+ constant_name
55
+ end
56
+
57
+ def constant_name(constant)
58
+ constant.name.gsub('::', '_')
57
59
  end
58
60
  end
59
61
  end
@@ -2,12 +2,13 @@ module Collection
2
2
  class Set
3
3
  include Collection
4
4
 
5
- def content
6
- @content ||= ::Set.new
5
+ def items
6
+ @items ||= ::Set.new
7
7
  end
8
+ alias :content :items
8
9
 
9
10
  def last
10
- content.to_a.last
11
+ items.to_a.last
11
12
  end
12
13
 
13
14
  def length
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-collection
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4.0
4
+ version: 2.4.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-23 00:00:00.000000000 Z
11
+ date: 2024-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test_bench
@@ -35,7 +35,7 @@ files:
35
35
  - lib/collection/collection.rb
36
36
  - lib/collection/controls.rb
37
37
  - lib/collection/controls/array.rb
38
- - lib/collection/controls/member.rb
38
+ - lib/collection/controls/class.rb
39
39
  - lib/collection/generic.rb
40
40
  - lib/collection/set.rb
41
41
  homepage: https://github.com/eventide-project/collection
@@ -57,8 +57,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
57
  - !ruby/object:Gem::Version
58
58
  version: '0'
59
59
  requirements: []
60
- rubygems_version: 3.4.6
60
+ rubygems_version: 3.5.3
61
61
  signing_key:
62
62
  specification_version: 4
63
- summary: Type-checked set
63
+ summary: Type-checked set and array
64
64
  test_files: []
@@ -1,23 +0,0 @@
1
- module Collection
2
- module Controls
3
- module Member
4
- def self.example
5
- example_class.new
6
- end
7
-
8
- def self.example_class
9
- Member
10
- end
11
-
12
- class Member
13
- end
14
-
15
- module Root
16
- def self.example
17
- root_class_name = "Class#{SecureRandom.hex(2).upcase}"
18
- Object.const_set(root_class_name, Class.new)
19
- end
20
- end
21
- end
22
- end
23
- end