makeover 1.0.0.rc1 → 1.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: bc00466b91b8719cfb7e1373f7f37671f807a964
4
- data.tar.gz: 0ebc94022e9c2e1146d4e15a515f1d0f7b1343c4
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ N2ViYWIwNmRiYTM2MjEzZDExZjhhNGQ4NGMyZGNiNjgyNzMyMzYxOA==
5
+ data.tar.gz: !binary |-
6
+ MTQyNzZhZWViZjlkN2ViMjc5OGMwNzcwZjg1ZDlhNDU5NjkyZGU1Mg==
5
7
  SHA512:
6
- metadata.gz: 331489eeaf921f18402795ecccaab6d34a19413b77a15b0eb4fa2cd8252f08ff49f9f45f477243249dcd1fff869599c24c75647179daf031f686caa28109f86d
7
- data.tar.gz: 272d5eb00ba6faa63fa2143383a04fb2ed12ab491fa29bb941337d1f0ded69daf5ec1e969ddf9314b7ba828ade962cdaf64fa6d912ea67050077b7430400d11c
8
+ metadata.gz: !binary |-
9
+ NjEwZWIyM2I1ZjgxMDdjZWY5ZGE1MzFkYmYyNzk5MjIwYTBlZWZjOTY1NzQ2
10
+ OTI4MjE0MjJmOWM4MzQxODU1N2Q4ODYyZDA4ZDYwOWYxYzU2ZjFjZTIzMGQy
11
+ MTVkYWFjMmU4MjI2MTM3ZjBkOTIyYTZlNGI5Mzk5ZDQ4ZjMwZWU=
12
+ data.tar.gz: !binary |-
13
+ MjA1ZWJmODg4MGYwOTM0OTQ5YWUxNjA3ZGFhNzEwNjc5NTZmZTdjZDUxMDM0
14
+ MGY5NDNjNzI4YjNiOTRlNjc2OWJhY2MxNjllM2M3N2NjYzQ2ZjY3Y2E5YmVl
15
+ YjhhNWNlYjg0ZWNkZjUyMGVhNTFhY2E4ZjE0YjE5NzU2YTBmYWI=
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Makeover
2
2
 
