dry-view 0.5.3 → 0.6.0
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/.codeclimate.yml +18 -0
- data/.travis.yml +15 -10
- data/.yardopts +5 -0
- data/CHANGELOG.md +60 -1
- data/Gemfile +15 -5
- data/README.md +38 -13
- data/bin/setup +5 -0
- data/bin/setup_helpers.rb +27 -0
- data/dry-view.gemspec +8 -9
- data/lib/dry-view.rb +3 -1
- data/lib/dry/view.rb +503 -2
- data/lib/dry/view/context.rb +80 -0
- data/lib/dry/view/decorated_attributes.rb +81 -0
- data/lib/dry/view/exposure.rb +15 -2
- data/lib/dry/view/exposures.rb +15 -5
- data/lib/dry/view/part.rb +154 -61
- data/lib/dry/view/part_builder.rb +136 -0
- data/lib/dry/view/path.rb +22 -5
- data/lib/dry/view/render_environment.rb +62 -0
- data/lib/dry/view/render_environment_missing.rb +44 -0
- data/lib/dry/view/rendered.rb +55 -0
- data/lib/dry/view/renderer.rb +22 -19
- data/lib/dry/view/scope.rb +146 -14
- data/lib/dry/view/scope_builder.rb +98 -0
- data/lib/dry/view/tilt.rb +78 -0
- data/lib/dry/view/tilt/erb.rb +26 -0
- data/lib/dry/view/tilt/erbse.rb +21 -0
- data/lib/dry/view/tilt/haml.rb +26 -0
- data/lib/dry/view/version.rb +5 -2
- metadata +50 -88
- data/benchmarks/templates/button.html.erb +0 -1
- data/benchmarks/view.rb +0 -24
- data/lib/dry/view/controller.rb +0 -159
- data/lib/dry/view/decorator.rb +0 -45
- data/lib/dry/view/missing_renderer.rb +0 -15
- data/spec/fixtures/templates/_hello.html.slim +0 -1
- data/spec/fixtures/templates/controller_renderer_options.html.erb +0 -3
- data/spec/fixtures/templates/decorated_parts.html.slim +0 -4
- data/spec/fixtures/templates/edit.html.slim +0 -11
- data/spec/fixtures/templates/empty.html.slim +0 -1
- data/spec/fixtures/templates/greeting.html.slim +0 -2
- data/spec/fixtures/templates/hello.html.slim +0 -1
- data/spec/fixtures/templates/layouts/app.html.slim +0 -6
- data/spec/fixtures/templates/layouts/app.txt.erb +0 -3
- data/spec/fixtures/templates/parts_with_args.html.slim +0 -3
- data/spec/fixtures/templates/parts_with_args/_box.html.slim +0 -3
- data/spec/fixtures/templates/shared/_index_table.html.slim +0 -2
- data/spec/fixtures/templates/shared/_shared_hello.html.slim +0 -1
- data/spec/fixtures/templates/tasks.html.slim +0 -3
- data/spec/fixtures/templates/user.html.slim +0 -2
- data/spec/fixtures/templates/users.html.slim +0 -5
- data/spec/fixtures/templates/users.txt.erb +0 -3
- data/spec/fixtures/templates/users/_row.html.slim +0 -2
- data/spec/fixtures/templates/users/_tbody.html.slim +0 -5
- data/spec/fixtures/templates/users_with_count.html.slim +0 -5
- data/spec/fixtures/templates/users_with_count_inherit.html.slim +0 -6
- data/spec/fixtures/templates_override/_hello.html.slim +0 -1
- data/spec/fixtures/templates_override/users.html.slim +0 -5
- data/spec/integration/decorator_spec.rb +0 -80
- data/spec/integration/exposures_spec.rb +0 -392
- data/spec/integration/part/decorated_attributes_spec.rb +0 -193
- data/spec/integration/view_spec.rb +0 -133
- data/spec/spec_helper.rb +0 -46
- data/spec/unit/controller_spec.rb +0 -83
- data/spec/unit/decorator_spec.rb +0 -61
- data/spec/unit/exposure_spec.rb +0 -227
- data/spec/unit/exposures_spec.rb +0 -103
- data/spec/unit/part_spec.rb +0 -104
- data/spec/unit/renderer_spec.rb +0 -57
- data/spec/unit/scope_spec.rb +0 -53
@@ -0,0 +1,98 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry/core/cache"
|
4
|
+
require "dry/equalizer"
|
5
|
+
require_relative "scope"
|
6
|
+
|
7
|
+
module Dry
|
8
|
+
class View
|
9
|
+
# Builds scope objects via matching classes
|
10
|
+
#
|
11
|
+
# @api private
|
12
|
+
class ScopeBuilder
|
13
|
+
extend Dry::Core::Cache
|
14
|
+
include Dry::Equalizer(:namespace)
|
15
|
+
|
16
|
+
# The view's configured `scope_namespace`
|
17
|
+
#
|
18
|
+
# @api private
|
19
|
+
attr_reader :namespace
|
20
|
+
|
21
|
+
# @return [RenderEnvironment]
|
22
|
+
#
|
23
|
+
# @api private
|
24
|
+
attr_reader :render_env
|
25
|
+
|
26
|
+
# Returns a new instance of ScopeBuilder
|
27
|
+
#
|
28
|
+
# @api private
|
29
|
+
def initialize(namespace: nil, render_env: nil)
|
30
|
+
@namespace = namespace
|
31
|
+
@render_env = render_env
|
32
|
+
end
|
33
|
+
|
34
|
+
# @api private
|
35
|
+
def for_render_env(render_env)
|
36
|
+
return self if render_env == self.render_env
|
37
|
+
|
38
|
+
self.class.new(namespace: namespace, render_env: render_env)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Returns a new scope using a class matching the name
|
42
|
+
#
|
43
|
+
# @param name [Symbol, Class] scope name
|
44
|
+
# @param locals [Hash<Symbol, Object>] locals hash
|
45
|
+
#
|
46
|
+
# @return [Dry::View::Scope]
|
47
|
+
#
|
48
|
+
# @api private
|
49
|
+
def call(name = nil, locals)
|
50
|
+
scope_class(name).new(
|
51
|
+
name: name,
|
52
|
+
locals: locals,
|
53
|
+
render_env: render_env,
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
DEFAULT_SCOPE_CLASS = Scope
|
60
|
+
|
61
|
+
def scope_class(name = nil)
|
62
|
+
if name.nil?
|
63
|
+
DEFAULT_SCOPE_CLASS
|
64
|
+
elsif name.is_a?(Class)
|
65
|
+
name
|
66
|
+
else
|
67
|
+
fetch_or_store(namespace, name) do
|
68
|
+
resolve_scope_class(name: name)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def resolve_scope_class(name:)
|
74
|
+
name = inflector.camelize(name.to_s)
|
75
|
+
|
76
|
+
# Give autoloaders a chance to act
|
77
|
+
begin
|
78
|
+
klass = namespace.const_get(name)
|
79
|
+
rescue NameError
|
80
|
+
end
|
81
|
+
|
82
|
+
if !klass && namespace.const_defined?(name, false)
|
83
|
+
klass = namespace.const_get(name)
|
84
|
+
end
|
85
|
+
|
86
|
+
if klass && klass < Scope
|
87
|
+
klass
|
88
|
+
else
|
89
|
+
DEFAULT_SCOPE_CLASS
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def inflector
|
94
|
+
render_env.inflector
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry/core/cache"
|
4
|
+
require "tilt"
|
5
|
+
|
6
|
+
module Dry
|
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(%r{^.}, "").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 Dry
|
4
|
+
class View
|
5
|
+
module Tilt
|
6
|
+
module ERB
|
7
|
+
def self.requirements
|
8
|
+
["dry/view/tilt/erbse", <<~ERROR]
|
9
|
+
dry-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
|
+
Dry::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 Dry
|
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 Dry
|
4
|
+
class View
|
5
|
+
module Tilt
|
6
|
+
module Haml
|
7
|
+
def self.requirements
|
8
|
+
["hamlit/block", <<~ERROR]
|
9
|
+
dry-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
|
+
Dry::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/dry/view/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-view
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Piotr Solnica
|
8
7
|
- Tim Riley
|
8
|
+
- Piotr Solnica
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|
@@ -18,6 +18,9 @@ dependencies:
|
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '2.0'
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.0.6
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -25,6 +28,9 @@ dependencies:
|
|
25
28
|
- - "~>"
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '2.0'
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.6
|
28
34
|
- !ruby/object:Gem::Dependency
|
29
35
|
name: dry-core
|
30
36
|
requirement: !ruby/object:Gem::Requirement
|
@@ -68,19 +74,33 @@ dependencies:
|
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0.2'
|
70
76
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
77
|
+
name: dry-inflector
|
72
78
|
requirement: !ruby/object:Gem::Requirement
|
73
79
|
requirements:
|
74
80
|
- - "~>"
|
75
81
|
- !ruby/object:Gem::Version
|
76
|
-
version: '1
|
77
|
-
type: :
|
82
|
+
version: '0.1'
|
83
|
+
type: :runtime
|
78
84
|
prerelease: false
|
79
85
|
version_requirements: !ruby/object:Gem::Requirement
|
80
86
|
requirements:
|
81
87
|
- - "~>"
|
82
88
|
- !ruby/object:Gem::Version
|
83
|
-
version: '1
|
89
|
+
version: '0.1'
|
90
|
+
- !ruby/object:Gem::Dependency
|
91
|
+
name: bundler
|
92
|
+
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
type: :development
|
98
|
+
prerelease: false
|
99
|
+
version_requirements: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
84
104
|
- !ruby/object:Gem::Dependency
|
85
105
|
name: rake
|
86
106
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,75 +129,51 @@ dependencies:
|
|
109
129
|
- - "~>"
|
110
130
|
- !ruby/object:Gem::Version
|
111
131
|
version: '3.1'
|
112
|
-
description:
|
132
|
+
description: A complete, standalone view rendering system that gives you everything
|
133
|
+
you need to write well-factored view code
|
113
134
|
email:
|
114
|
-
- piotr.solnica@gmail.com
|
115
135
|
- tim@icelab.com.au
|
136
|
+
- piotr.solnica@gmail.com
|
116
137
|
executables: []
|
117
138
|
extensions: []
|
118
139
|
extra_rdoc_files: []
|
119
140
|
files:
|
141
|
+
- ".codeclimate.yml"
|
120
142
|
- ".gitignore"
|
121
143
|
- ".rspec"
|
122
144
|
- ".travis.yml"
|
145
|
+
- ".yardopts"
|
123
146
|
- CHANGELOG.md
|
124
147
|
- CONTRIBUTING.md
|
125
148
|
- Gemfile
|
126
149
|
- LICENSE.md
|
127
150
|
- README.md
|
128
151
|
- Rakefile
|
129
|
-
- benchmarks/templates/button.html.erb
|
130
|
-
- benchmarks/view.rb
|
131
152
|
- bin/console
|
153
|
+
- bin/setup
|
154
|
+
- bin/setup_helpers.rb
|
132
155
|
- dry-view.gemspec
|
133
156
|
- lib/dry-view.rb
|
134
157
|
- lib/dry/view.rb
|
135
|
-
- lib/dry/view/
|
136
|
-
- lib/dry/view/
|
158
|
+
- lib/dry/view/context.rb
|
159
|
+
- lib/dry/view/decorated_attributes.rb
|
137
160
|
- lib/dry/view/exposure.rb
|
138
161
|
- lib/dry/view/exposures.rb
|
139
|
-
- lib/dry/view/missing_renderer.rb
|
140
162
|
- lib/dry/view/part.rb
|
163
|
+
- lib/dry/view/part_builder.rb
|
141
164
|
- lib/dry/view/path.rb
|
165
|
+
- lib/dry/view/render_environment.rb
|
166
|
+
- lib/dry/view/render_environment_missing.rb
|
167
|
+
- lib/dry/view/rendered.rb
|
142
168
|
- lib/dry/view/renderer.rb
|
143
169
|
- lib/dry/view/scope.rb
|
170
|
+
- lib/dry/view/scope_builder.rb
|
171
|
+
- lib/dry/view/tilt.rb
|
172
|
+
- lib/dry/view/tilt/erb.rb
|
173
|
+
- lib/dry/view/tilt/erbse.rb
|
174
|
+
- lib/dry/view/tilt/haml.rb
|
144
175
|
- lib/dry/view/version.rb
|
145
|
-
-
|
146
|
-
- spec/fixtures/templates/controller_renderer_options.html.erb
|
147
|
-
- spec/fixtures/templates/decorated_parts.html.slim
|
148
|
-
- spec/fixtures/templates/edit.html.slim
|
149
|
-
- spec/fixtures/templates/empty.html.slim
|
150
|
-
- spec/fixtures/templates/greeting.html.slim
|
151
|
-
- spec/fixtures/templates/hello.html.slim
|
152
|
-
- spec/fixtures/templates/layouts/app.html.slim
|
153
|
-
- spec/fixtures/templates/layouts/app.txt.erb
|
154
|
-
- spec/fixtures/templates/parts_with_args.html.slim
|
155
|
-
- spec/fixtures/templates/parts_with_args/_box.html.slim
|
156
|
-
- spec/fixtures/templates/shared/_index_table.html.slim
|
157
|
-
- spec/fixtures/templates/shared/_shared_hello.html.slim
|
158
|
-
- spec/fixtures/templates/tasks.html.slim
|
159
|
-
- spec/fixtures/templates/user.html.slim
|
160
|
-
- spec/fixtures/templates/users.html.slim
|
161
|
-
- spec/fixtures/templates/users.txt.erb
|
162
|
-
- spec/fixtures/templates/users/_row.html.slim
|
163
|
-
- spec/fixtures/templates/users/_tbody.html.slim
|
164
|
-
- spec/fixtures/templates/users_with_count.html.slim
|
165
|
-
- spec/fixtures/templates/users_with_count_inherit.html.slim
|
166
|
-
- spec/fixtures/templates_override/_hello.html.slim
|
167
|
-
- spec/fixtures/templates_override/users.html.slim
|
168
|
-
- spec/integration/decorator_spec.rb
|
169
|
-
- spec/integration/exposures_spec.rb
|
170
|
-
- spec/integration/part/decorated_attributes_spec.rb
|
171
|
-
- spec/integration/view_spec.rb
|
172
|
-
- spec/spec_helper.rb
|
173
|
-
- spec/unit/controller_spec.rb
|
174
|
-
- spec/unit/decorator_spec.rb
|
175
|
-
- spec/unit/exposure_spec.rb
|
176
|
-
- spec/unit/exposures_spec.rb
|
177
|
-
- spec/unit/part_spec.rb
|
178
|
-
- spec/unit/renderer_spec.rb
|
179
|
-
- spec/unit/scope_spec.rb
|
180
|
-
homepage: https://github.com/dry-rb/dry-view
|
176
|
+
homepage: https://dry-rb.org/gems/dry-view
|
181
177
|
licenses:
|
182
178
|
- MIT
|
183
179
|
metadata: {}
|
@@ -197,43 +193,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
193
|
version: '0'
|
198
194
|
requirements: []
|
199
195
|
rubyforge_project:
|
200
|
-
rubygems_version: 2.7.
|
196
|
+
rubygems_version: 2.7.3
|
201
197
|
signing_key:
|
202
198
|
specification_version: 4
|
203
|
-
summary:
|
204
|
-
|
205
|
-
|
206
|
-
- spec/fixtures/templates/controller_renderer_options.html.erb
|
207
|
-
- spec/fixtures/templates/decorated_parts.html.slim
|
208
|
-
- spec/fixtures/templates/edit.html.slim
|
209
|
-
- spec/fixtures/templates/empty.html.slim
|
210
|
-
- spec/fixtures/templates/greeting.html.slim
|
211
|
-
- spec/fixtures/templates/hello.html.slim
|
212
|
-
- spec/fixtures/templates/layouts/app.html.slim
|
213
|
-
- spec/fixtures/templates/layouts/app.txt.erb
|
214
|
-
- spec/fixtures/templates/parts_with_args.html.slim
|
215
|
-
- spec/fixtures/templates/parts_with_args/_box.html.slim
|
216
|
-
- spec/fixtures/templates/shared/_index_table.html.slim
|
217
|
-
- spec/fixtures/templates/shared/_shared_hello.html.slim
|
218
|
-
- spec/fixtures/templates/tasks.html.slim
|
219
|
-
- spec/fixtures/templates/user.html.slim
|
220
|
-
- spec/fixtures/templates/users.html.slim
|
221
|
-
- spec/fixtures/templates/users.txt.erb
|
222
|
-
- spec/fixtures/templates/users/_row.html.slim
|
223
|
-
- spec/fixtures/templates/users/_tbody.html.slim
|
224
|
-
- spec/fixtures/templates/users_with_count.html.slim
|
225
|
-
- spec/fixtures/templates/users_with_count_inherit.html.slim
|
226
|
-
- spec/fixtures/templates_override/_hello.html.slim
|
227
|
-
- spec/fixtures/templates_override/users.html.slim
|
228
|
-
- spec/integration/decorator_spec.rb
|
229
|
-
- spec/integration/exposures_spec.rb
|
230
|
-
- spec/integration/part/decorated_attributes_spec.rb
|
231
|
-
- spec/integration/view_spec.rb
|
232
|
-
- spec/spec_helper.rb
|
233
|
-
- spec/unit/controller_spec.rb
|
234
|
-
- spec/unit/decorator_spec.rb
|
235
|
-
- spec/unit/exposure_spec.rb
|
236
|
-
- spec/unit/exposures_spec.rb
|
237
|
-
- spec/unit/part_spec.rb
|
238
|
-
- spec/unit/renderer_spec.rb
|
239
|
-
- spec/unit/scope_spec.rb
|
199
|
+
summary: A complete, standalone view rendering system that gives you everything you
|
200
|
+
need to write well-factored view code
|
201
|
+
test_files: []
|