hanami-view 1.0.0.beta1 → 1.0.0.beta2

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
  SHA1:
3
- metadata.gz: c9d9b96f95c854ea1e077fa9eba2f0a12231a17a
4
- data.tar.gz: 3765632751a65ae3796b713fa5ba18513c602ef9
3
+ metadata.gz: b09fc59502d563ea4210c73bc5909553a2f5cb03
4
+ data.tar.gz: f9a822d9f11356243c2d4ed6d67dc5d2edbf60a5
5
5
  SHA512:
6
- metadata.gz: e6eb1ffb5750b24e53ad193372b96be6c3369d06d7d0320aa575e95ecad959c070c0aa70ce8821b84f0ccf7a7125daa8a8de77e3e25285c77efd663e1d99eb75
7
- data.tar.gz: 27335f0f15b60e3c3460cb60825ff2059c1a2a26b464f9d6847e20a13d592d45ca6236e70569204a94c1d7898635e74371851442adc2974b7467753885ff65a7
6
+ metadata.gz: '00858c90d06b8eddf6c5d497b3dd5f03df9edb8fb620248d300b26017b94eafc49eb2866d34241204ba72e8abd30096700dc8884f338202fc680665848e70603'
7
+ data.tar.gz: e6602693088e2fbc2f1a54cae40278266bc542d65992d6e3b02c7830d744b1634d8142f5a5376265e6509264f1280ddb20f83f4ce046c386dd704184b1fa523a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Hanami::View
2
2
  View layer for Hanami
3
3
 
4
+ ## v1.0.0.beta2 - 2017-03-17
5
+ ### Changed
6
+ - [Luca Guidi] Remove deprecated `Hanami::View::Rendering::LayoutScope#content`
7
+
4
8
  ## v1.0.0.beta1 - 2017-02-14
5
9
  ### Added
6
10
  - [Luca Guidi] Official support for Ruby: MRI 2.4
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2016 Luca Guidi
1
+ Copyright (c) 2014-2017 Luca Guidi
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -866,6 +866,6 @@ __Hanami::View__ uses [Semantic Versioning 2.0.0](http://semver.org)
866
866
 
867
867
  ## Copyright
868
868
 
869
- Copyright 2014-2016 Luca Guidi – Released under MIT License
869
+ Copyright 2014-2017 Luca Guidi – Released under MIT License
870
870
 
871
871
  This project was formerly known as Lotus (`lotus-view`).
data/lib/hanami/layout.rb CHANGED
@@ -107,6 +107,7 @@ module Hanami
107
107
 
108
108
  private
109
109
 
110
+ # @api private
110
111
  def load_registry!
111
112
  @registry = nil
112
113
  registry.freeze
@@ -483,14 +483,21 @@ module Hanami
483
483
  end
484
484
  end
485
485
 
486
+ # @api private
486
487
  alias_method :unload!, :reset!
487
488
 
488
489
  protected
490
+ # @api private
489
491
  attr_writer :namespace
492
+ # @api private
490
493
  attr_writer :root
494
+ # @api private
491
495
  attr_writer :load_paths
496
+ # @api private
492
497
  attr_writer :layout
498
+ # @api private
493
499
  attr_writer :default_encoding
500
+ # @api private
494
501
  attr_writer :modules
495
502
  end
496
503
  end
@@ -17,6 +17,8 @@ module Hanami
17
17
  #
18
18
  # @since 0.1.0
19
19
  class MissingTemplateError < Error
20
+ # @since 0.1.0
21
+ # @api private
20
22
  def initialize(template, format)
21
23
  super("Can't find template '#{ template }' for '#{ format }' format.")
22
24
  end
@@ -39,6 +41,8 @@ module Hanami
39
41
  #
40
42
  # @since 0.5.0
41
43
  class MissingTemplateLayoutError < Error
44
+ # @since 0.5.0
45
+ # @api private
42
46
  def initialize(template)
43
47
  super("Can't find layout template '#{ template }'")
44
48
  end
@@ -18,7 +18,6 @@ module Hanami
18
18
  # @return [Hanami::Utils::Escape::SafeString] the string marked as safe
19
19
  #
20
20
  # @since 0.4.0
21
- # @api public
22
21
  #
23
22
  # @example View usage
24
23
  # require 'hanami/view'
@@ -72,7 +71,6 @@ module Hanami
72
71
  # autoescape
73
72
  #
74
73
  # @since 0.4.0
75
- # @api public
76
74
  #
77
75
  # @see Hanami::View::Escape::Presenter
78
76
  #
@@ -43,6 +43,8 @@ module Hanami
43
43
  end
44
44
 
45
45
  protected
46
+ # @api private
47
+ # @since 0.1.0
46
48
  def prepare!
47
49
  templates.each do |template|
48
50
  @registry.merge! template.format => template
@@ -50,10 +52,14 @@ module Hanami
50
52
  @registry.any? or raise MissingTemplateLayoutError.new(@view)
51
53
  end
52
54
 
55
+ # @api private
56
+ # @since 0.1.0
53
57
  def templates
54
58
  TemplatesFinder.new(@view).find
55
59
  end
56
60
 
61
+ # @api private
62
+ # @since 0.1.0
57
63
  def format(context)
58
64
  context.fetch(:format) { raise MissingFormatError }
59
65
  end
@@ -1,6 +1,5 @@
1
1
  require 'hanami/view/rendering/null_local'
2
2
  require 'hanami/utils/escape'
3
- require 'hanami/utils/deprecation'
4
3
 
5
4
  module Hanami
6
5
  module View
@@ -118,55 +117,6 @@ module Hanami
118
117
  @locals || @scope.locals
119
118
  end
120
119
 
121
- # Returns a content for the given key, by trying to invoke on the current
122
- # scope, a method with the same name.
123
- #
124
- # The scope is made of locals and concrete methods from view and layout.
125
- #
126
- # @param key [Symbol] a method to invoke within current scope
127
- # @return [String,NilClass] returning content if scope respond to the
128
- # requested method
129
- #
130
- # @deprecated Use {#local} instead
131
- # @since 0.4.1
132
- #
133
- # @example
134
- # # Given the following layout template
135
- #
136
- # <!doctype HTML>
137
- # <html>
138
- # <!-- ... -->
139
- # <body>
140
- # <!-- ... -->
141
- # <%= content :footer %>
142
- # </body>
143
- # </html>
144
- #
145
- # # Case 1:
146
- # # Products::Index doesn't respond to #footer, content will return nil
147
- # #
148
- # # Case 2:
149
- # # Products::Show responds to #footer, content will send back
150
- # # #footer returning value
151
- #
152
- # module Products
153
- # class Index
154
- # include Hanami::View
155
- # end
156
- #
157
- # class Show
158
- # include Hanami::View
159
- #
160
- # def footer
161
- # "contents for footer"
162
- # end
163
- # end
164
- # end
165
- def content(key)
166
- Utils::Deprecation.new("#content is deprecated, please use #local")
167
- __send__(key) if respond_to?(key)
168
- end
169
-
170
120
  # It tries to invoke a method for the view or a local for the given key.
171
121
  # If the lookup fails, it returns a null object.
172
122
  #
@@ -224,6 +174,7 @@ module Hanami
224
174
  # @return [TrueClass,FalseClass]
225
175
  #
226
176
  # @since 0.3.0
177
+ # @api private
227
178
  #
228
179
  # @see http://ruby-doc.org/core/Object.html#method-i-respond_to-3F
229
180
  def respond_to?(m, include_all = false)
@@ -271,6 +222,7 @@ module Hanami
271
222
  end
272
223
  end
273
224
 
225
+ # @api private
274
226
  def renderer(options)
275
227
  if options[:partial]
276
228
  Rendering::Partial
@@ -280,6 +232,7 @@ module Hanami
280
232
  end
281
233
 
282
234
  private
235
+ # @api private
283
236
  def _options(options)
284
237
  options.dup.tap do |opts|
285
238
  opts.merge!(format: format)
@@ -20,21 +20,25 @@ module Hanami
20
20
  end
21
21
 
22
22
  # @since 0.7.0
23
+ # @api private
23
24
  def all?
24
25
  false
25
26
  end
26
27
 
27
28
  # @since 0.7.0
29
+ # @api private
28
30
  def any?
29
31
  false
30
32
  end
31
33
 
32
34
  # @since 0.7.0
35
+ # @api private
33
36
  def empty?
34
37
  true
35
38
  end
36
39
 
37
40
  # @since 0.7.0
41
+ # @api private
38
42
  def nil?
39
43
  true
40
44
  end
@@ -20,6 +20,8 @@ module Hanami
20
20
  # <%= render partial: 'shared/sidebar' %>
21
21
  class Partial < Template
22
22
  protected
23
+ # @api private
24
+ # @since 0.1.0
23
25
  def template
24
26
  PartialFinder.new(@view.class, @options).find
25
27
  end
@@ -4,7 +4,17 @@ module Hanami
4
4
  # @since 0.7.0
5
5
  # @api private
6
6
  class PartialFile
7
- attr_reader :key, :format, :template
7
+ # @since 0.7.0
8
+ # @api private
9
+ attr_reader :key
10
+
11
+ # @since 0.7.0
12
+ # @api private
13
+ attr_reader :format
14
+
15
+ # @since 0.7.0
16
+ # @api private
17
+ attr_reader :template
8
18
 
9
19
  # @since 0.7.0
10
20
  # @api private
@@ -60,15 +60,18 @@ module Hanami
60
60
  all.join(separator)
61
61
  end
62
62
 
63
+ # @api private
63
64
  def template_name
64
65
  *all, last = partial_name.split(separator)
65
66
  all.push( last.prepend(prefix) ).join(separator)
66
67
  end
67
68
 
69
+ # @api private
68
70
  def partial_name
69
71
  @options[:partial]
70
72
  end
71
73
 
74
+ # @api private
72
75
  def prefix
73
76
  PREFIX
74
77
  end
@@ -21,6 +21,8 @@ module Hanami
21
21
  # @since 0.7.0
22
22
  PARTIAL_PARTS_SEPARATOR = '.'.freeze
23
23
 
24
+ # @api private
25
+ # @since 0.7.0
24
26
  attr_reader :configuration
25
27
 
26
28
  # Initializes a new PartialTemplatesFinder
@@ -28,6 +30,7 @@ module Hanami
28
30
  # @param configuration [Configuration] the configuration object
29
31
  #
30
32
  # @since 0.7.0
33
+ # @api private
31
34
  def initialize(configuration)
32
35
  @configuration = configuration
33
36
  end
@@ -37,6 +40,7 @@ module Hanami
37
40
  # @return [Array] array of PartialFinder objects
38
41
  #
39
42
  # @since 0.7.0
43
+ # @api private
40
44
  def find
41
45
  _find_partials(configuration.root).map do |template|
42
46
  partial_path, partial_base_name = Pathname(template).relative_path_from(configuration.root).split
@@ -67,4 +71,3 @@ module Hanami
67
71
  end
68
72
  end
69
73
  end
70
-
@@ -94,31 +94,37 @@ module Hanami
94
94
  end
95
95
 
96
96
  private
97
+ # @api private
97
98
  def prepare!
98
99
  prepare_views!
99
100
  prepare_templates!
100
101
  end
101
102
 
103
+ # @api private
102
104
  def prepare_views!
103
105
  views.each do |view|
104
106
  @registry.merge! view.format || DEFAULT_FORMAT => [ view, template_for(view) ]
105
107
  end
106
108
  end
107
109
 
110
+ # @api private
108
111
  def prepare_templates!
109
112
  templates.each do |template|
110
113
  @registry.merge! template.format => [ view_for(template), template ]
111
114
  end
112
115
  end
113
116
 
117
+ # @api private
114
118
  def views
115
119
  @view.subclasses + [ @view ]
116
120
  end
117
121
 
122
+ # @api private
118
123
  def view_for(template)
119
124
  ViewFinder.new(@view).find(template)
120
125
  end
121
126
 
127
+ # @api private
122
128
  def template_for(view)
123
129
  templates.find {|template| template.format == view.format }
124
130
  end
@@ -62,6 +62,7 @@ module Hanami
62
62
  end
63
63
 
64
64
  protected
65
+ # @api private
65
66
  def method_missing(m, *args, &block)
66
67
  ::Hanami::View::Escape.html(
67
68
  if @view.respond_to?(m)
@@ -45,10 +45,12 @@ module Hanami
45
45
  end
46
46
 
47
47
  protected
48
+ # @api private
48
49
  def template
49
50
  TemplateFinder.new(@view.class, @options).find
50
51
  end
51
52
 
53
+ # @api private
52
54
  def scope
53
55
  Scope.new(@view, @options[:locals])
54
56
  end
@@ -40,10 +40,12 @@ module Hanami
40
40
  end
41
41
 
42
42
  protected
43
+ # @api private
43
44
  def template_name
44
45
  @options[:template]
45
46
  end
46
47
 
48
+ # @api private
47
49
  def format
48
50
  @options[:format]
49
51
  end
@@ -4,30 +4,43 @@ module Hanami
4
4
  module View
5
5
  module Rendering
6
6
  # @since 0.2.0
7
+ # @api private
7
8
  class TemplateName
9
+ # @since 0.2.0
10
+ # @api private
8
11
  NAMESPACE_SEPARATOR = '::'.freeze
9
12
 
13
+ # @since 0.2.0
14
+ # @api private
10
15
  def initialize(name, namespace)
11
16
  @name = name
12
17
  compile!(namespace)
13
18
  end
14
19
 
20
+ # @since 0.2.0
21
+ # @api private
15
22
  def to_s
16
23
  @name
17
24
  end
18
25
 
19
26
  private
27
+ # @since 0.2.0
28
+ # @api private
20
29
  def compile!(namespace)
21
30
  tokens(namespace) {|token| replace!(token) }
22
31
  @name = Utils::String.new(@name).underscore
23
32
  end
24
33
 
34
+ # @since 0.2.0
35
+ # @api private
25
36
  def tokens(namespace)
26
37
  namespace.to_s.split(NAMESPACE_SEPARATOR).each do |token|
27
38
  yield token
28
39
  end
29
40
  end
30
41
 
42
+ # @since 0.2.0
43
+ # @api private
31
44
  def replace!(token)
32
45
  @name.gsub!(%r{\A#{ token }#{ NAMESPACE_SEPARATOR }}, '')
33
46
  end
@@ -10,6 +10,8 @@ module Hanami
10
10
  #
11
11
  # @see Hanami::View::Rendering::InstanceMethods
12
12
  module Rendering
13
+ # @since 0.1.0
14
+ # @api private
13
15
  def self.extended(base)
14
16
  base.class_eval do
15
17
  include InstanceMethods
@@ -281,6 +283,7 @@ module Hanami
281
283
  @registry ||= Registry.new(self)
282
284
  end
283
285
 
286
+ # @api private
284
287
  def load_registry!
285
288
  @registry = nil
286
289
  registry.freeze
@@ -3,6 +3,6 @@ module Hanami
3
3
  # Defines the version
4
4
  #
5
5
  # @since 0.1.0
6
- VERSION = '1.0.0.beta1'.freeze
6
+ VERSION = '1.0.0.beta2'.freeze
7
7
  end
8
8
  end
data/lib/hanami/view.rb CHANGED
@@ -11,6 +11,9 @@ require 'hanami/view/errors'
11
11
  require 'hanami/layout'
12
12
  require 'hanami/presenter'
13
13
 
14
+ # Hanami
15
+ #
16
+ # @since 0.1.0
14
17
  module Hanami
15
18
  # View
16
19
  #
@@ -103,7 +106,7 @@ module Hanami
103
106
  #
104
107
  # @return [Module] a copy of Hanami::View
105
108
  #
106
- # @since 0.2.0
109
+ # @since 0.2.0
107
110
  #
108
111
  # @see Hanami::View#dupe
109
112
  # @see Hanami::View::Configuration
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-view
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta1
4
+ version: 1.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-02-14 00:00:00.000000000 Z
13
+ date: 2017-03-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: tilt