makeover 1.0.0.rc2 → 1.0.0.rc3

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2ViYWIwNmRiYTM2MjEzZDExZjhhNGQ4NGMyZGNiNjgyNzMyMzYxOA==
4
+ ZmFlN2YwMWM5YzVjOGY1NWUwMTZlOGFjM2I4MDk4M2IwNjk4NzBkNA==
5
5
  data.tar.gz: !binary |-
6
- MTQyNzZhZWViZjlkN2ViMjc5OGMwNzcwZjg1ZDlhNDU5NjkyZGU1Mg==
6
+ N2E5NzJlNjcxOTBjODQzMGU5ZjI1ODE4MjRmNjE4ZWM4OGVlZjNiZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NjEwZWIyM2I1ZjgxMDdjZWY5ZGE1MzFkYmYyNzk5MjIwYTBlZWZjOTY1NzQ2
10
- OTI4MjE0MjJmOWM4MzQxODU1N2Q4ODYyZDA4ZDYwOWYxYzU2ZjFjZTIzMGQy
11
- MTVkYWFjMmU4MjI2MTM3ZjBkOTIyYTZlNGI5Mzk5ZDQ4ZjMwZWU=
9
+ YzA4ZDI4ZmZjNjc5NTAzMzEwMDM1ZTI0NzYzYzM3NDE4MmVkMzg3MjYxZGQ0
10
+ YmRlZDEyZDNjYjU3YWVhOWZmYjdjYzA0NjhkYmI0ZTZmYjk5NTMxZjYxOGJh
11
+ ZjI1MzRjZWM5ZDAyYWU2ODJhOTE5NDViZDRiNGViYmJjMTJhNzc=
12
12
  data.tar.gz: !binary |-
13
- MjA1ZWJmODg4MGYwOTM0OTQ5YWUxNjA3ZGFhNzEwNjc5NTZmZTdjZDUxMDM0
14
- MGY5NDNjNzI4YjNiOTRlNjc2OWJhY2MxNjllM2M3N2NjYzQ2ZjY3Y2E5YmVl
15
- YjhhNWNlYjg0ZWNkZjUyMGVhNTFhY2E4ZjE0YjE5NzU2YTBmYWI=
13
+ N2JhYTQwMTIyZDQ2ZDI3YTYxNzY4NGVlMTIxYTdmZjljYzdhNmU3Y2EwYjdh
14
+ YTk3ZDhjOTA0NzJjZmNhMWI4OGI0NDkzNTM5OTIyMDNjY2I4ZjMyY2Q5YTUw
15
+ OWRkZjdjMzM4YWYxMjMyODRmN2JmYzM0MjhkMzUwMjFlNDI2NmY=
@@ -9,4 +9,14 @@ module Makeover
9
9
  autoload :Presenter
10
10
  autoload :CollectionPresenter
11
11
  autoload :Presentable
12
+ autoload :Delegation
13
+
14
+ def self.deprecator
15
+ ActiveSupport::Deprecation.new next_major_version, name
16
+ end
17
+
18
+ def self.next_major_version
19
+ major = VERSION.split('.').first.to_i + 1
20
+ "#{major}.0"
21
+ end
12
22
  end
@@ -0,0 +1,47 @@
1
+ module Makeover
2
+ # +ActiveSupport#delegate+ behavior customization and default
3
+ # delegation to objects like +I18n+ and the derived model class, or a
4
+ # custom one.
5
+ module Delegation
6
+ # @!attribute model_class [w]
7
+ # Customize the model class that this presenter should wrap.
8
+ attr_writer :model_class
9
+
10
+ # Figure out model class of presenter so we can delegate to the
11
+ # proper model_name instance.
12
+ def model_class
13
+ @model_class ||= derived_model_class_name.constantize
14
+ end
15
+
16
+ # Wraps +ActiveSupport#delegate+ to specifically delegate methods to
17
+ # the underlying object.
18
+ #
19
+ # @param methods [Array<Symbol>] *methods
20
+ # @param to [Symbol] :to
21
+ # @param options [Hash]
22
+ # @option options [Boolean] :allow_nil
23
+ # @option options [Boolean] :allow_blank
24
+ def delegate(*methods, to: :model, **options)
25
+ if to == :model
26
+ Makeover.deprecator.deprecation_warning 'delegate without specifying :to'
27
+ end
28
+ super(*methods, to: to, **options)
29
+ end
30
+
31
+ delegate :model_name, to: :model_class
32
+
33
+ # No-op for Draper support.
34
+ #
35
+ # @return [NilClass] +nil+ and a deprecation message.
36
+ def delegate_all
37
+ # noop
38
+ end
39
+ deprecate :delegate_all, deprecator: Makeover.deprecator
40
+
41
+ private
42
+
43
+ def derived_model_class_name
44
+ name.gsub(/Presenter/, '').classify
45
+ end
46
+ end
47
+ end
@@ -2,6 +2,10 @@
2
2
  module Makeover
3
3
  # Base Presenter class for all decorator objects.
4
4
  class Presenter < Delegator
5
+ extend Delegation
6
+
7
+ delegate :t, :translate, to: I18n
8
+
5
9
  # @!attribute [r] model
6
10
  # @return [Object] Object being delegated to.
7
11
  attr_reader :model
@@ -17,37 +21,6 @@ module Makeover
17
21
  end
18
22
  end
19
23
 
20
- # Wraps +ActiveSupport#delegate+ to specifically delegate methods to
21
- # the underlying object.
22
- #
23
- # @param methods [Array<Symbol>] *methods
24
- # @param to [Symbol] :to
25
- # @param options [Hash]
26
- # @option options [Boolean] :allow_nil
27
- # @option options [Boolean] :allow_blank
28
- def self.delegate(*methods, to: :model, **options)
29
- super(*methods, to: to, **options)
30
- end
31
-
32
- # Delegate translation methods to i18n
33
- delegate :t, to: I18n
34
-
35
- # Figure out model class of presenter so we can delegate to the
36
- # proper model_name instance.
37
- def self.model_class
38
- name.gsub(/Presenter/, '').classify.constantize
39
- end
40
-
41
- class << self
42
- # Delegate model name lookups to model class of this presenter.
43
- delegate :model_name, to: :model_class
44
- end
45
-
46
- # No-op for Draper support.
47
- def self.delegate_all
48
- # noop
49
- end
50
-
51
24
  # Return the model object.
52
25
  #
53
26
  # @return [Object]
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Makeover
3
- VERSION = '1.0.0.rc2'
3
+ VERSION = '1.0.0.rc3'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makeover
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc2
4
+ version: 1.0.0.rc3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Scott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-23 00:00:00.000000000 Z
11
+ date: 2016-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -187,6 +187,7 @@ files:
187
187
  - lib/generators/presenter/templates/test.rb.erb
188
188
  - lib/makeover.rb
189
189
  - lib/makeover/collection_presenter.rb
190
+ - lib/makeover/delegation.rb
190
191
  - lib/makeover/engine.rb
191
192
  - lib/makeover/helpers.rb
192
193
  - lib/makeover/presentable.rb