#! /usr/bin/env ruby
#
$LOAD_PATH << File.join(File.dirname( File.absolute_path(__FILE__)), '..', 'lib')
#
require 'zorglub'
#
require 'haml'
HAML_PROC = Proc.new { |path,obj| Haml::Engine.new( File.open(path,'r').read ).render(obj) }
Zorglub::Config.register_engine 'haml', 'haml', HAML_PROC
Zorglub::Config.register_engine 'temp-engine', 'haml', HAML_PROC
#
Zorglub::Config.engine = 'haml'
Zorglub::Config.session_on = true
Zorglub::Config.root = File.dirname( File.absolute_path(__FILE__) )
#
class Node1 < Zorglub::Node
#
include Zorglub::Helpers::Css
css 'class_level.css'
#
def index a1, *a2
@title='Index'
css 'instance_level.css'
end
#
def alt *args
@title='Alt'
"
Node1:alt#{html}"
end
#
end
#
APP = Zorglub::App.new do
map '/url1', Node1
end
#
class Node2 < Zorglub::Node
#
include Zorglub::Helpers::Css
#
map APP, '/url2'
engine 'my-engine' # not available
layout 'my-layout' # not available
#
def index *args
"Node2:alt#{html}"
end
#
def alt *args
@title = "Alt 2"
engine 'temp-engine' # haml renamed
layout 'other' # use layout/other.haml template
view File.join( 'url1','alt') # use view/url1/alt.haml template
if not session.exists?
@data = "NO SESSION"
else
t = Time.now
if session[:now].nil?
session[:now] = t
@data = "#{t.strftime('%H:%M:%S')} FIRST"
elsif t-session[:now]>5
session[:now] = t
@data = "#{t.strftime('%H:%M:%S')} UPDATE"
else
@data = "#{session[:now].strftime('%H:%M:%S')} CURRENT"
end
end
end
#
end
#
puts APP.to_hash.inspect
#
map '/' do
use Rack::Lint
use Rack::ShowExceptions
use Rack::Session::Cookie, :key=>Zorglub::Session.session_key,
:secret=>'my-secret-secret',
:path=>'/',
:http_only=>true,
:expire_after=>30
run APP
end
#