dsl_compose 2.2.2 → 2.4.0

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: 1b5f53afb63b68aac27995b0fee8dceb7c0f5649a171f187bf95c85ebe29215e
4
- data.tar.gz: 9ee378a6a342684339a0ff2472ed0aa37fb4d3a5e3e3f71f9eb9b87d5f013b37
3
+ metadata.gz: 43cfe766f3e464ba7f5a22128e7f5155806f92686555aef5f2f06af2b58916af
4
+ data.tar.gz: 999dc31a662af4684b2956a50c226aa596b345ece609d2b9ace058eea211f924
5
5
  SHA512:
6
- metadata.gz: 6f9494f1e9054d83bff8601aa6bf2c7e6fc887af2a7c3f762649d32d71116fa0c9856f1d94811df32246f7cf345eafdb06987946da9524832d2a8c9e366f4284
7
- data.tar.gz: 42f04fe0ee1e3341716a446fd3747ba7bce072d921dcb2cf62ebe3a8d4e7112336ec3b5d42cd87c56076cbbaf36f29ccfe3925f1e1f13776d4d5a38f244f1b9f
6
+ metadata.gz: 78b2add3e95f52ae184abb3d2a30f9218d966a8d44e378b72ea37c5ad2dfd6c3409f7a9cf08e4762d17cf717c2ff35c2f7da4ce5a28d8959eacbcf92c484c0db
7
+ data.tar.gz: 7d4e1550f001a40d0665c6258eff2cd16d0052f209b1c6741a3252b0623f698345d8344014555153649dd705077dda8cc39d08531bb95bd5df4611cde257c156
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.4.0](https://github.com/craigulliott/dsl_compose/compare/v2.3.0...v2.4.0) (2023-07-31)
4
+
5
+
6
+ ### Features
7
+
8
+ * access an ExecutionReader object from within a parser ([53e9c29](https://github.com/craigulliott/dsl_compose/commit/53e9c29073389217d8526c43eec67325587c45b9))
9
+
10
+ ## [2.3.0](https://github.com/craigulliott/dsl_compose/compare/v2.2.2...v2.3.0) (2023-07-28)
11
+
12
+
13
+ ### Features
14
+
15
+ * added a method_called? helper method to the DSL parser ([48e68a8](https://github.com/craigulliott/dsl_compose/commit/48e68a8d799e297d3433f3d2a6bccb7a077dd9af))
16
+
3
17
  ## [2.2.2](https://github.com/craigulliott/dsl_compose/compare/v2.2.1...v2.2.2) (2023-07-27)
4
18
 
5
19
 
data/README.md CHANGED
@@ -274,8 +274,13 @@ class MyParser < DSLCompose::Parser
274
274
  # then the requested dsl argument must be present on all DSLs otherwise an
275
275
  # error will be raised. The parser is aware of class inheritance, and will
276
276
  # consider a DSL to have been executed on the actual class it was used, and
277
- # any classes which are descendants of that class
278
- for_dsl [:dsl1, :dsl2] do |dsl_name:, a_dsl_argument:|
277
+ # any classes which are descendants of that class.
278
+ #
279
+ # You can also request an ExecutionReader object here by including the
280
+ # argument `:reader`. The resulting reader object will allow to to access the methods
281
+ # which were called within this use of your DSL. There is more documentation about
282
+ # Reader classes below.
283
+ for_dsl [:dsl1, :dsl2] do |dsl_name:, a_dsl_argument:, reader:|
279
284
  description <<-DESCRIPTION
280
285
  You can optionally provide a description of anything specific that your parser
281
286
  does in this block, this description will be used when generating documentation.
@@ -286,6 +291,12 @@ class MyParser < DSLCompose::Parser
286
291
  other than making calls to `for_method`
287
292
  DESCRIPTION
288
293
 
294
+ # Within a `for_dsl` block you can determine if a specific DSL method was used
295
+ # with the `method_called?` method. This method will return true if the method was
296
+ # used, otherwise it will return false. If a method with the provided name does not
297
+ # exist for the DSL, then an error will be raised.
298
+ was_some_method_name_used = method_called? :some_method_name
299
+
289
300
  # `for_method` accepts a method name or an array of method names and will
290
301
  # yield it's provided block once for each time a method with this name is
291
302
  # executed within the DSL.
@@ -67,9 +67,14 @@ module DSLCompose
67
67
  # us to use keyword arguments to force a naming convention on these arguments
68
68
  # and to validate their use
69
69
  args = {}
70
+ # the dsl name (if it's requested)
70
71
  if BlockArguments.accepts_argument?(:dsl_name, &block)
71
72
  args[:dsl_name] = dsl_execution.dsl.name
72
73
  end
74
+ # an ExecutionReader object to access the exections methods (if it's requested)
75
+ if BlockArguments.accepts_argument?(:reader, &block)
76
+ args[:reader] = Reader::ExecutionReader.new(dsl_execution)
77
+ end
73
78
  # add any arguments that were provided to the DSL
74
79
  dsl_execution.arguments.arguments.each do |name, value|
75
80
  if BlockArguments.accepts_argument?(name, &block)
@@ -109,6 +114,16 @@ module DSLCompose
109
114
  ForMethodParser.new(@base_class, @child_class, @dsl_execution, method_names, &block)
110
115
  end
111
116
 
117
+ # Given a method name, will return true if the method was called within the current DSL
118
+ # execution, otherwise it will return false
119
+ def method_called? method_name
120
+ # get the dsl method from the current dsl execution, this
121
+ # will raise an error if the method does not exist
122
+ dsl_method = @dsl_execution.dsl.dsl_method(method_name)
123
+ # was this method called within the current DSL execution?
124
+ @dsl_execution.method_calls.method_called? dsl_method.name
125
+ end
126
+
112
127
  # takes a description of what this parser does and stores it against the DSL definition
113
128
  # of the current @child_class, this is used to generate documentation for what the parser
114
129
  # has done with the DSL
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DSLCompose
4
- VERSION = "2.2.2"
4
+ VERSION = "2.4.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dsl_compose
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Ulliott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-27 00:00:00.000000000 Z
11
+ date: 2023-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: class_spec_helper