1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#! /usr/bin/env ruby
#
begin
require 'simplecov'
SimpleCov.start do
add_filter 'spec'
end
rescue LoadError
end
#
require 'yaml'
#
require 'zorglub'
#
HASH_PROC = Proc.new { |path,obj| {:path=>path,:layout=>obj.layout,:view=>obj.view,:args=>obj.args,:map=>obj.map}.to_yaml }
RENDER_PROC = Proc.new { |path,obj|
case obj.state
when :layout
"layout_start #{obj.content} layout_end"
when :view
["view_content", 'text/view']
when :partial
['partial_content','text/partial']
else
raise Exception.new
end
}
Zorglub::Config.register_engine 'default', nil, HASH_PROC
Zorglub::Config.register_engine 'engine-1', 'spec', HASH_PROC
Zorglub::Config.register_engine 'engine-2', 'spec', HASH_PROC
Zorglub::Config.register_engine 'real', nil, RENDER_PROC
#
Zorglub::Config[:engine] = 'default'
Zorglub::Config.root = File.join Dir.pwd, 'spec', 'data'
#
class Zorglub::Node
def self.my_call uri
call( {'PATH_INFO'=>uri} )
end
end
#
class Temp < Zorglub::Node
end
#
class Node0 < Zorglub::Node
# default
def index
html
end
def hello
no_layout
'world'
end
def with_2args a1, a2
end
def do_render
engine 'real'
end
def do_partial a1, a2
engine 'real'
end
def other_view
engine 'real'
view r('do_partial')
end
def do_redirect
redirect r(:do_partial,1,2,3)
end
end
#
class Node1 < Zorglub::Node
layout 'layout-1'
engine 'engine-1'
def index
layout 'main'
engine 'engine-2'
end
end
#
class Node2 < Node1
# inherited from Node1
end
#
class Node3 < Zorglub::Node
@before=0
@after=0
class << self
attr_accessor :before, :after
end
before_all do |node|
Node3.before +=1
end
after_all do |node|
Node3.after +=1
end
layout 'layout-2'
engine 'engine-2'
def index
(self.class.before-self.class.after).should == 1
end
end
#
class Node4 < Zorglub::Node
inherited_var :js,'js0','js1'
def index
no_layout
inherited_var(:js).to_yaml
end
def more
no_layout
inherited_var(:js,'js2').to_yaml
end
end
#
class Node5 < Node4
inherited_var :js, 'js3'
inherited_var :css, 'css0', 'css1'
def index
no_layout
js = inherited_var(:js,'jsx')
css = inherited_var(:css, 'css0', 'css1','css2')
js.concat(css).to_yaml
end
end
#
APP = Zorglub::App.new do
map '/node0', Node0
map '/node1', Node1
map '/node3', Node3
map '/node4', Node4
map '/node5', Node5
end
class Node2
map APP, '/node2'
end
#
|