#!/usr/bin/env rubyrequire 'sinatra'require 'haml'set :render, :hamldef render_file( file ='index', dir = '') unless dir.nil? or dir.to_s.empty? set :views, Proc.new{ File.join(root, "views/#{dir}")} end method(settings.render).call(file.to_sym)enddef map_resources ( resources ) get("/#{resources}"){ render_file("index", resources)} get("/#{resources}/:id"){ render_file("show", resources)} post("/#{resources}"){ render_file("create",resources)} get("/#{resources}/:id/edit"){ render_file("edit", resources)} put("/#{resources}"){ render_file("update", resources)} delete("/#{resources}"){ render_file("destroy", resources)}endmap_resources(:calendars)