papercraft 0.13 → 0.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/papercraft/component.rb +6 -14
- data/lib/papercraft/renderer.rb +11 -10
- data/lib/papercraft/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ecbcde7e33f35958acc4ca0c5c0623468563f14322675a3c7315ed92e0b289c
|
4
|
+
data.tar.gz: 5f6bdcdee15ef9ca04bc982405bd07ea3da49c4a43fbd8fd95a70494e0c43dab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7496b82113125d5f20287cb8b2f6607acfe7c16dda2a4670152867a175c877c33865f85ad155e733509b55e36067d0c3ea60578bf55f041e95bb46e3c1fa84f9
|
7
|
+
data.tar.gz: 91d5a7059eaf4b760412d9440f8ae08b48486c6ca6fc423a1ce32eb61a9a376385b4830b88b8a2ca1721971c48e4525a99d732d7650522fa71a55654c63aae86
|
data/CHANGELOG.md
CHANGED
data/lib/papercraft/component.rb
CHANGED
@@ -106,11 +106,8 @@ module Papercraft
|
|
106
106
|
template = self
|
107
107
|
Renderer.verify_proc_parameters(template, a, b)
|
108
108
|
renderer_class.new do
|
109
|
-
if block
|
110
|
-
|
111
|
-
else
|
112
|
-
instance_exec(*a, **b, &template)
|
113
|
-
end
|
109
|
+
push_emit_yield_block(block) if block
|
110
|
+
instance_exec(*a, **b, &template)
|
114
111
|
end.to_s
|
115
112
|
rescue ArgumentError => e
|
116
113
|
raise Papercraft::Error, e.message
|
@@ -136,15 +133,10 @@ module Papercraft
|
|
136
133
|
# @return [Papercraft::Component] applied component
|
137
134
|
def apply(*a, **b, &block)
|
138
135
|
template = self
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
else
|
144
|
-
Component.new(&proc do |*x, **y|
|
145
|
-
instance_exec(*a, *x, **b, **y, &template)
|
146
|
-
end)
|
147
|
-
end
|
136
|
+
Component.new(&proc do |*x, **y|
|
137
|
+
push_emit_yield_block(block) if block
|
138
|
+
instance_exec(*a, *x, **b, **y, &template)
|
139
|
+
end)
|
148
140
|
end
|
149
141
|
|
150
142
|
# Returns the Renderer class used for rendering the templates, according to
|
data/lib/papercraft/renderer.rb
CHANGED
@@ -242,9 +242,10 @@ module Papercraft
|
|
242
242
|
# @param **b [Hash] named arguments to pass to a proc
|
243
243
|
# @return [void]
|
244
244
|
def emit_yield(*a, **b)
|
245
|
-
|
245
|
+
block = @emit_yield_stack&.pop
|
246
|
+
raise Papercraft::Error, "No block given" unless block
|
246
247
|
|
247
|
-
instance_exec(*a, **b,
|
248
|
+
instance_exec(*a, **b, &block)
|
248
249
|
end
|
249
250
|
|
250
251
|
# Defers the given block to be evaluated later. Deferred evaluation allows
|
@@ -304,19 +305,19 @@ module Papercraft
|
|
304
305
|
private
|
305
306
|
|
306
307
|
# Escapes text. This method must be overriden in descendant classes.
|
308
|
+
#
|
309
|
+
# @param text [String] text to be escaped
|
307
310
|
def escape_text(text)
|
308
311
|
raise NotImplementedError
|
309
312
|
end
|
310
313
|
|
311
|
-
#
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
ensure
|
317
|
-
@inner_block = old_block
|
314
|
+
# Pushes the given block onto the emit_yield stack.
|
315
|
+
#
|
316
|
+
# @param block [Proc] block
|
317
|
+
def push_emit_yield_block(block)
|
318
|
+
(@emit_yield_stack ||= []) << block
|
318
319
|
end
|
319
|
-
|
320
|
+
|
320
321
|
# Emits tag attributes into the rendering buffer
|
321
322
|
# @param props [Hash] tag attributes
|
322
323
|
# @return [void]
|
data/lib/papercraft/version.rb
CHANGED