granite 0.9.9 → 0.10.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: c916196599f14f9af76a9a550ffb51e7e4db5fd97deee1cf7cf04135c4bfb217
4
- data.tar.gz: 6fc2f4a436734b34eb2096fa063a0d82e6fe6bf58afbb04af07b1a86d82d8727
3
+ metadata.gz: 6899733124529783eda1187a978475dea09fe5c716349d50f4dbf02f0c70a90c
4
+ data.tar.gz: 81113bf6131ba438bb21af75c0b870ca3e0f8e07cbd8d754c274c259311ae640
5
5
  SHA512:
6
- metadata.gz: 0bd7b860deb8221df8be1e1227df3c71462862a47ba9243ec7ebc3be1972aeaa95b5c14334ab45aa372f7fe45fc89ed7b3af79a9fb52c3ed5f3e3908981611af
7
- data.tar.gz: 6f164dc00ce5e56be2bff2bd01f22b49d37996decc05b74816a129f1598451d0dbbb184c1c7d02cac90e52eca80e947e8cba6932dba6842a030ce7801864ba0d
6
+ metadata.gz: 1f6715806d76f01ec2f017c83bacecc3a33dc3ed9099493a2f245f84eadabe87abe5835bcfcb16fda8fc2f5b71022c84053291a1f4d4c829691cfaf216068d46
7
+ data.tar.gz: ec7f880050ff0a6b7de11d576d22038d5dcca6d0e3e71c2c7a2c4adb59280f153e05210bf7c7e4df519ddada2d5d337c12fdec34c3fddb060cf5dd82520ae3ff
@@ -6,7 +6,8 @@ module Granite
6
6
  end
7
7
 
8
8
  def translate(*args, **options)
9
- super(*Granite::Translations.scope_translation_args(i18n_scopes, *args, **options))
9
+ key, options = Granite::Translations.scope_translation_args(i18n_scopes, *args, **options)
10
+ super(key, **options)
10
11
  end
11
12
 
12
13
  alias t translate
@@ -42,7 +42,7 @@ module Granite
42
42
  # @return [Object] result of execute_perform! method execution or false in case of errors
43
43
  def perform(context: nil, **options)
44
44
  transaction do
45
- valid?(context) && perform_action(options)
45
+ valid?(context) && perform_action(**options)
46
46
  end
47
47
  end
48
48
 
@@ -94,7 +94,7 @@ module Granite
94
94
  def perform_action(raise_errors: false, **options)
95
95
  result = run_callbacks(:execute_perform) do
96
96
  apply_association_changes!
97
- execute_perform!(options)
97
+ execute_perform!(**options)
98
98
  end
99
99
  @_action_performed = true
100
100
  result || true
@@ -55,17 +55,17 @@ module Granite
55
55
  end
56
56
  end
57
57
 
58
- def try_perform!(*)
58
+ def try_perform!(*, **)
59
59
  authorize!
60
60
  super
61
61
  end
62
62
 
63
- def perform(*)
63
+ def perform(*, **)
64
64
  authorize!
65
65
  super
66
66
  end
67
67
 
68
- def perform!(*)
68
+ def perform!(*, **)
69
69
  authorize!
70
70
  super
71
71
  end
@@ -51,15 +51,7 @@ module Granite
51
51
  elsif args.first.is_a?(Class)
52
52
  add_precondition(ObjectPrecondition, *args, options)
53
53
  else
54
- common_options = options.extract!(:if, :unless, :desc, :description)
55
- args.each do |type|
56
- precondition common_options.merge(type => {})
57
- end
58
- options.each do |key, value|
59
- value = Array.wrap(value)
60
- precondition_options = value.extract_options!
61
- add_precondition(klass(key), *value, precondition_options.merge!(common_options))
62
- end
54
+ add_preconditions_hash(*args, **options)
63
55
  end
64
56
  end
65
57
 
@@ -72,6 +64,18 @@ module Granite
72
64
  end || fail(NameError, "No precondition class for #{key}Precondition")
73
65
  end
74
66
 
67
+ def add_preconditions_hash(*args, **options)
68
+ common_options = options.extract!(:if, :unless, :desc, :description)
69
+ args.each do |type|
70
+ precondition common_options.merge(type => {})
71
+ end
72
+ options.each do |key, value|
73
+ value = Array.wrap(value)
74
+ precondition_options = value.extract_options!
75
+ add_precondition(klass(key), *value, precondition_options.merge!(common_options))
76
+ end
77
+ end
78
+
75
79
  def add_precondition(klass, *args, &block)
