hanami-view 1.3.0.beta1 → 2.0.0.alpha2
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 +21 -0
- data/LICENSE +20 -0
- data/README.md +20 -862
- data/hanami-view.gemspec +26 -16
- data/lib/hanami-view.rb +3 -1
- data/lib/hanami/view.rb +208 -223
- data/lib/hanami/view/application_configuration.rb +77 -0
- data/lib/hanami/view/application_context.rb +35 -0
- data/lib/hanami/view/application_view.rb +89 -0
- data/lib/hanami/view/context.rb +97 -0
- data/lib/hanami/view/context_helpers/content_helpers.rb +26 -0
- data/lib/hanami/view/decorated_attributes.rb +82 -0
- data/lib/hanami/view/errors.rb +19 -56
- data/lib/hanami/view/exposure.rb +126 -0
- data/lib/hanami/view/exposures.rb +74 -0
- data/lib/hanami/view/part.rb +217 -0
- data/lib/hanami/view/part_builder.rb +140 -0
- data/lib/hanami/view/path.rb +68 -0
- data/lib/hanami/view/render_environment.rb +62 -0
- data/lib/hanami/view/render_environment_missing.rb +44 -0
- data/lib/hanami/view/rendered.rb +55 -0
- data/lib/hanami/view/renderer.rb +79 -0
- data/lib/hanami/view/scope.rb +189 -0
- data/lib/hanami/view/scope_builder.rb +98 -0
- data/lib/hanami/view/standalone_view.rb +396 -0
- data/lib/hanami/view/tilt.rb +78 -0
- data/lib/hanami/view/tilt/erb.rb +26 -0
- data/lib/hanami/view/tilt/erbse.rb +21 -0
- data/lib/hanami/view/tilt/haml.rb +26 -0
- data/lib/hanami/view/version.rb +5 -5
- metadata +113 -63
- data/LICENSE.md +0 -22
- data/lib/hanami/layout.rb +0 -172
- data/lib/hanami/presenter.rb +0 -98
- data/lib/hanami/view/configuration.rb +0 -504
- data/lib/hanami/view/dsl.rb +0 -347
- data/lib/hanami/view/escape.rb +0 -225
- data/lib/hanami/view/inheritable.rb +0 -54
- data/lib/hanami/view/rendering.rb +0 -294
- data/lib/hanami/view/rendering/layout_finder.rb +0 -128
- data/lib/hanami/view/rendering/layout_registry.rb +0 -69
- data/lib/hanami/view/rendering/layout_scope.rb +0 -274
- data/lib/hanami/view/rendering/null_layout.rb +0 -52
- data/lib/hanami/view/rendering/null_local.rb +0 -82
- data/lib/hanami/view/rendering/null_template.rb +0 -83
- data/lib/hanami/view/rendering/options.rb +0 -24
- data/lib/hanami/view/rendering/partial.rb +0 -31
- data/lib/hanami/view/rendering/partial_file.rb +0 -29
- data/lib/hanami/view/rendering/partial_finder.rb +0 -75
- data/lib/hanami/view/rendering/partial_templates_finder.rb +0 -73
- data/lib/hanami/view/rendering/registry.rb +0 -134
- data/lib/hanami/view/rendering/scope.rb +0 -108
- data/lib/hanami/view/rendering/subscope.rb +0 -56
- data/lib/hanami/view/rendering/template.rb +0 -69
- data/lib/hanami/view/rendering/template_finder.rb +0 -55
- data/lib/hanami/view/rendering/template_name.rb +0 -50
- data/lib/hanami/view/rendering/templates_finder.rb +0 -144
- data/lib/hanami/view/rendering/view_finder.rb +0 -37
- data/lib/hanami/view/template.rb +0 -57
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry/core/cache"
|
4
|
+
require "tilt"
|
5
|
+
|
6
|
+
module Hanami
|
7
|
+
class View
|
8
|
+
# @api private
|
9
|
+
module Tilt
|
10
|
+
extend Dry::Core::Cache
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def [](path, mapping, **options)
|
14
|
+
ext = File.extname(path).sub(/^./, "").to_sym
|
15
|
+
activate_adapter ext
|
16
|
+
|
17
|
+
with_mapping(mapping).new(path, **options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def default_mapping
|
21
|
+
::Tilt.default_mapping
|
22
|
+
end
|
23
|
+
|
24
|
+
def register_adapter(ext, adapter)
|
25
|
+
adapters[ext] = adapter
|
26
|
+
end
|
27
|
+
|
28
|
+
def deregister_adapter(ext)
|
29
|
+
adapters.delete(ext)
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def adapters
|
35
|
+
@adapters ||= {}
|
36
|
+
end
|
37
|
+
|
38
|
+
def activate_adapter(ext)
|
39
|
+
fetch_or_store(:adapter, ext) {
|
40
|
+
adapter = adapters[ext]
|
41
|
+
return unless adapter
|
42
|
+
|
43
|
+
*requires, error_message = adapter.requirements
|
44
|
+
|
45
|
+
begin
|
46
|
+
requires.each(&method(:require))
|
47
|
+
rescue LoadError => e
|
48
|
+
raise e, "#{e.message}\n\n#{error_message}"
|
49
|
+
end
|
50
|
+
|
51
|
+
adapter.activate
|
52
|
+
}
|
53
|
+
end
|
54
|
+
|
55
|
+
def with_mapping(mapping)
|
56
|
+
fetch_or_store(:mapping, mapping) {
|
57
|
+
if mapping.any?
|
58
|
+
build_mapping(mapping)
|
59
|
+
else
|
60
|
+
default_mapping
|
61
|
+
end
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def build_mapping(mapping)
|
66
|
+
default_mapping.dup.tap do |new_mapping|
|
67
|
+
mapping.each do |extension, template_class|
|
68
|
+
new_mapping.register template_class, extension
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
require_relative "tilt/erb"
|
78
|
+
require_relative "tilt/haml"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Hanami
|
4
|
+
class View
|
5
|
+
module Tilt
|
6
|
+
module ERB
|
7
|
+
def self.requirements
|
8
|
+
["hanami/view/tilt/erbse", <<~ERROR]
|
9
|
+
hanami-view requires erbse for full compatibility when rendering .erb templates (e.g. implicitly capturing block content when yielding)
|
10
|
+
|
11
|
+
To ignore this and use another engine for .erb templates, deregister this adapter before calling your views:
|
12
|
+
|
13
|
+
Hanami::View::Tilt.deregister_adapter(:erb)
|
14
|
+
ERROR
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.activate
|
18
|
+
Tilt.default_mapping.register ErbseTemplate, "erb"
|
19
|
+
self
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
register_adapter :erb, ERB
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "tilt/template"
|
4
|
+
require "erbse"
|
5
|
+
|
6
|
+
module Hanami
|
7
|
+
class View
|
8
|
+
module Tilt
|
9
|
+
# Tilt template class copied from cells-erb gem
|
10
|
+
class ErbseTemplate < ::Tilt::Template
|
11
|
+
def prepare
|
12
|
+
@template = ::Erbse::Engine.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def precompiled_template(_locals)
|
16
|
+
@template.call(data)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Hanami
|
4
|
+
class View
|
5
|
+
module Tilt
|
6
|
+
module Haml
|
7
|
+
def self.requirements
|
8
|
+
["hamlit/block", <<~ERROR]
|
9
|
+
hanami-view requires hamlit-block for full compatibility when rendering .haml templates (e.g. implicitly capturing block content when yielding)
|
10
|
+
|
11
|
+
To ignore this and use another engine for .haml templates, dereigster this adapter before calling your views:
|
12
|
+
|
13
|
+
Hanami::View::Tilt.deregister_adatper(:haml)
|
14
|
+
ERROR
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.activate
|
18
|
+
# Requiring hamlit/block will register the engine with Tilt
|
19
|
+
self
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
register_adapter :haml, Haml
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/hanami/view/version.rb
CHANGED
metadata
CHANGED
@@ -1,138 +1,188 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-view
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.alpha2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
|
7
|
+
- Tim Riley
|
8
|
+
- Piotr Solnica
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2021-05-04 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: concurrent-ruby
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
+
version: '1.0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: dry-configurable
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0.1'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0.1'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: dry-core
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0.5'
|
20
49
|
- - ">="
|
21
50
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
51
|
+
version: '0.5'
|
23
52
|
type: :runtime
|
24
53
|
prerelease: false
|
25
54
|
version_requirements: !ruby/object:Gem::Requirement
|
26
55
|
requirements:
|
27
56
|
- - "~>"
|
28
57
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
58
|
+
version: '0.5'
|
30
59
|
- - ">="
|
31
60
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
61
|
+
version: '0.5'
|
33
62
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
63
|
+
name: dry-inflector
|
35
64
|
requirement: !ruby/object:Gem::Requirement
|
36
65
|
requirements:
|
37
66
|
- - "~>"
|
38
67
|
- !ruby/object:Gem::Version
|
39
|
-
version: 1
|
68
|
+
version: '0.1'
|
40
69
|
type: :runtime
|
41
70
|
prerelease: false
|
42
71
|
version_requirements: !ruby/object:Gem::Requirement
|
43
72
|
requirements:
|
44
73
|
- - "~>"
|
45
74
|
- !ruby/object:Gem::Version
|
46
|
-
version: 1
|
75
|
+
version: '0.1'
|
47
76
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
77
|
+
name: tilt
|
49
78
|
requirement: !ruby/object:Gem::Requirement
|
50
79
|
requirements:
|
51
80
|
- - "~>"
|
52
81
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
-
|
82
|
+
version: '2.0'
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.0.6
|
86
|
+
type: :runtime
|
55
87
|
prerelease: false
|
56
88
|
version_requirements: !ruby/object:Gem::Requirement
|
57
89
|
requirements:
|
58
90
|
- - "~>"
|
59
91
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
92
|
+
version: '2.0'
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 2.0.6
|
61
96
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
97
|
+
name: bundler
|
63
98
|
requirement: !ruby/object:Gem::Requirement
|
64
99
|
requirements:
|
65
|
-
- - "
|
100
|
+
- - ">="
|
66
101
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
102
|
+
version: '0'
|
68
103
|
type: :development
|
69
104
|
prerelease: false
|
70
105
|
version_requirements: !ruby/object:Gem::Requirement
|
71
106
|
requirements:
|
72
|
-
- - "
|
107
|
+
- - ">="
|
73
108
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
109
|
+
version: '0'
|
75
110
|
- !ruby/object:Gem::Dependency
|
76
111
|
name: rake
|
77
112
|
requirement: !ruby/object:Gem::Requirement
|
78
113
|
requirements:
|
79
|
-
- - "
|
114
|
+
- - ">="
|
80
115
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
116
|
+
version: '0'
|
82
117
|
type: :development
|
83
118
|
prerelease: false
|
84
119
|
version_requirements: !ruby/object:Gem::Requirement
|
85
120
|
requirements:
|
86
|
-
- - "
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rspec
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
type: :development
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
87
136
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
89
|
-
description:
|
137
|
+
version: '0'
|
138
|
+
description: A complete, standalone view rendering system that gives you everything
|
139
|
+
you need to write well-factored view code
|
90
140
|
email:
|
91
|
-
-
|
141
|
+
- tim@icelab.com.au
|
142
|
+
- piotr.solnica@gmail.com
|
92
143
|
executables: []
|
93
144
|
extensions: []
|
94
145
|
extra_rdoc_files: []
|
95
146
|
files:
|
96
147
|
- CHANGELOG.md
|
97
|
-
- LICENSE
|
148
|
+
- LICENSE
|
98
149
|
- README.md
|
99
150
|
- hanami-view.gemspec
|
100
151
|
- lib/hanami-view.rb
|
101
|
-
- lib/hanami/layout.rb
|
102
|
-
- lib/hanami/presenter.rb
|
103
152
|
- lib/hanami/view.rb
|
104
|
-
- lib/hanami/view/
|
105
|
-
- lib/hanami/view/
|
153
|
+
- lib/hanami/view/application_configuration.rb
|
154
|
+
- lib/hanami/view/application_context.rb
|
155
|
+
- lib/hanami/view/application_view.rb
|
156
|
+
- lib/hanami/view/context.rb
|
157
|
+
- lib/hanami/view/context_helpers/content_helpers.rb
|
158
|
+
- lib/hanami/view/decorated_attributes.rb
|
106
159
|
- lib/hanami/view/errors.rb
|
107
|
-
- lib/hanami/view/
|
108
|
-
- lib/hanami/view/
|
109
|
-
- lib/hanami/view/
|
110
|
-
- lib/hanami/view/
|
111
|
-
- lib/hanami/view/
|
112
|
-
- lib/hanami/view/
|
113
|
-
- lib/hanami/view/
|
114
|
-
- lib/hanami/view/
|
115
|
-
- lib/hanami/view/
|
116
|
-
- lib/hanami/view/
|
117
|
-
- lib/hanami/view/
|
118
|
-
- lib/hanami/view/
|
119
|
-
- lib/hanami/view/
|
120
|
-
- lib/hanami/view/
|
121
|
-
- lib/hanami/view/
|
122
|
-
- lib/hanami/view/
|
123
|
-
- lib/hanami/view/rendering/subscope.rb
|
124
|
-
- lib/hanami/view/rendering/template.rb
|
125
|
-
- lib/hanami/view/rendering/template_finder.rb
|
126
|
-
- lib/hanami/view/rendering/template_name.rb
|
127
|
-
- lib/hanami/view/rendering/templates_finder.rb
|
128
|
-
- lib/hanami/view/rendering/view_finder.rb
|
129
|
-
- lib/hanami/view/template.rb
|
160
|
+
- lib/hanami/view/exposure.rb
|
161
|
+
- lib/hanami/view/exposures.rb
|
162
|
+
- lib/hanami/view/part.rb
|
163
|
+
- lib/hanami/view/part_builder.rb
|
164
|
+
- lib/hanami/view/path.rb
|
165
|
+
- lib/hanami/view/render_environment.rb
|
166
|
+
- lib/hanami/view/render_environment_missing.rb
|
167
|
+
- lib/hanami/view/rendered.rb
|
168
|
+
- lib/hanami/view/renderer.rb
|
169
|
+
- lib/hanami/view/scope.rb
|
170
|
+
- lib/hanami/view/scope_builder.rb
|
171
|
+
- lib/hanami/view/standalone_view.rb
|
172
|
+
- lib/hanami/view/tilt.rb
|
173
|
+
- lib/hanami/view/tilt/erb.rb
|
174
|
+
- lib/hanami/view/tilt/erbse.rb
|
175
|
+
- lib/hanami/view/tilt/haml.rb
|
130
176
|
- lib/hanami/view/version.rb
|
131
|
-
homepage:
|
177
|
+
homepage: https://dry-rb.org/gems/hanami-view
|
132
178
|
licenses:
|
133
179
|
- MIT
|
134
|
-
metadata:
|
135
|
-
|
180
|
+
metadata:
|
181
|
+
allowed_push_host: https://rubygems.org
|
182
|
+
changelog_uri: https://github.com/hanami/view/blob/master/CHANGELOG.md
|
183
|
+
source_code_uri: https://github.com/hanami/view
|
184
|
+
bug_tracker_uri: https://github.com/hanami/view/issues
|
185
|
+
post_install_message:
|
136
186
|
rdoc_options: []
|
137
187
|
require_paths:
|
138
188
|
- lib
|
@@ -140,16 +190,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
190
|
requirements:
|
141
191
|
- - ">="
|
142
192
|
- !ruby/object:Gem::Version
|
143
|
-
version: 2.
|
193
|
+
version: 2.4.0
|
144
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
195
|
requirements:
|
146
196
|
- - ">"
|
147
197
|
- !ruby/object:Gem::Version
|
148
198
|
version: 1.3.1
|
149
199
|
requirements: []
|
150
|
-
|
151
|
-
|
152
|
-
signing_key:
|
200
|
+
rubygems_version: 3.2.4
|
201
|
+
signing_key:
|
153
202
|
specification_version: 4
|
154
|
-
summary:
|
203
|
+
summary: A complete, standalone view rendering system that gives you everything you
|
204
|
+
need to write well-factored view code
|
155
205
|
test_files: []
|
data/LICENSE.md
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Copyright (c) 2014-2017 Luca Guidi
|
2
|
-
|
3
|
-
MIT License
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
a copy of this software and associated documentation files (the
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
12
|
-
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
included in all copies or substantial portions of the Software.
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|