3
- [![Build Status](https://travis-ci.org/tubbo/presenters.svg?branch=master)](https://travis-ci.org/tubbo/presenters)
3
+ [![Build Status](https://travis-ci.org/tubbo/makeover.svg?branch=master)](https://travis-ci.org/tubbo/makeover)
4
4
  [![Code Climate](https://codeclimate.com/github/tubbo/presenters/badges/gpa.svg)](https://codeclimate.com/github/tubbo/presenters)
5
5
  [![Issue Count](https://codeclimate.com/github/tubbo/presenters/badges/issue_count.svg)](https://codeclimate.com/github/tubbo/presenters)
6
6
  [![Test Coverage](https://codeclimate.com/github/tubbo/presenters/badges/coverage.svg)](https://codeclimate.com/github/tubbo/presenters/coverage)
7
+ [![Documentation](http://inch-ci.org/github/tubbo/makeover.svg?branch=master)](http://inch-ci.org/github/tubbo/makeover)
7
8
 
8
9
  A [decorator][] library for [Rails][] applications, inspired by
9
10
  [Draper][], but with an emphasis on architectural simplicity. Makeover
@@ -7,7 +7,8 @@ module Makeover
7
7
 
8
8
  MIXIN = "\n\s\sinclude Makeover::Presentable\n"
9
9
 
10
- def copy_makeover
10
+ # Copy presenters into the project.
11
+ def copy_presenters
11
12
  %w(application collection).each do |type|
12
13
  filename = "app/presenters/#{type}_presenter.rb"
13
14
  if File.exist? Rails.root.join(filename).to_s
@@ -16,6 +17,7 @@ module Makeover
16
17
  end
17
18
  end
18
19
 
20
+ # Inject mixins into ApplicationRecord and ApplicationController
19
21
  def inject_mixin
20
22
  insert_into_file(
21
23
  'app/models/application_record.rb',
@@ -5,10 +5,12 @@ class PresenterGenerator < Rails::Generators::NamedBase
5
5
  source_root File.expand_path('../templates', __FILE__)
6
6
  class_option :collection, type: :boolean, default: false
7
7
 
8
+ # Create a new presenter.
8
9
  def copy_presenter
9
10
  template "#{presenter}.rb.erb", "app/presenters/#{file_name}_presenter.rb"
10
11
  end
11
12
 
13
+ # Create corresponding test for presenter.
12
14
  def copy_test
13
15
  template(
14
16
  "#{test}.rb.erb",
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
  module Makeover
3
2
  # Rails integration for the library. Sets up configuration.
4
3
  class Engine < ::Rails::Engine
@@ -30,11 +30,13 @@ module Makeover
30
30
  end
31
31
  end
32
32
 
33
- class_methods do
33
+ # :nodoc:
34
+ # @!parse extend Makeover::Presentable::ClassMethods
35
+ module ClassMethods
34
36
  # Configure the class used to present records by default
35
37
  # within this object.
36
38
  #
37
- # @param [Class] custom_presenter_class
39
+ # @param custom_presenter_class [Class]
38
40
  def presented_by(custom_presenter_class)
39
41
  self.presenter_class = custom_presenter_class
40
42
  end
@@ -42,7 +44,7 @@ module Makeover
42
44
  # Configure the class used to present collections by default
43
45
  # within this object.
44
46
  #
45
- # @param [Class] custom_presenter_class
47
+ # @param custom_presenter_class [Class]
46
48
  def collection_presented_by(custom_presenter_class)
47
49
  self.collection_presenter_class = custom_presenter_class
48
50
  end
@@ -51,10 +53,9 @@ module Makeover
51
53
  # Presents the given model or the current object with the current
52
54
  # object's configured presenter or the given class in +with:+.
53
55
  #
54
- # @param [Object] model - Model class to present. (optional)
55
- # @option [Class] :with - Presenter object that wraps the model.
56
- # @option [Hash] **context - Additional context for the presenter in
57
- # key/value pairs.
56
+ # @param model [Object] Model class to present. (optional)
57
+ # @param with [Class] Presenter object that wraps the model.
58
+ # @param context [Hash] Additional context for the presenter.
58
59
  def present(model = nil, with: nil, **context)
59
60
  model ||= self
60
61
  with ||= model.try(:presenter_class) || presenter_class
@@ -2,8 +2,14 @@
2
2
  module Makeover
3
3
  # Base Presenter class for all decorator objects.
4
4
  class Presenter < Delegator
5
+ # @!attribute [r] model
6
+ # @return [Object] Object being delegated to.
5
7
  attr_reader :model
6
8
 
9
+ # Wrap a new model as a presenter object.
10
+ #
11
+ # @param model [Object] Model object to wrap.
12
+ # @param context [Hash] Extra context for the presenter.
7
13
  def initialize(model, **context)
8
14
  @model = model
9
15
  context.each do |option, value|
@@ -11,14 +17,47 @@ module Makeover
11
17
  end
12
18
  end
13
19
 
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
14
28
  def self.delegate(*methods, to: :model, **options)
15
29
  super(*methods, to: to, **options)
16
30
  end
17
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
+ # Return the model object.
52
+ #
53
+ # @return [Object]
18
54
  def __getobj__
19
55
  @model
20
56
  end
21
57
 
58
+ # Delegate to view context to run helper methods.
59
+ #
60
+ # @return [Makeover::Helpers]
22
61
  def helpers
23
62
  @helpers ||= Helpers.new
24
63
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Makeover
3
- VERSION = '1.0.0.rc1'
3
+ VERSION = '1.0.0.rc2'
4
4
  end
data/lib/makeover.rb CHANGED
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
  require 'makeover/engine'
3
2
  require 'makeover/version'
4
3
 
metadata CHANGED
@@ -1,167 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makeover
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2
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-22 00:00:00.000000000 Z
11
+ date: 2016-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pg
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: capybara
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - ! '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: poltergeist
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - ! '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - ! '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: generator_spec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - ! '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - ! '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - ! '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: yard
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - ! '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - ! '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: travis-release
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - ! '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - ! '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: codeclimate-test-reporter
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - ! '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - ! '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: pry-byebug
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - ! '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - ! '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  description: View model library for Rails applications. Extracted from brother.ly.
@@ -203,19 +203,18 @@ require_paths:
203
203
  - lib
204
204
  required_ruby_version: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - ! '>='
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  required_rubygems_version: !ruby/object:Gem::Requirement
210
210
  requirements:
211
- - - ">"
211
+ - - ! '>'
212
212
  - !ruby/object:Gem::Version
213
213
  version: 1.3.1
214
214
  requirements: []
215
215
  rubyforge_project:
216
- rubygems_version: 2.5.1
216
+ rubygems_version: 2.4.5
217
217
  signing_key:
218
218
  specification_version: 4
219
219
  summary: View model library for Rails applications.
220
220
  test_files: []
221
- has_rdoc: