require rubygems
[toopaste.git] / toopaste.rb
blob6146f30657a2057308e3c074ec02e0273a00f156
1 require 'rubygems'
2 require 'sinatra'
3 require 'data_mapper'
4 require 'syntaxi'
6 DataMapper::Database.setup({
7   :adapter  => 'mysql',
8   :host     => 'localhost',
9   :username => 'root',
10   :password => '',
11   :database => 'toopaste_development'
14 class Snippet < DataMapper::Base
15   property :body, :text
16   property :created_at, :datetime
17   property :updated_at, :datetime
18   
19   validates_presence_of :body
20   validates_length_of :body, :minimum => 1
21   
22   Syntaxi.line_number_method = 'floating'
23   
24   def formatted_body
25     html = Syntaxi.new("[code lang='ruby']#{self.body}[/code]").process
26     "<div class=\"syntax syntax_ruby\">#{html}</div>"
27   end
28 end
30 database.table_exists?(Snippet) or database.save(Snippet)
32 layout 'default.erb'
34 # new
35 get '/' do
36   erb :new, :layout => 'default.erb'
37 end
39 # create
40 post '/' do
41   @snippet = Snippet.new(:body => params[:snippet_body])
42   if @snippet.save
43     redirect "/#{@snippet.id}"
44   else
45     redirect '/'
46   end
47 end
49 # show
50 get '/:id' do
51   @snippet = Snippet.find(params[:id])
52   erb :show, :layout => 'default.erb'
53 end