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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
#! /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 }
STATIC_PROC = Proc.new { |path,obj| ["VAL #{obj.value}",'text/static'] }
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.register_engine 'static', nil, STATIC_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
@static_cpt=0
class << self
attr_accessor :static_cpt
end
# 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
attr_reader :value
def no_static
static false
engine 'static'
view r('do_render')
Node0.static_cpt+=1
@value = Node0.static_cpt
end
def do_static
static true
engine 'static'
view r('do_render')
Node0.static_cpt+=1
@value = Node0.static_cpt
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
#
|