76
80
  self._preconditions += klass.new(*args, &block)
77
81
  end
@@ -9,7 +9,7 @@ module Granite
9
9
  end
10
10
 
11
11
  def execute!(context)
12
- _execute(context) if context.conditions_satisfied?(@options)
12
+ _execute(context) if context.conditions_satisfied?(**@options)
13
13
  end
14
14
 
15
15
  private
@@ -16,7 +16,8 @@ module Granite
16
16
  end
17
17
 
18
18
  def translate(*args, **options)
19
- I18n.translate(*Granite::Translations.scope_translation_args(self.class.i18n_scopes, *args, **options))
19
+ key, options = Granite::Translations.scope_translation_args(self.class.i18n_scopes, *args, **options)
20
+ I18n.translate(key, **options)
20
21
  end
21
22
  alias t translate
22
23
  end
@@ -25,7 +25,7 @@ class Granite::Dispatcher
25
25
  end
26
26
 
27
27
  def controller(params, *_args)
28
- projector(params.slice(:granite_action, :granite_projector).symbolize_keys)&.controller_class
28
+ projector(*params.values_at(:granite_action, :granite_projector))&.controller_class
29
29
  end
30
30
 
31
31
  def prepare_params!(params, *_args)
@@ -39,19 +39,19 @@ class Granite::Dispatcher
39
39
  controller(req.params),
40
40
  action_name(
41
41
  req.request_method_symbol,
42
- req.params.slice(:granite_action, :granite_projector, :projector_action).symbolize_keys
42
+ *req.params.values_at(:granite_action, :granite_projector, :projector_action)
43
43
  )
44
44
  ]
45
45
  end
46
46
 
47
- memoize def action_name(request_method_symbol, granite_action:, granite_projector:, projector_action: '')
48
- projector = projector(granite_action: granite_action, granite_projector: granite_projector)
47
+ memoize def action_name(request_method_symbol, granite_action, granite_projector, projector_action = '')
48
+ projector = projector(granite_action, granite_projector)
49
49
  return unless projector
50
50
 
51
51
  projector.action_for(request_method_symbol, projector_action)
52
52
  end
53
53
 
54
- memoize def projector(granite_action:, granite_projector:)
54
+ memoize def projector(granite_action, granite_projector)
55
55
  action = business_action(granite_action)
56
56
 
57
57
  action.public_send(granite_projector) if action.respond_to?(granite_projector)
@@ -23,11 +23,11 @@ module Granite
23
23
  controller_class.__send__(:define_method, name, &block)
24
24
  class_eval <<-METHOD, __FILE__, __LINE__ + 1
25
25
  def #{name}_url(options = {})
26
- action_url(:#{name}, options.symbolize_keys)
26
+ action_url(:#{name}, **options.symbolize_keys)
27
27
  end
28
28
 
29
29
  def #{name}_path(options = {})
30
- action_path(:#{name}, options.symbolize_keys)
30
+ action_path(:#{name}, **options.symbolize_keys)
31
31
  end
32
32
  METHOD
33
33
  else
@@ -8,7 +8,8 @@ module Granite
8
8
  end
9
9
 
10
10
  def translate(*args, **options)
11
- super(*Granite::Translations.scope_translation_args(i18n_scopes, *args, **options))
11
+ key, options = Granite::Translations.scope_translation_args(i18n_scopes, *args, **options)
12
+ super(key, **options)
12
13
  end
13
14
 
14
15
  alias t translate
data/lib/granite/util.rb CHANGED
@@ -26,7 +26,7 @@ module Granite
26
26
  # @option options :if method name or callable
27
27
  # @option options :unless method name or callable
28
28
  # @return [Boolean] whether conditions are satisfied
29
- def conditions_satisfied?(options)
29
+ def conditions_satisfied?(**options)
30
30
  fail ArgumentError, 'You cannot specify both if and unless' if options.key?(:if) && options.key?(:unless)
31
31
 
32
32
  if options.key?(:if)
@@ -1,3 +1,3 @@
1
1
  module Granite
2
- VERSION = '0.9.9'.freeze
2
+ VERSION = '0.10.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: granite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
- - Arkadiy Zabazhanov & friends
7
+ - Toptal Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-21 00:00:00.000000000 Z
11
+ date: 2021-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack