Previewer = {} Previewer.msg_render = 'Click the Render Response button to see a preview.' Previewer.msg_save = 'Click the Save As button to download this file.' function Previewer:Register() local imagetypelist = [[ image/bmp image/gif image/jpeg image/pjpeg image/png image/svg image/x-icon image/x-windows-bmp ]] local javascriptlist = [[ text/javascript application/x-javascript ]] local jsonlist = [[ application/json application/x-json ]] Sandcat:RegisterPreviewHandler('sc_archive',self.HandleArchive,'zip','application/zip') Sandcat:RegisterPreviewHandler('sc_css',self.HandleCSS,'css','text/css') Sandcat:RegisterPreviewHandler('sc_flash',self.HandleFlash,'swf','application/x-shockwave-flash') Sandcat:RegisterPreviewHandler('sc_html',self.HandleHTML,'htm,html','text/html') Sandcat:RegisterPreviewHandler('sc_image',self.HandleImage,'bmp,gif,ico,jpg,jpe,jpeg,png,svg',imagetypelist) Sandcat:RegisterPreviewHandler('sc_js',self.HandleJS,'js',javascriptlist) Sandcat:RegisterPreviewHandler('sc_json',self.HandleJSON,'json',jsonlist) Sandcat:RegisterPreviewHandler('sc_text',self.HandleText,'txt','text/plain') Sandcat:RegisterPreviewHandler('sc_xml',self.HandleXML,'xml','image/svg+xml') end function Previewer:HandleCode(f,format) local source = f.responsetext if source ~= '' then if string.len(source) < 1024*50 then f.previewhtml = src_highlight(source,format) else f.previewhtml = self:NoHighlight(source) end else f.warnempty = true end end function Previewer:HandleCodeRay(f,format) require "SySyn" local source = f.responsetext local html = '' if source ~= '' then if string.len(source) < 1024*50 then if format == 'java_script' then source = scop.html.beautifyjs(source) elseif format == 'css' then source = scop.html.beautifycss(source) end html = coderay_highlight(source,format) html = stringop.replace(html,'
','
')
   f.previewhtml = html
  else
   f.previewhtml = self:NoHighlight(source)
  end
 else
  f.warnempty = true
 end
end

function Previewer:HandleText(f)
 Previewer:HandleCodeRay(f,'text')
end

function Previewer:HandleHTML(f)
 Previewer:HandleCodeRay(f,'html')
end

function Previewer:HandleCSS(f)
 Previewer:HandleCodeRay(f,'css')
end

function Previewer:HandleXML(f)
 Previewer:HandleCodeRay(f,'xml')
end

function Previewer:HandleJS(f)
 Previewer:HandleCodeRay(f,'java_script')
end

function Previewer:HandleJSON(f)
 Previewer:HandleCodeRay(f,'json')
end

function Previewer:HandleFlash(f)
 local resp=app.ask_yn('Render "'..scop.url.crack(f.url).filename..'"?','Previewer')
 if resp == true then
  browser.showurl(f.url)
 end
end

function Previewer:HandleImage(f)
 --if f.previewhtml == '' then
  f.previewhtml = '
' --end end function Previewer:HandleArchive(f) f.previewhtml = '
'..Previewer.msg_save..'
' end function Previewer:NoHighlight(s) local html = scop.html.escape(s) html = '
'..html..'
' return html end