servactory 1.6.9 → 1.6.11

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: 2c500354cf4e4fdb64d43928419b2d5d90eb99a7f4075bb7b92c78fa0f498748
4
- data.tar.gz: ffd1d27087d1f5ad5457738c20cda5cb9fa73821fca05cc9cf3161c0c035fb71
3
+ metadata.gz: 2b12f427c8f43d8179f695716ffdc2afc1de1390320ff092b83a70dded92f9a7
4
+ data.tar.gz: ddd30b3129568ce698291b9cb3a039bd8eec32b200e01cc312d4dab9f8509ec4
5
5
  SHA512:
6
- metadata.gz: '039459dc8df65093417fe4b6703783e43ace1c401f86b9b067d5ce3aeeebd0f64866561904a15ea299c2be15224fb66a1fe71dfc8477d7e0f12458f086c09b8a'
7
- data.tar.gz: 794a191acdc4f2d94d8b827d05c1994a4e644a2124ac2e8fc83106abcfdeb80b35fc069a413c89cf98fc43b22b5f343bb96070d38ed05ffd3f7123d741fc3256
6
+ metadata.gz: 92abe4b72caa144a53c54a12d72613277798026a0625695cf1711e725a560befaf67ce4914ef2c6fa675fb27f0a4697360255849c3922803d88457d0134219e9
7
+ data.tar.gz: 11df004407cbb75c24ad342a508012c3b6bab3034674477fd01d20ccce8c1603712554d09127f01a395b3e658c3464cbd842decb293df9dc41a2a482e42d2da9
@@ -78,16 +78,12 @@ module Servactory
78
78
 
79
79
  # EXAMPLE:
80
80
  #
81
- # private
82
- #
83
81
  # attr_reader(*[:attr_1])
84
82
  #
85
83
  def context_internal_variables_template
86
84
  return if @internal_variables.blank?
87
85
 
88
86
  @context_internal_variables_template ||= <<-RUBY
89
- private
90
-
91
87
  attr_reader(*#{@internal_variables.keys})
92
88
  RUBY
93
89
  end
@@ -22,8 +22,6 @@ module Servactory
22
22
  private
23
23
 
24
24
  def create_instance_variable_for(internal)
25
- @context.instance_variable_set(:"@#{internal.name}", nil)
26
-
27
25
  @context.class.class_eval(context_internal_template_for(internal))
28
26
  end
29
27
 
@@ -38,6 +38,12 @@ module Servactory
38
38
  @current_stage.rollback = rollback
39
39
  end
40
40
 
41
+ def only_if(condition)
42
+ return if @current_stage.blank?
43
+
44
+ @current_stage.condition = condition
45
+ end
46
+
41
47
  def make(name, position: nil, **options)
42
48
  position = position.presence || next_position
43
49
 
@@ -5,12 +5,14 @@ module Servactory
5
5
  class Stage
6
6
  attr_accessor :position,
7
7
  :wrapper,
8
- :rollback
8
+ :rollback,
9
+ :condition
9
10
 
10
- def initialize(position:, wrapper: nil, rollback: nil)
11
+ def initialize(position:, wrapper: nil, rollback: nil, condition: nil)
11
12
  @position = position
12
13
  @wrapper = wrapper
13
14
  @rollback = rollback
15
+ @condition = condition
14
16
  end
15
17
 
16
18
  def next_method_position
@@ -33,6 +33,8 @@ module Servactory
33
33
  end
34
34
 
35
35
  def call_stage(stage)
36
+ return if unnecessary_for_stage?(stage)
37
+
36
38
  wrapper = stage.wrapper
37
39
  rollback = stage.rollback
38
40
  methods = stage.methods.sorted_by_position
@@ -52,13 +54,23 @@ module Servactory
52
54
 
53
55
  def call_methods(methods)
54
56
  methods.each do |make_method|
55
- next if unnecessary_for?(make_method)
57
+ next if unnecessary_for_make?(make_method)
56
58
 
57
59
  context.send(make_method.name)
58
60
  end
59
61
  end
60
62
 
61
- def unnecessary_for?(make_method)
63
+ def unnecessary_for_stage?(stage)
64
+ condition = stage.condition
65
+ # is_condition_opposite = stage.is_condition_opposite
66
+
67
+ result = prepare_condition_for(condition) # rubocop:disable Style/RedundantAssignment
68
+
69
+ # is_condition_opposite ? !result : result
70
+ result
71
+ end
72
+
73
+ def unnecessary_for_make?(make_method)
62
74
  condition = make_method.condition
63
75
  is_condition_opposite = make_method.is_condition_opposite
64
76
 
@@ -22,8 +22,6 @@ module Servactory
22
22
  private
23
23
 
24
24
  def create_instance_variable_for(output)
25
- @context.instance_variable_set(:"@#{output.name}", nil)
26
-
27
25
  @context.class.class_eval(context_output_template_for(output))
28
26
  end
29
27
 
@@ -35,10 +33,6 @@ module Servactory
35
33
  # instance_variable_set(:@user, value)
36
34
  # end
37
35
  #
38
- # private
39
- #
40
- # attr_reader :user
41
- #
42
36
  def context_output_template_for(output)
43
37
  <<-RUBY
44
38
  define_method(:#{output.name}=) do |value|
@@ -50,10 +44,6 @@ module Servactory
50
44
 
51
45
  instance_variable_set(:@#{output.name}, value)
52
46
  end
53
-
54
- private
55
-
56
- attr_reader :#{output.name}
57
47
  RUBY
58
48
  end
59
49
  end
@@ -4,7 +4,7 @@ module Servactory
4
4
  module VERSION
5
5
  MAJOR = 1
6
6
  MINOR = 6
7
- PATCH = 9
7
+ PATCH = 11
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH].join(".")
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servactory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.9
4
+ version: 1.6.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sokolov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-11 00:00:00.000000000 Z
11
+ date: 2023-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport