hanami-view 1.0.0 → 1.0.1
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/hanami-view.gemspec +3 -3
- data/lib/hanami/view/errors.rb +17 -2
- data/lib/hanami/view/rendering/layout_scope.rb +16 -1
- data/lib/hanami/view/rendering/scope.rb +10 -2
- data/lib/hanami/view/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3f3b5a91fabf790905218d179350b9ca5b09ea5
|
4
|
+
data.tar.gz: 90708fec73255ef891fa0210527ea32bf49c82a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e414c7c8df49dfa4e33ff5e694baa9408ac8336aff315f631044ed8f86300dfbad8fdf066bed6e8227ba96d77c2e6e46cf20600d0cc7480e56ed83e55429f1f3
|
7
|
+
data.tar.gz: b21512ad851b40cd8dca788ff9c93ae98f40eec8a1087ee855e2c8858324543f45d3c403872b061f1c772f1a42d10332830f66f43607c3a2da7fec83b111f0b9
|
data/CHANGELOG.md
CHANGED
data/hanami-view.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_runtime_dependency 'tilt', '~> 2.0', '>= 2.0.1'
|
23
23
|
spec.add_runtime_dependency 'hanami-utils', '~> 1.0'
|
24
24
|
|
25
|
-
spec.add_development_dependency 'bundler',
|
26
|
-
spec.add_development_dependency '
|
27
|
-
spec.add_development_dependency 'rake',
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.5'
|
27
|
+
spec.add_development_dependency 'rake', '~> 11'
|
28
28
|
end
|
data/lib/hanami/view/errors.rb
CHANGED
@@ -26,7 +26,7 @@ module Hanami
|
|
26
26
|
|
27
27
|
# Missing format error
|
28
28
|
#
|
29
|
-
# This is raised at the runtime when rendering context lacks
|
29
|
+
# This is raised at the runtime when rendering context lacks the :format
|
30
30
|
# key.
|
31
31
|
#
|
32
32
|
# @since 0.1.0
|
@@ -37,7 +37,7 @@ module Hanami
|
|
37
37
|
|
38
38
|
# Missing template layout error
|
39
39
|
#
|
40
|
-
# This is raised at the runtime when Hanami::Layout cannot find
|
40
|
+
# This is raised at the runtime when Hanami::Layout cannot find its template.
|
41
41
|
#
|
42
42
|
# @since 0.5.0
|
43
43
|
class MissingTemplateLayoutError < Error
|
@@ -47,5 +47,20 @@ module Hanami
|
|
47
47
|
super("Can't find layout template '#{ template }'")
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
# Unknown or missing render type
|
52
|
+
#
|
53
|
+
# This is raised at the runtime when Hanami::Layout doesn't recognize the render type.
|
54
|
+
#
|
55
|
+
# @since X.X.X
|
56
|
+
class UnknownOrMissingRenderTypeLayoutError < Error
|
57
|
+
# @since X.X.X
|
58
|
+
# @api private
|
59
|
+
def initialize(known_types, supplied_options)
|
60
|
+
known_types_list = known_types.map{|t| "':#{t}'"}.join(', ')
|
61
|
+
supplied_options_list = supplied_options.keys.map{|t| "':#{t}'"}.join(', ')
|
62
|
+
super("Calls to `render` in a layout must include one of #{known_types_list}. Found #{supplied_options_list}.")
|
63
|
+
end
|
64
|
+
end
|
50
65
|
end
|
51
66
|
end
|
@@ -4,6 +4,14 @@ require 'hanami/utils/escape'
|
|
4
4
|
module Hanami
|
5
5
|
module View
|
6
6
|
module Rendering
|
7
|
+
|
8
|
+
# List of render types that exactly one of must be included when calling `#render`.
|
9
|
+
# For example, when calling `<%= render something: 'my_thing', locals: {} %>`,
|
10
|
+
# 'something' must be one of the values listed here.
|
11
|
+
#
|
12
|
+
# @since X.X.X
|
13
|
+
KNOWN_RENDER_TYPES = [:partial, :template]
|
14
|
+
|
7
15
|
# Scope for layout rendering
|
8
16
|
#
|
9
17
|
# @since 0.1.0
|
@@ -87,6 +95,9 @@ module Hanami
|
|
87
95
|
# #
|
88
96
|
# # `user` will be available in the scope of the sidebar rendering
|
89
97
|
def render(options)
|
98
|
+
if !KNOWN_RENDER_TYPES.any?{|render_type| options[render_type]}
|
99
|
+
::Kernel.raise UnknownOrMissingRenderTypeLayoutError.new(KNOWN_RENDER_TYPES, options)
|
100
|
+
end
|
90
101
|
renderer(options).render
|
91
102
|
end
|
92
103
|
|
@@ -213,7 +224,11 @@ module Hanami
|
|
213
224
|
# # `article` will be looked up in the view scope first.
|
214
225
|
# # If not found, it will be searched within the layout.
|
215
226
|
def method_missing(m, *args, &blk)
|
216
|
-
|
227
|
+
# FIXME: this isn't compatible with Hanami 2.0, as it extends a view
|
228
|
+
# that we want to be frozen in the future
|
229
|
+
#
|
230
|
+
# See https://github.com/hanami/view/issues/130#issuecomment-319326236
|
231
|
+
if @scope.respond_to?(m, true)
|
217
232
|
@scope.__send__(m, *args, &blk)
|
218
233
|
elsif layout.respond_to?(m)
|
219
234
|
layout.__send__(m, *args, &blk)
|
@@ -57,7 +57,11 @@ module Hanami
|
|
57
57
|
#
|
58
58
|
# @see http://ruby-doc.org/core/Object.html#method-i-respond_to_missing-3F
|
59
59
|
def respond_to_missing?(m, include_all)
|
60
|
-
|
60
|
+
# FIXME: this isn't compatible with Hanami 2.0, as it extends a view
|
61
|
+
# that we want to be frozen in the future
|
62
|
+
#
|
63
|
+
# See https://github.com/hanami/view/issues/130#issuecomment-319326236
|
64
|
+
@view.respond_to?(m, include_all) ||
|
61
65
|
@locals.key?(m)
|
62
66
|
end
|
63
67
|
|
@@ -65,7 +69,11 @@ module Hanami
|
|
65
69
|
# @api private
|
66
70
|
def method_missing(m, *args, &block)
|
67
71
|
::Hanami::View::Escape.html(
|
68
|
-
|
72
|
+
# FIXME: this isn't compatible with Hanami 2.0, as it extends a view
|
73
|
+
# that we want to be frozen in the future
|
74
|
+
#
|
75
|
+
# See https://github.com/hanami/view/issues/130#issuecomment-319326236
|
76
|
+
if @view.respond_to?(m, true)
|
69
77
|
@view.__send__ m, *args, &block
|
70
78
|
elsif @locals.key?(m)
|
71
79
|
@locals[m]
|
data/lib/hanami/view/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-view
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04
|
11
|
+
date: 2017-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tilt
|
@@ -59,19 +59,19 @@ dependencies:
|
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '1.5'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: rspec
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '5'
|
67
|
+
version: '3.5'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '5'
|
74
|
+
version: '3.5'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rake
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|