granite 0.9.9 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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