dsl_compose 2.2.1 → 2.3.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: dc5d05054343d31af8700ec10104ef0040615583c026d5588354888092670e63
4
- data.tar.gz: a211ab077787f947eb2337a727c516e600903b6ec5dd4dc4650d3cb16aa264bc
3
+ metadata.gz: 4fab8958e567edd7044bfef529f74c21930c7c1fba06bfd359d905249fc2d17c
4
+ data.tar.gz: a167ad2aaaf44b226b2884ee0f4d6447444ebe0629453ca5f288430c5198e683
5
5
  SHA512:
6
- metadata.gz: 438b429f3fd729f655b474c9d23a4224e41e66d6bcbfd32bf227607772a83c54a5400cb7e5dbdc947a101240ee43f8656fb1f7c4798e0a3c4218679090db00d3
7
- data.tar.gz: 8717ba33401dcc579de9de6bb6132263ba1737e87b8820874cc5e1d161651bdffe1481d3f676fb10d1ffef8da254eaaea95a83e1c1bccc58cc16b9511428efc5
6
+ metadata.gz: fcd2f5ff1b501cffd445d937f4a96e158250e8e76e48969d54760511dc339dc90e0d7d1d3f4f2ed5a14ffc0eafe037a8833122a0f649c071a8188e1819901bb4
7
+ data.tar.gz: e1df9014ea4b8a20db709e44284ce320a92808085aee70004a4bac19609fad866f271426e2e86c7ec46919f21795f55c91411b1404f73cfd0349544ef71ee408
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.3.0](https://github.com/craigulliott/dsl_compose/compare/v2.2.2...v2.3.0) (2023-07-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * added a method_called? helper method to the DSL parser ([48e68a8](https://github.com/craigulliott/dsl_compose/commit/48e68a8d799e297d3433f3d2a6bccb7a077dd9af))
9
+
10
+ ## [2.2.2](https://github.com/craigulliott/dsl_compose/compare/v2.2.1...v2.2.2) (2023-07-27)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * argument type :float was not accepting values and did not have validations ([243eff1](https://github.com/craigulliott/dsl_compose/commit/243eff1d0d0cc48602cc626e8a91cdc45b4f9955))
16
+
3
17
  ## [2.2.1](https://github.com/craigulliott/dsl_compose/compare/v2.2.0...v2.2.1) (2023-07-27)
4
18
 
5
19
 
data/README.md CHANGED
@@ -286,6 +286,12 @@ class MyParser < DSLCompose::Parser
286
286
  other than making calls to `for_method`
287
287
  DESCRIPTION
288
288
 
289
+ # Within a `for_dsl` block you can determine if a specific DSL method was used
290
+ # with the `method_called?` method. This method will return true if the method was
291
+ # used, otherwise it will return false. If a method with the provided name does not
292
+ # exist for the DSL, then an error will be raised.
293
+ was_some_method_name_used = method_called? :some_method_name
294
+
289
295
  # `for_method` accepts a method name or an array of method names and will
290
296
  # yield it's provided block once for each time a method with this name is
291
297
  # executed within the DSL.
@@ -362,6 +362,12 @@ module DSLCompose
362
362
  (length_validation.nil? || length_validation.validate!(value))
363
363
  end
364
364
 
365
+ # returns true if every provided float validation also returns true
366
+ def validate_float! value
367
+ # floats are validated with the same set of validators as integers
368
+ validate_integer! value
369
+ end
370
+
365
371
  # returns true if every provided symbol validation also returns true
366
372
  def validate_symbol! value
367
373
  (format_validation.nil? || format_validation.validate!(value)) &&
@@ -51,7 +51,7 @@ module DSLCompose
51
51
  # adds a new optional argument to the DSLMethod
52
52
  #
53
53
  # name must be a symbol
54
- # `type` can be either :integer, :boolean, :float, :string or :symbol
54
+ # `type` can be either :integer, :boolean, :float, :string, :symbol, :class or :object
55
55
  # `block` contains the argument definition and will be evaluated seperately
56
56
  # by the Argument::Interpreter
57
57
  def optional name, type, array: false, &block
@@ -61,7 +61,7 @@ module DSLCompose
61
61
  # adds a new required argument to the DSLMethod
62
62
  #
63
63
  # name must be a symbol
64
- # `type` can be either :integer, :boolean, :float, :string or :symbol
64
+ # `type` can be either :integer, :boolean, :float, :string, :symbol, :class or :object
65
65
  # `block` contains the argument definition and will be evaluated seperately
66
66
  # by the Argument::Interpreter
67
67
  def requires name, type, array: false, &block
@@ -91,6 +91,13 @@ module DSLCompose
91
91
  end
92
92
  optional_argument.validate_integer! value
93
93
 
94
+ when :float
95
+ # float allows either floats or integers
96
+ unless value.is_a?(Float) || value.is_a?(Integer)
97
+ raise InvalidArgumentTypeError, "`#{value}` is not an Float or Integer"
98
+ end
99
+ optional_argument.validate_float! value
100
+
94
101
  when :symbol
95
102
  unless value.is_a? Symbol
96
103
  raise InvalidArgumentTypeError, "`#{value}` is not a Symbol"
@@ -175,6 +182,13 @@ module DSLCompose
175
182
  end
176
183
  required_argument.validate_integer! value
177
184
 
185
+ when :float
186
+ # float allows either floats or integers
187
+ unless value.is_a?(Float) || value.is_a?(Integer)
188
+ raise InvalidArgumentTypeError, "`#{value}` is not an Float or Integer"
189
+ end
190
+ required_argument.validate_float! value
191
+
178
192
  when :symbol
179
193
  unless value.is_a? Symbol
180
194
  raise InvalidArgumentTypeError, "`#{value}` is not a Symbol"
@@ -109,6 +109,16 @@ module DSLCompose
109
109
  ForMethodParser.new(@base_class, @child_class, @dsl_execution, method_names, &block)
110
110
  end
111
111
 
112
+ # Given a method name, will return true if the method was called within the current DSL
113
+ # execution, otherwise it will return false
114
+ def method_called? method_name
115
+ # get the dsl method from the current dsl execution, this
116
+ # will raise an error if the method does not exist
117
+ dsl_method = @dsl_execution.dsl.dsl_method(method_name)
118
+ # was this method called within the current DSL execution?
119
+ @dsl_execution.method_calls.method_called? dsl_method.name
120
+ end
121
+
112
122
  # takes a description of what this parser does and stores it against the DSL definition
113
123
  # of the current @child_class, this is used to generate documentation for what the parser
114
124
  # 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.1"
4
+ VERSION = "2.3.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.1
4
+ version: 2.3.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-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: class_spec_helper