dsl_compose 2.15.0 → 2.15.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +1 -1
- data/lib/dsl_compose/interpreter.rb +1 -1
- data/lib/dsl_compose/parser/for_children_of_parser/{descendents.rb → descendants.rb} +18 -7
- data/lib/dsl_compose/parser/for_children_of_parser.rb +2 -2
- data/lib/dsl_compose/version.rb +1 -1
- data/lib/dsl_compose.rb +1 -1
- data/sig/dsl_compose/parser/for_children_of_parser/{descendents.rbs → descendants.rbs} +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae01b58f13f59318a89b06b444bd0dc0a17487e66d03a7701cb605673774f75a
|
4
|
+
data.tar.gz: 2feeab8f8494a6dea3ee59c52903a21c84cde2da623f406aea9530581146d124
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d1b476aef66fcaf034b3e7775a91233b69f30dc46c1dfc6d2891596ed859d0a9219e69c7bfec5ede49179d56a0fa2e59f31398b5b95504eb8ebd72c6f9a4d01
|
7
|
+
data.tar.gz: 565b63fb9b5e24f6d778e74f477b7aea4cd6619bfb39aa5ae62a9651daffd5b54e06ceaa8cef3378c111b508babe89d55d02af768c0692f24e4be9c68ad23845
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [2.15.1](https://github.com/craigulliott/dsl_compose/compare/v2.15.0...v2.15.1) (2023-10-03)
|
4
|
+
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
* sorting classes by ancestry chain (i.e. ancestors before descendants) in the parser ([4e7dd6f](https://github.com/craigulliott/dsl_compose/commit/4e7dd6fd302c50ee3147f76f59a52089fb6f39ee))
|
9
|
+
|
3
10
|
## [2.15.0](https://github.com/craigulliott/dsl_compose/compare/v2.14.3...v2.15.0) (2023-10-03)
|
4
11
|
|
5
12
|
|
data/README.md
CHANGED
@@ -371,7 +371,7 @@ In addition to parser classes (or as a useful tool within parser classes) you ca
|
|
371
371
|
# simple API to access the arguments, methods and method arguments which
|
372
372
|
# were provided when using a DSL.
|
373
373
|
#
|
374
|
-
# In the example below, MyClass is a class, or
|
374
|
+
# In the example below, MyClass is a class, or descendant of a class which
|
375
375
|
# had a DSL defined on it with the name :my_dsl.
|
376
376
|
#
|
377
377
|
# An error will be raised if a DSL with the provided name was never defined
|
@@ -82,7 +82,7 @@ module DSLCompose
|
|
82
82
|
def get_last_dsl_execution klass, dsl_name
|
83
83
|
# note that this method does not need to do any special sorting, the required
|
84
84
|
# order for getting the most recent execution is already guaranteed because
|
85
|
-
# parent classes in ruby always have to be evaluated before their
|
85
|
+
# parent classes in ruby always have to be evaluated before their descendants
|
86
86
|
class_dsl_executions(klass, dsl_name, true, true).last
|
87
87
|
end
|
88
88
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module DSLCompose
|
4
4
|
class Parser
|
5
5
|
class ForChildrenOfParser
|
6
|
-
class
|
6
|
+
class Descendants
|
7
7
|
def initialize base_class, final_children_only, skip_classes = []
|
8
8
|
@base_class = base_class
|
9
9
|
@final_children_only = final_children_only
|
@@ -14,10 +14,21 @@ module DSLCompose
|
|
14
14
|
# all objects which extend the provided base class
|
15
15
|
extending_classes = subclasses @base_class
|
16
16
|
|
17
|
-
# sort the results
|
18
|
-
#
|
17
|
+
# sort the results
|
18
|
+
#
|
19
|
+
# classes are ordered first by name
|
19
20
|
extending_classes.sort_by! do |child_class|
|
20
|
-
"#{child_class.name.split("::").count}_#{
|
21
|
+
"#{child_class.name.split("::").count}_#{has_descendants(child_class) ? 0 : 1}_#{child_class.name}"
|
22
|
+
end
|
23
|
+
# then by ansestory chain (i.e. ancestors before descendants)
|
24
|
+
extending_classes.sort do |a, b|
|
25
|
+
if a < b
|
26
|
+
1
|
27
|
+
elsif a > b
|
28
|
+
-1
|
29
|
+
else
|
30
|
+
0
|
31
|
+
end
|
21
32
|
end
|
22
33
|
|
23
34
|
# reject any classes which we are skipping
|
@@ -27,9 +38,9 @@ module DSLCompose
|
|
27
38
|
|
28
39
|
# if this is not a final child, but we are processing final children only, then skip it
|
29
40
|
if @final_children_only
|
30
|
-
# reject any classes which have
|
41
|
+
# reject any classes which have descendants
|
31
42
|
extending_classes.reject! do |child_class|
|
32
|
-
|
43
|
+
has_descendants child_class
|
33
44
|
end
|
34
45
|
end
|
35
46
|
|
@@ -45,7 +56,7 @@ module DSLCompose
|
|
45
56
|
}.flatten
|
46
57
|
end
|
47
58
|
|
48
|
-
def
|
59
|
+
def has_descendants base_class
|
49
60
|
base_class.subclasses.count { |subclass| class_is_still_defined? subclass } > 0
|
50
61
|
end
|
51
62
|
|
@@ -56,8 +56,8 @@ module DSLCompose
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
# yeild the block for all
|
60
|
-
|
59
|
+
# yeild the block for all descendants of the provided base_class
|
60
|
+
Descendants.new(base_class, final_children_only, skip_classes).classes.each do |child_class|
|
61
61
|
# determine which arguments to send to the block
|
62
62
|
args = {}
|
63
63
|
if BlockArguments.accepts_argument?(:child_class, &block)
|
data/lib/dsl_compose/version.rb
CHANGED
data/lib/dsl_compose.rb
CHANGED
@@ -42,7 +42,7 @@ require "dsl_compose/interpreter"
|
|
42
42
|
|
43
43
|
require "dsl_compose/parser/for_children_of_parser/for_dsl_parser/for_method_parser"
|
44
44
|
require "dsl_compose/parser/for_children_of_parser/for_dsl_parser"
|
45
|
-
require "dsl_compose/parser/for_children_of_parser/
|
45
|
+
require "dsl_compose/parser/for_children_of_parser/descendants"
|
46
46
|
require "dsl_compose/parser/for_children_of_parser"
|
47
47
|
require "dsl_compose/parser/block_arguments"
|
48
48
|
require "dsl_compose/parser"
|
@@ -2,7 +2,7 @@
|
|
2
2
|
module DSLCompose
|
3
3
|
class Parser
|
4
4
|
class ForChildrenOfParser
|
5
|
-
class
|
5
|
+
class Descendants
|
6
6
|
@base_class: singleton(Object)
|
7
7
|
@skip_classes: Array[String]
|
8
8
|
@final_children_only: bool
|
@@ -11,7 +11,7 @@ module DSLCompose
|
|
11
11
|
def classes: -> Array[singleton(Object)]
|
12
12
|
|
13
13
|
private
|
14
|
-
def
|
14
|
+
def has_descendants: (singleton(Object) base_class) -> bool
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dsl_compose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.15.
|
4
|
+
version: 2.15.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Ulliott
|
@@ -70,7 +70,7 @@ files:
|
|
70
70
|
- lib/dsl_compose/parser.rb
|
71
71
|
- lib/dsl_compose/parser/block_arguments.rb
|
72
72
|
- lib/dsl_compose/parser/for_children_of_parser.rb
|
73
|
-
- lib/dsl_compose/parser/for_children_of_parser/
|
73
|
+
- lib/dsl_compose/parser/for_children_of_parser/descendants.rb
|
74
74
|
- lib/dsl_compose/parser/for_children_of_parser/for_dsl_parser.rb
|
75
75
|
- lib/dsl_compose/parser/for_children_of_parser/for_dsl_parser/for_method_parser.rb
|
76
76
|
- lib/dsl_compose/reader.rb
|
@@ -112,7 +112,7 @@ files:
|
|
112
112
|
- sig/dsl_compose/parser.rbs
|
113
113
|
- sig/dsl_compose/parser/block_arguments.rbs
|
114
114
|
- sig/dsl_compose/parser/for_children_of_parser.rbs
|
115
|
-
- sig/dsl_compose/parser/for_children_of_parser/
|
115
|
+
- sig/dsl_compose/parser/for_children_of_parser/descendants.rbs
|
116
116
|
- sig/dsl_compose/parser/for_children_of_parser/for_dsl_parser.rbs
|
117
117
|
- sig/dsl_compose/parser/for_children_of_parser/for_dsl_parser/for_method_parser.rbs
|
118
118
|
- sig/dsl_compose/reader.rbs
|