diff --git a/spec/blueprint/html/hooks_spec.cr b/spec/blueprint/html/around_render_spec.cr
similarity index 59%
rename from spec/blueprint/html/hooks_spec.cr
rename to spec/blueprint/html/around_render_spec.cr
index db53826..686e7aa 100644
--- a/spec/blueprint/html/hooks_spec.cr
+++ b/spec/blueprint/html/around_render_spec.cr
@@ -7,18 +7,10 @@ private class ExampleWithBlock
h1 { yield }
end
- private def before_render(&)
- span { "Before render" }
- end
-
private def around_render(&)
- span { "Around start" }
+ span { "Before" }
yield
- span { "Around end" }
- end
-
- private def after_render(&)
- span { "After render" }
+ span { "After" }
end
end
@@ -29,31 +21,21 @@ private class ExampleWithoutBlock
h1 { "Without block" }
end
- private def before_render(&)
- span { "Before render" }
- end
-
private def around_render(&)
- span { "Around start" }
+ span { "Before" }
yield
- span { "Around end" }
- end
-
- private def after_render(&)
- span { "After render" }
+ span { "After" }
end
end
-describe "hooks" do
+describe "around render" do
context "with block" do
it "allows defining hooks before_render, around_render, after_render" do
actual_html = ExampleWithBlock.new.to_s { "With block" }
expected_html = normalize_html <<-HTML
- Before render
- Around start
+ Before
With block
- Around end
- After render
+ After
HTML
actual_html.should eq expected_html
@@ -64,11 +46,9 @@ describe "hooks" do
it "allows defining hooks before_render, around_render, after_render" do
actual_html = ExampleWithoutBlock.new.to_s
expected_html = normalize_html <<-HTML
- Before render
- Around start
+ Before
Without block
- Around end
- After render
+ After
HTML
actual_html.should eq expected_html
diff --git a/src/blueprint/html.cr b/src/blueprint/html.cr
index c7d9b8b..3eb9a07 100644
--- a/src/blueprint/html.cr
+++ b/src/blueprint/html.cr
@@ -36,19 +36,7 @@ module Blueprint::HTML
@buffer = buffer
- {% if @type.has_method?(:before_render) %}
- before_render { }
- {% end %}
-
- {% if @type.has_method?(:around_render) %}
- around_render { blueprint }
- {% else %}
- blueprint
- {% end %}
-
- {% if @type.has_method?(:after_render) %}
- after_render { }
- {% end %}
+ around_render { blueprint }
end
def to_s(buffer : String::Builder, &) : Nil
@@ -56,27 +44,19 @@ module Blueprint::HTML
@buffer = buffer
- {% if @type.has_method?(:before_render) %}
- before_render { yield }
- {% end %}
-
- {% if @type.has_method?(:around_render) %}
- around_render do
- blueprint { BufferRenderer.render(to: @buffer) { yield } }
- end
- {% else %}
+ around_render do
blueprint { BufferRenderer.render(to: @buffer) { yield } }
- {% end %}
-
- {% if @type.has_method?(:after_render) %}
- after_render { yield }
- {% end %}
+ end
end
def render? : Bool
true
end
+ def around_render(&)
+ yield
+ end
+
def element(tag_name : String | Symbol, **attributes, &) : Nil
@buffer << "<"
@buffer << tag_name