module Sinatra::RespondWith::Helpers
def respond_with(template, object = nil, &block)
def respond_with(template, object = nil, &block) unless Symbol === template object = template template = nil end format = Format.new(self) format.on '*/*' do |type| exts = settings.ext_map[type] exts << :xml if type.end_with? '+xml' if template args = template_cache.fetch(type, template) { template_for(template, exts) } if args.any? locals = { object: object } locals.merge! object.to_hash if object.respond_to? :to_hash renderer = args.first options = args[1..] + [{ locals: locals }] halt send(renderer, *options) end end if object exts.each do |ext| halt json(object) if ext == :json next unless object.respond_to? method = "to_#{ext}" halt(*object.send(method)) end end false end format.finish(&block) end