# Sinatra RDiscount Extension The *sinatra-rdiscount* extension provides `rdiscount` helper method for rendering RDiscount templates. To install it, run: sudo gem install sinatra-rdiscount -s http://gemcutter.com To test it, create a simple Sinatra application: # app.rb require 'rubygems' require 'sinatra' require 'sinatra/rdiscount' get "/" do rdiscount "# Hello RDiscount" end and run it with: ruby app.rb The result could be seen at *http://localhost:4567*. Another example could be find in the *examples* directory. Run it with: rackup -p 4567 config.ru ## Template Languages (*update to The Sinatra Book*) One important thing to remember is that you always have to reference templates and layouts with **symbols**, even if they’re in a subdirectory, for example `:'subdir/template'`. Rendering methods will render any strings passed to them directly. ### RDiscount Templates The following gems are required to render RDiscount templates: *rdiscount*, *erubis*. This helper method: get '/' do rdiscount :index end renders template *./views/index.rdiscount*. If a layout named *layout.rdiscount* exists, it will be used each time a template is rendered. You can disable layouts by passing `:layout => false` to *rdiscount* helper. For example get '/' do rdiscount :index, :layout => false end You can set a different layout from the default one with: get '/' do rdiscount :index, :layout => :application end This renders *./views/index.rdiscount* template within *./views/application.rdiscount* layout. ## Important Info Layouts are **RHTML** — not RDiscount — files. Layout example: <%= @title || "My Sinatra App" %> <%= yield %> Templates are **Markdown** files with ERB insertions delimited by `'{% %}'`. Template example: # Hello {%= @name %} Such a change in embedded code pattern was necessary, to avoid messing with RDiscount engine, which converts bare `<` to `&lt;`. Also I think that there is no way for RDiscount renderer to generate that line: