evt-collection 2.4.4.0 → 2.4.4.2

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: 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