   let render: RenderFunction = { (info: RenderingInfo, _) in
       switch info.tag.type {
       case .Variable:
+          // {{ object }}
           return Rendering("variable")
       case .Section:
+          // {{# object }}...{{/ object }}
           return Rendering("section")
       }
   }

  // });

  let strong: RenderFunction = { (info: RenderingInfo, _) -> Rendering? in
      return Rendering(
          "<strong>" +
          info.tag.renderInnerContent(info.context)!.string +   // Ignore errors for this example
          "</strong>", .HTML)
  }

  let template = Template(string: "{{#strong}}Hello {{name}}{{/strong}}")!


  // Renders "<strong>Hello Arthur</strong>"
  template.render(Box(["name": Box("Arthur")]))!


As seen in the example above, the returned rendering has a content type, text or
HTML. If you return text, the rendering is HTML-escaped in the final template
rendering (except for triple mustache tags and text templates - see the
Configuration type for more information about text templates).

::

  let HTML: RenderFunction = { (info: RenderingInfo, _) in
      return Rendering("<HTML>", .HTML)
  }
  let text: RenderFunction = { (info: RenderingInfo, _) in
      return Rendering("<text>")   // default content type is text
  }

  // Renders "<HTML>, &lt;text&gt;"
  let template = Template(string: "{{HTML}}, {{text}}")!
  let data = ["HTML": Box(HTML), "text": Box(text)]
  let rendering = template.render(Box(data))!


RenderFunction is invoked for both {{ variable }} and {{# section }}...{{/}}
tags. You can query info.tag.type in order to have a different rendering
