require 'rubygems'
require 'sinatra'
require 'sequel'
require 'syntaxi'
DB = Sequel.connect(ENV['DATABASE_URL'] || 'sqlite://my.db')
# Database Model
class Snippet < Sequel::Model
Syntaxi.line_number_method = 'floating'
Syntaxi.wrap_at_column = 80
def self.create_table
DB.create_table :snippets do
primary_key :id
text :body
timestamp :timestamp
end
rescue Sequel::DatabaseError
#Assume Database is created.
end
def formatted_body
replacer = Time.now.strftime('[code-%d]')
html = Syntaxi.new("[code lang='ruby']#{self.body.gsub('[/code]', replacer)}[/code]").process
"<div class=\"syntax syntax_ruby\">#{html.gsub(replacer, '[/code]')}</div>"
end
end
configure do
Snippet.create_table
end
# new
get '/' do
erb :new
end
# create
post '/' do
@snippet = Snippet.new(:body => params[:snippet_body], :timestamp => (params[:timestamp] || Time.now))
if @snippet.save
redirect "/#{@snippet.id}"
else
redirect '/'
end
end
# show
get '/:id' do
@snippet = Snippet[params[:id]]
if @snippet
erb :show
else
redirect '/'
end
end
get '*' do
redirect '/'
end