Report abuse

seksi.rb


			
use_template_engine :erb

Merb::Config.use { |c|
  c[:framework]           = { :public => [Merb.root / "public", nil] }
  c[:session_store]       = 'none'
  c[:exception_details]   = true
  c[:log_level]           = :debug # or error, warn, info or fatal
  c[:log_stream]          = STDOUT
  c[:reload_classes]   = true
  c[:reload_templates] = true
}
Merb::Router.prepare do
  match('/').to(:controller => 'seksi', :action =>'index')
  match(%r{/img/(.*)}).to(:controller => 'seksi', :action => 'image', :for => '[1]')
end

Merb.add_mime_type(:png, :to_png, %w[image/png], "Content-Type" => "image/png")

class Seksi < Merb::Controller
  PRE ="\\documentclass[12pt]{article}\n\\usepackage{color}\n\\usepackage[dvips]{graphicx}\n\\pagestyle{empty}\n\\pagecolor{white}\n\\begin{document}\n{\\color{black}\n\\begin{eqnarray*}\n"
  POST = "\n\\end{eqnarray*}}\n\\end{document}"
  TEMP = '/tmp/tex2img/'

  def index
    if request.post?
      @img_url = "/img/#{params[:formula].gsub('"', "''")}"
    end
    render :template => '../../index'
  end

  def image
    pwd = FileUtils.pwd
    filename = Time.now.to_f.to_s + rand.to_s

    FileUtils.mkdir_p TEMP
    FileUtils.cd TEMP
    File.open(filename+'.tex',"w"){|file| file.puts PRE + params[:for].gsub(/%([a-fA-F\d]{2})/){eval("0x#$1").chr} + POST}

    `latex -interaction=batchmode #{filename}.tex -output-format=dvi`
    `dvips -o #{filename}.eps -E #{filename}.dvi 2> /dev/null`
    `convert +adjoin -antialias -density 150x150 #{filename}.eps #{filename}.png`

    content =  File.read(filename+".png")

    FileUtils.rm %w(png eps dvi aux log tex).map{|x| filename+'.'+x}
    FileUtils.cd pwd

    render content, :format => :png, :layout => false
  end
end

index.html.erb


			



    

  Formula!
  


Enter your secret forumla:

stats


			
l1@eden pon paź 13 08:25:09 
~/projekty/seksi/ wc seksi.rb index.html.erb             
  49  152 1722 seksi.rb
  27   77  846 index.html.erb
  76  229 2568 razem

run (merb 0.99-git)


			
l1@eden pon paź 13 08:26:19 
~/projekty/seksi/ merb -I seksi.rb                   
Loading init file from seksi.rb
 ~ Parent pid: 8418
 ~ Cluster: 0
merb : worker (port 4000) ~ Starting Mongrel at port 4000
merb : worker (port 4000) ~ Successfully bound to port 4000