module Render::Instant
Instant
allows for previews of edited documents @author Bryan T. Meyers
Public Class Methods
do_update(actions, context)
click to toggle source
Render
a temporary document to HTML @param [Array] actions the allowed actions for this URI @param [Hash] context the context for this request @return [Response] a Rack Response triplet, or status code
# File lib/app/render/instant.rb, line 26 def self.do_update(actions, context) ## Default to not found message = '' status = 404 if context.resource body = context.body if body body = body.split('=')[1] if body body = URI.decode(body) end ## Assume unsupported mime type status = 415 message = 'INSTANT: Unsupported MIME Type' mime = "#{context.resource}/#{context.id}" $stderr.puts mime renderer = nil context.closet.renderers.each do |k, v| if v['mimes'].include? mime renderer = v['partial'] break end end if renderer context.uri = ['http:','','host'] + context.query[:id].split('/') result = renderer.render(self, { actions: actions, context: context, mime: mime, response: body, }) name = context.config['template'] template = context.closet.templates[name] context.resource = context.query[:resource] context.uri = ['http:','','host','','instant', context.resource] + context.query[:id].split('/') context.id = context.uri.last if template message = template['file'].render(self, { actions: actions, context: context, content: result }) else message = result end status = 200 end end end [status, {}, message] end
invoke(actions, context)
click to toggle source
Proxy method used when routing @param [Array] actions the allowed actions for this URI @param [Hash] context the context for this request @return [Response] a Rack Response triplet, or status code
# File lib/app/render/instant.rb, line 78 def self.invoke(actions, context) if context.action.eql? :update do_update(actions, context) else 405 end end