diff --git a/src/kemal/helpers.cr b/src/kemal/helpers.cr
index b1491f8..fcc4414 100644
--- a/src/kemal/helpers.cr
+++ b/src/kemal/helpers.cr
@@ -2,6 +2,35 @@ require "kilt"
CONTENT_FOR_BLOCKS = Hash(String, Proc(String)).new
+# content_for is a set of helpers that allows you to capture
+# blocks inside views to be rendered later during the request. The most
+# common use is to populate different parts of your layout from your view.
+#
+# The currently supported engines are: ecr and slang.
+#
+# == Usage
+#
+# You call +content_for+, generally from a view, to capture a block of markup
+# giving it an identifier:
+#
+# # index.ecr
+# <% content_for "some_key" do %>
+# ...
+# <% end %>
+#
+# Then, you call +yield_content+ with that identifier, generally from a
+# layout, to render the captured block:
+#
+# # layout.ecr
+# <%= yield_content "some_key" %>
+#
+# == And How Is This Useful?
+#
+# For example, some of your views might need a few javascript tags and
+# stylesheets, but you don't want to force this files in all your pages.
+# Then you can put <%= yield_content :scripts_and_styles %> on your
+# layout, inside the
tag, and each view can call content_for
+# setting the appropriate set of tags that should be added to the layout.
macro content_for(key)
CONTENT_FOR_BLOCKS[{{key}}] = ->() {
__kilt_io__ = MemoryIO.new
@@ -15,11 +44,6 @@ macro yield_content(key)
CONTENT_FOR_BLOCKS[{{key}}].call
end
-# Uses built-in ECR to render views.
-# # Usage
-# get '/' do
-# render 'hello.ecr'
-# end
macro render(filename, layout)
content = render {{filename}}
render {{layout}}