wee 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +96 -0
- data/README +2 -5
- data/examples/ObjectSpaceBrowser.rb +24 -42
- data/examples/ajax/ajax.js +444 -0
- data/examples/ajax/ajax.rb +31 -0
- data/examples/calculator.rb +1 -3
- data/examples/cc.rb +9 -29
- data/examples/live-update.rb +1 -1
- data/examples/test.rb +2 -2
- data/examples/window.rb +1 -1
- data/lib/wee.rb +1 -1
- data/lib/wee/abstractsession.rb +96 -0
- data/lib/wee/adaptors/fastcgi.rb +76 -0
- data/lib/wee/adaptors/webrick.rb +3 -3
- data/lib/wee/application.rb +7 -4
- data/lib/wee/core/callback.rb +2 -0
- data/lib/wee/core/component.rb +46 -24
- data/lib/wee/core/decoration.rb +5 -5
- data/lib/wee/core/presenter.rb +43 -27
- data/lib/wee/core/valueholder.rb +1 -1
- data/lib/wee/databases/og/scaffolder.rb +0 -1
- data/lib/wee/pageless/application.rb +8 -4
- data/lib/wee/pageless/request.rb +17 -5
- data/lib/wee/pageless/session.rb +38 -52
- data/lib/wee/renderer/html/brushes.rb +7 -1
- data/lib/wee/renderer/html/canvas.rb +1 -1
- data/lib/wee/request.rb +68 -7
- data/lib/wee/response.rb +2 -1
- data/lib/wee/session.rb +128 -129
- data/test/test_request.rb +31 -3
- metadata +30 -25
data/lib/wee/response.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'time'
|
2
2
|
|
3
3
|
class Wee::Response
|
4
|
-
DEFAULT_HEADER = {
|
4
|
+
DEFAULT_HEADER = {}.freeze
|
5
5
|
|
6
6
|
attr_accessor :status, :content
|
7
7
|
attr_reader :header
|
@@ -17,6 +17,7 @@ class Wee::Response
|
|
17
17
|
def initialize(mime_type = 'text/html', content='')
|
18
18
|
@status = 200
|
19
19
|
@header = DEFAULT_HEADER.dup
|
20
|
+
self.content_type = mime_type
|
20
21
|
@content = content
|
21
22
|
end
|
22
23
|
|
data/lib/wee/session.rb
CHANGED
@@ -1,195 +1,194 @@
|
|
1
|
+
require 'wee/abstractsession'
|
1
2
|
require 'wee/page'
|
2
|
-
require 'thread'
|
3
3
|
|
4
|
-
class Wee::Session < Wee::
|
5
|
-
attr_accessor :root_component, :page_store
|
4
|
+
class Wee::Session < Wee::AbstractSession
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
raise "not in session" if sess.nil?
|
10
|
-
return sess
|
11
|
-
end
|
6
|
+
attr_accessor :root_component
|
7
|
+
attr_accessor :page_store
|
12
8
|
|
13
9
|
def initialize(&block)
|
14
|
-
Thread.current[:wee_session] = self
|
15
|
-
|
16
|
-
@idgen = Wee::SimpleIdGenerator.new
|
17
|
-
|
18
|
-
# to serialize the requests we need a mutex
|
19
|
-
@mutex = Mutex.new
|
20
|
-
|
21
|
-
block.call(self)
|
22
|
-
|
23
|
-
raise ArgumentError, "No root component specified" if @root_component.nil?
|
24
|
-
raise ArgumentError, "No page_store specified" if @page_store.nil?
|
25
|
-
|
26
|
-
@initial_snapshot = snapshot()
|
27
|
-
|
28
10
|
super()
|
29
|
-
|
30
|
-
Thread.current[:wee_session] = nil
|
11
|
+
setup(&block)
|
31
12
|
end
|
32
13
|
|
33
|
-
def
|
34
|
-
@
|
35
|
-
return snap.freeze
|
14
|
+
def current_callbacks
|
15
|
+
@page.callbacks
|
36
16
|
end
|
37
17
|
|
38
|
-
#
|
39
|
-
|
40
|
-
|
41
|
-
@mutex.synchronize do
|
42
|
-
begin
|
43
|
-
Thread.current[:wee_session] = self
|
44
|
-
@context = context
|
45
|
-
super
|
46
|
-
awake
|
47
|
-
process_request
|
48
|
-
sleep
|
49
|
-
rescue Exception => exn
|
50
|
-
set_response(context, Wee::ErrorResponse.new(exn))
|
51
|
-
ensure
|
52
|
-
Thread.current[:wee_session] = nil
|
53
|
-
@context = nil
|
54
|
-
@page = nil
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
18
|
+
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
19
|
+
# :section: Request processing/handling
|
20
|
+
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
58
21
|
|
59
|
-
|
60
|
-
idgen = Wee::SimpleIdGenerator.new
|
61
|
-
page = Wee::Page.new(snapshot, Wee::CallbackRegistry.new(idgen))
|
62
|
-
end
|
22
|
+
protected
|
63
23
|
|
64
|
-
|
65
|
-
|
66
|
-
def awake
|
67
|
-
end
|
24
|
+
def setup(&block)
|
25
|
+
@idgen = Wee::SimpleIdGenerator.new
|
68
26
|
|
69
|
-
|
70
|
-
|
71
|
-
|
27
|
+
with_session do
|
28
|
+
block.call(self) if block
|
29
|
+
raise ArgumentError, "No root component specified" if @root_component.nil?
|
30
|
+
raise ArgumentError, "No page_store specified" if @page_store.nil?
|
31
|
+
|
32
|
+
@initial_snapshot = snapshot()
|
33
|
+
end
|
72
34
|
end
|
73
35
|
|
36
|
+
# The main routine where the request is processed.
|
37
|
+
|
74
38
|
def process_request
|
75
39
|
if @context.request.page_id.nil?
|
76
40
|
|
77
41
|
# No page_id was specified in the URL. This means that we start with a
|
78
42
|
# fresh component and a fresh page_id, then redirect to render itself.
|
79
43
|
|
80
|
-
|
44
|
+
handle_new_page
|
81
45
|
|
82
46
|
elsif @page = @page_store.fetch(@context.request.page_id, false)
|
83
47
|
|
84
48
|
# A valid page_id was specified and the corresponding page exists.
|
85
49
|
|
86
|
-
|
87
|
-
|
88
|
-
p @context.request.fields if $DEBUG
|
89
|
-
|
90
|
-
if @context.request.fields.empty?
|
50
|
+
handle_existing_page
|
91
51
|
|
92
|
-
|
93
|
-
#
|
94
|
-
# 1. Reset the action/input fields (as they are regenerated in the
|
95
|
-
# rendering process).
|
96
|
-
# 2. Render the page (respond).
|
97
|
-
# 3. Store the page back into the store
|
98
|
-
|
99
|
-
@page = create_page(@page.snapshot) # remove all action/input handlers
|
100
|
-
respond(@context, @page.callbacks) # render
|
101
|
-
@page_store[@context.request.page_id] = @page # store
|
102
|
-
|
103
|
-
else
|
52
|
+
else
|
104
53
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
# new page view.
|
54
|
+
# A page_id was specified in the URL, but there's no page for it in the
|
55
|
+
# page store. Either the page has timed out, or an invalid page_id was
|
56
|
+
# specified.
|
109
57
|
|
110
|
-
|
58
|
+
handle_invalid_page
|
111
59
|
|
112
|
-
|
113
|
-
|
114
|
-
end
|
60
|
+
end
|
61
|
+
end
|
115
62
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
}
|
120
|
-
nil
|
121
|
-
}
|
63
|
+
def handle_new_page
|
64
|
+
handle_new_page_view(@context, @initial_snapshot)
|
65
|
+
end
|
122
66
|
|
123
|
-
|
124
|
-
|
125
|
-
@page.snapshot = self.snapshot
|
126
|
-
@page_store[@context.request.page_id] = @page
|
127
|
-
@snapshot_page_id = @context.request.page_id
|
128
|
-
set_response(@context, live_update_response)
|
129
|
-
else
|
130
|
-
handle_new_page_view(@context)
|
131
|
-
end
|
67
|
+
def handle_existing_page
|
68
|
+
@page.snapshot.restore if @context.request.page_id != @snapshot_page_id
|
132
69
|
|
133
|
-
|
70
|
+
p @context.request.fields if $DEBUG
|
134
71
|
|
72
|
+
if @context.request.render?
|
73
|
+
handle_render_phase
|
135
74
|
else
|
136
|
-
|
137
|
-
# A page_id was specified in the URL, but there's no page for it in the
|
138
|
-
# page store. Either the page has timed out, or an invalid page_id was
|
139
|
-
# specified.
|
140
|
-
#
|
141
|
-
# TODO:: Display an "invalid page or page timed out" message, which
|
142
|
-
# forwards to /app/session-id
|
143
|
-
|
144
|
-
raise "Not yet implemented"
|
145
|
-
|
75
|
+
handle_callback_phase
|
146
76
|
end
|
147
77
|
end
|
148
78
|
|
149
|
-
def
|
150
|
-
|
79
|
+
def handle_invalid_page
|
80
|
+
# TODO:: Display an "invalid page or page timed out" message, which
|
81
|
+
# forwards to /app/session-id
|
82
|
+
raise "Not yet implemented"
|
151
83
|
end
|
152
84
|
|
153
|
-
def
|
154
|
-
|
85
|
+
def handle_render_phase
|
86
|
+
# No action/inputs were specified -> render page
|
87
|
+
#
|
88
|
+
# 1. Reset the action/input fields (as they are regenerated in the
|
89
|
+
# rendering process).
|
90
|
+
# 2. Render the page (respond).
|
91
|
+
# 3. Store the page back into the store
|
92
|
+
|
93
|
+
@page = create_page(@page.snapshot) # remove all action/input handlers
|
94
|
+
respond(@context, @page.callbacks) # render
|
95
|
+
@page_store[@context.request.page_id] = @page # store
|
155
96
|
end
|
156
97
|
|
157
|
-
|
158
|
-
|
159
|
-
|
98
|
+
def handle_callback_phase
|
99
|
+
# Actions/inputs were specified.
|
100
|
+
#
|
101
|
+
# We process the request and invoke actions/inputs. Then we generate a
|
102
|
+
# new page view.
|
160
103
|
|
161
|
-
|
104
|
+
callback_stream = Wee::CallbackStream.new(@page.callbacks, @context.request.fields)
|
105
|
+
send_response = invoke_callbacks(callback_stream)
|
162
106
|
|
163
|
-
|
107
|
+
post_callbacks_hook()
|
164
108
|
|
165
|
-
|
166
|
-
|
167
|
-
@
|
109
|
+
if send_response
|
110
|
+
# replace existing page with new snapshot
|
111
|
+
@page.snapshot = self.snapshot
|
112
|
+
@page_store[@context.request.page_id] = @page
|
113
|
+
@snapshot_page_id = @context.request.page_id
|
114
|
+
|
115
|
+
# and send response
|
116
|
+
set_response(@context, send_response)
|
168
117
|
else
|
169
|
-
|
118
|
+
handle_new_page_view(@context)
|
170
119
|
end
|
171
120
|
end
|
172
121
|
|
173
|
-
|
122
|
+
# This method triggers two tree traversals of process_callbacks on the root
|
123
|
+
# component. First, all input callbacks are invoked, then in the second
|
124
|
+
# traversal, the first found action callback is invoked (there's only ever
|
125
|
+
# one per request) and then the traversal is stopped
|
126
|
+
#
|
127
|
+
# NOTE: Input callbacks should never call other components!
|
128
|
+
#
|
129
|
+
# Returns nil or send_response in case of a premature response.
|
130
|
+
|
131
|
+
def invoke_callbacks(callback_stream)
|
132
|
+
if callback_stream.all_of_type(:action).size > 1
|
133
|
+
raise "Not allowed to specify more than one action callback"
|
134
|
+
end
|
135
|
+
|
136
|
+
send_response = catch(:wee_send_response) {
|
137
|
+
catch(:wee_back_to_session) {
|
138
|
+
# invoke input callbacks
|
139
|
+
@root_component.process_callbacks_chain {|this|
|
140
|
+
callback_stream.with_callbacks_for(this, :input) { |callback, value|
|
141
|
+
callback.call(value)
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
# invoke first found action callback. only the first action callback is invoked.
|
146
|
+
@root_component.process_callbacks_chain {|this|
|
147
|
+
callback_stream.with_callbacks_for(this, :action) { |callback, value|
|
148
|
+
callback.call
|
149
|
+
throw :wee_back_to_session
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
nil
|
154
|
+
}
|
155
|
+
end
|
174
156
|
|
175
157
|
def handle_new_page_view(context, snapshot=nil)
|
176
158
|
new_page_id = @idgen.next.to_s
|
177
159
|
new_page = create_page(snapshot || self.snapshot())
|
178
160
|
@page_store[new_page_id] = new_page
|
179
161
|
@snapshot_page_id = new_page_id
|
180
|
-
redirect_url = context.request.build_url(
|
162
|
+
redirect_url = context.request.build_url(:page_id => new_page_id)
|
181
163
|
set_response(context, Wee::RedirectResponse.new(redirect_url))
|
182
164
|
end
|
183
165
|
|
184
|
-
def set_response(context, response)
|
185
|
-
context.response = response
|
186
|
-
end
|
187
|
-
|
188
166
|
def respond(context, callbacks)
|
167
|
+
pre_respond_hook
|
189
168
|
set_response(context, Wee::GenericResponse.new('text/html', ''))
|
190
169
|
|
191
170
|
rctx = Wee::RenderingContext.new(context.request, context.response, callbacks, Wee::HtmlWriter.new(context.response.content))
|
192
171
|
@root_component.do_render_chain(rctx)
|
193
172
|
end
|
194
173
|
|
174
|
+
def pre_respond_hook
|
175
|
+
end
|
176
|
+
|
177
|
+
def post_callbacks_hook
|
178
|
+
end
|
179
|
+
|
180
|
+
# Take a snapshot of the root component and return it.
|
181
|
+
|
182
|
+
def snapshot
|
183
|
+
@root_component.backtrack_state_chain(snap = Wee::Snapshot.new)
|
184
|
+
return snap.freeze
|
185
|
+
end
|
186
|
+
|
187
|
+
# Return a new Wee::Page object with the given snapshot assigned.
|
188
|
+
|
189
|
+
def create_page(snapshot)
|
190
|
+
idgen = Wee::SimpleIdGenerator.new
|
191
|
+
page = Wee::Page.new(snapshot, Wee::CallbackRegistry.new(idgen))
|
192
|
+
end
|
193
|
+
|
195
194
|
end
|
data/test/test_request.rb
CHANGED
@@ -5,10 +5,38 @@ require 'wee/request'
|
|
5
5
|
class Test_Request < Test::Unit::TestCase
|
6
6
|
def test_parse
|
7
7
|
d = Wee::Request::DELIM
|
8
|
-
req = Wee::Request.new('/app', "/app
|
8
|
+
req = Wee::Request.new('/app', "/app/info#{d}req_handler_id/page_id", nil, nil, nil)
|
9
|
+
assert_equal 'info', req.info
|
9
10
|
assert_equal 'req_handler_id', req.request_handler_id
|
10
11
|
assert_equal 'page_id', req.page_id
|
11
|
-
|
12
|
-
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_fields
|
15
|
+
fields = {
|
16
|
+
'a' => 1,
|
17
|
+
'b' => 2,
|
18
|
+
'a.x' => 3,
|
19
|
+
'a.y' => 4,
|
20
|
+
}
|
21
|
+
|
22
|
+
parsed = {
|
23
|
+
'a' => {nil => 1, 'x' => 3, 'y' => 4},
|
24
|
+
'b' => 2
|
25
|
+
}
|
26
|
+
|
27
|
+
req = Wee::Request.new('/app', "/app", nil, fields, nil)
|
28
|
+
assert_equal parsed, req.fields
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_build_url
|
32
|
+
d = Wee::Request::DELIM
|
33
|
+
req = Wee::Request.new('/app', "/app/info#{d}req_handler_id/page_id", nil, nil, nil)
|
34
|
+
|
35
|
+
assert_equal "/app/info#{d}req_handler_id/page_id?c", req.build_url(:callback_id => 'c')
|
36
|
+
|
37
|
+
assert_equal "/app/info#{d}a/b?c", req.build_url(:request_handler_id => 'a', :page_id => 'b', :callback_id => 'c')
|
38
|
+
assert_equal "/app/info#{d}req_handler_id/b", req.build_url(:request_handler_id => 'req_handler_id', :page_id => 'b')
|
39
|
+
|
40
|
+
assert_equal "/app/info", req.build_url(:request_handler_id => nil, :page_id => nil)
|
13
41
|
end
|
14
42
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.
|
2
|
+
rubygems_version: 0.8.6
|
3
3
|
specification_version: 1
|
4
4
|
name: wee
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.8.0
|
7
|
+
date: 2005-04-04
|
8
8
|
summary: Wee is a framework for building highly dynamic web applications.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -33,8 +33,8 @@ files:
|
|
33
33
|
- bin
|
34
34
|
- benchmark
|
35
35
|
- examples
|
36
|
-
- wee.gemspec
|
37
36
|
- Rakefile
|
37
|
+
- wee.gemspec
|
38
38
|
- TODO
|
39
39
|
- INSTALL
|
40
40
|
- ChangeLog
|
@@ -44,8 +44,8 @@ files:
|
|
44
44
|
- test/components
|
45
45
|
- test/stressed_application.rb
|
46
46
|
- test/test_html_canvas.rb
|
47
|
-
- test/test_html_writer.rb
|
48
47
|
- test/stress_and_measure.rb
|
48
|
+
- test/test_html_writer.rb
|
49
49
|
- test/test_component.rb
|
50
50
|
- test/stress.rb
|
51
51
|
- test/test_request.rb
|
@@ -80,8 +80,8 @@ files:
|
|
80
80
|
- doc/rdoc/files/lib/wee/pageless
|
81
81
|
- doc/rdoc/files/lib/wee/renderer
|
82
82
|
- doc/rdoc/files/lib/wee/continuation
|
83
|
-
- doc/rdoc/files/lib/wee/adaptors
|
84
83
|
- doc/rdoc/files/lib/wee/rendering
|
84
|
+
- doc/rdoc/files/lib/wee/adaptors
|
85
85
|
- doc/rdoc/files/lib/wee/skeleton
|
86
86
|
- doc/rdoc/files/lib/wee/idgen
|
87
87
|
- doc/rdoc/files/lib/wee/databases
|
@@ -121,32 +121,32 @@ files:
|
|
121
121
|
- doc/rdoc/files/lib/wee/core/callback_rb.html
|
122
122
|
- doc/rdoc/files/lib/wee/core/snapshot_rb.html
|
123
123
|
- doc/rdoc/files/lib/wee/core/component_rb.html
|
124
|
-
- doc/rdoc/files/lib/wee/core/presenter_rb.html
|
125
124
|
- doc/rdoc/files/lib/wee/core/decoration_rb.html
|
125
|
+
- doc/rdoc/files/lib/wee/core/presenter_rb.html
|
126
126
|
- doc/rdoc/files/lib/wee/pageless/application_rb.html
|
127
127
|
- doc/rdoc/files/lib/wee/pageless/session_rb.html
|
128
128
|
- doc/rdoc/files/lib/wee/pageless/request_rb.html
|
129
129
|
- doc/rdoc/files/lib/wee/renderer/html
|
130
|
-
- doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html
|
131
130
|
- doc/rdoc/files/lib/wee/renderer/html/brushes_rb.html
|
131
|
+
- doc/rdoc/files/lib/wee/renderer/html/canvas_rb.html
|
132
132
|
- doc/rdoc/files/lib/wee/renderer/html/writer_rb.html
|
133
133
|
- doc/rdoc/files/lib/wee/continuation/core
|
134
134
|
- doc/rdoc/files/lib/wee/continuation/session_rb.html
|
135
135
|
- doc/rdoc/files/lib/wee/continuation/core/component_rb.html
|
136
|
-
- doc/rdoc/files/lib/wee/adaptors/webrick_rb.html
|
137
136
|
- doc/rdoc/files/lib/wee/rendering/html
|
138
137
|
- doc/rdoc/files/lib/wee/rendering/html/brushes_rb.html
|
139
138
|
- doc/rdoc/files/lib/wee/rendering/html/canvas_rb.html
|
140
139
|
- doc/rdoc/files/lib/wee/rendering/html/writer_rb.html
|
140
|
+
- doc/rdoc/files/lib/wee/adaptors/webrick_rb.html
|
141
141
|
- doc/rdoc/files/lib/wee/skeleton/og
|
142
142
|
- doc/rdoc/files/lib/wee/skeleton/simple
|
143
143
|
- doc/rdoc/files/lib/wee/skeleton/og/models
|
144
|
-
- doc/rdoc/files/lib/wee/skeleton/og/conf
|
145
144
|
- doc/rdoc/files/lib/wee/skeleton/og/components
|
145
|
+
- doc/rdoc/files/lib/wee/skeleton/og/conf
|
146
146
|
- doc/rdoc/files/lib/wee/skeleton/og/run_rb.html
|
147
147
|
- doc/rdoc/files/lib/wee/skeleton/og/models/recipe_rb.html
|
148
|
-
- doc/rdoc/files/lib/wee/skeleton/og/conf/db_rb.html
|
149
148
|
- doc/rdoc/files/lib/wee/skeleton/og/components/main_rb.html
|
149
|
+
- doc/rdoc/files/lib/wee/skeleton/og/conf/db_rb.html
|
150
150
|
- doc/rdoc/files/lib/wee/skeleton/simple/components
|
151
151
|
- doc/rdoc/files/lib/wee/skeleton/simple/run_rb.html
|
152
152
|
- doc/rdoc/files/lib/wee/skeleton/simple/components/main_rb.html
|
@@ -191,22 +191,22 @@ files:
|
|
191
191
|
- doc/rdoc/classes/Wee/PageDecoration.html
|
192
192
|
- doc/rdoc/classes/Wee/RequestHandler.html
|
193
193
|
- doc/rdoc/classes/Wee/Decoration.html
|
194
|
-
- doc/rdoc/classes/Wee/
|
194
|
+
- doc/rdoc/classes/Wee/AnswerDecoration.html
|
195
195
|
- doc/rdoc/classes/Wee/MessageBox.html
|
196
196
|
- doc/rdoc/classes/Wee/Response.html
|
197
197
|
- doc/rdoc/classes/Wee/Snapshot.html
|
198
|
-
- doc/rdoc/classes/Wee/CallbackStream.html
|
199
198
|
- doc/rdoc/classes/Wee/HtmlWriter.html
|
200
|
-
- doc/rdoc/classes/Wee/
|
201
|
-
- doc/rdoc/classes/Wee/
|
199
|
+
- doc/rdoc/classes/Wee/WEBrickAdaptor.html
|
200
|
+
- doc/rdoc/classes/Wee/PagelessRequest.html
|
201
|
+
- doc/rdoc/classes/Wee/CallbackStream.html
|
202
202
|
- doc/rdoc/classes/Wee/StateRegistry.html
|
203
203
|
- doc/rdoc/classes/Wee/Delegate.html
|
204
204
|
- doc/rdoc/classes/Wee/ValueHolder.html
|
205
|
-
- doc/rdoc/classes/Wee/FormDecoration.html
|
206
205
|
- doc/rdoc/classes/Wee/Canvas.html
|
207
|
-
- doc/rdoc/classes/Wee/
|
208
|
-
- doc/rdoc/classes/Wee/StateHolder.html
|
206
|
+
- doc/rdoc/classes/Wee/FormDecoration.html
|
209
207
|
- doc/rdoc/classes/Wee/RedirectResponse.html
|
208
|
+
- doc/rdoc/classes/Wee/StateHolder.html
|
209
|
+
- doc/rdoc/classes/Wee/PagelessApplication.html
|
210
210
|
- doc/rdoc/classes/Wee/RenderingContext.html
|
211
211
|
- doc/rdoc/classes/Wee/Brush.html
|
212
212
|
- doc/rdoc/classes/Wee/Context.html
|
@@ -221,8 +221,8 @@ files:
|
|
221
221
|
- doc/rdoc/classes/Wee/Utils.html
|
222
222
|
- doc/rdoc/classes/Wee/Component.html
|
223
223
|
- doc/rdoc/classes/Wee/Application.html
|
224
|
-
- doc/rdoc/classes/Wee/PagelessSession.html
|
225
224
|
- doc/rdoc/classes/Wee/Presenter.html
|
225
|
+
- doc/rdoc/classes/Wee/PagelessSession.html
|
226
226
|
- doc/rdoc/classes/Wee/ErrorResponse.html
|
227
227
|
- doc/rdoc/classes/Wee/Md5IdGenerator.html
|
228
228
|
- doc/rdoc/classes/Wee/Utils/LRUCache.html
|
@@ -298,6 +298,7 @@ files:
|
|
298
298
|
- lib/wee/utils.rb
|
299
299
|
- lib/wee/pageless.rb
|
300
300
|
- lib/wee/template.rb
|
301
|
+
- lib/wee/abstractsession.rb
|
301
302
|
- lib/wee/continuation.rb
|
302
303
|
- lib/wee/page.rb
|
303
304
|
- lib/wee/skeleton/og
|
@@ -322,14 +323,14 @@ files:
|
|
322
323
|
- lib/wee/idgen/md5.rb
|
323
324
|
- lib/wee/databases/og
|
324
325
|
- lib/wee/databases/og.rb
|
326
|
+
- lib/wee/databases/og/old_scaffolder.rb
|
325
327
|
- lib/wee/databases/og/application.rb
|
326
328
|
- lib/wee/databases/og/session.rb
|
327
|
-
- lib/wee/databases/og/old_scaffolder.rb
|
328
329
|
- lib/wee/databases/og/scaffolder.rb
|
329
330
|
- lib/wee/core/component.rb
|
330
331
|
- lib/wee/core/snapshot.rb
|
331
|
-
- lib/wee/core/presenter.rb
|
332
332
|
- lib/wee/core/decoration.rb
|
333
|
+
- lib/wee/core/presenter.rb
|
333
334
|
- lib/wee/core/valueholder.rb
|
334
335
|
- lib/wee/core/callback.rb
|
335
336
|
- lib/wee/utils/autoreload.rb
|
@@ -339,12 +340,13 @@ files:
|
|
339
340
|
- lib/wee/pageless/session.rb
|
340
341
|
- lib/wee/pageless/request.rb
|
341
342
|
- lib/wee/renderer/html
|
342
|
-
- lib/wee/renderer/html/canvas.rb
|
343
343
|
- lib/wee/renderer/html/brushes.rb
|
344
|
+
- lib/wee/renderer/html/canvas.rb
|
344
345
|
- lib/wee/renderer/html/writer.rb
|
345
346
|
- lib/wee/continuation/core
|
346
347
|
- lib/wee/continuation/session.rb
|
347
348
|
- lib/wee/continuation/core/component.rb
|
349
|
+
- lib/wee/adaptors/fastcgi.rb
|
348
350
|
- lib/wee/adaptors/webrick.rb
|
349
351
|
- lib/cache/cache.rb
|
350
352
|
- bin/wee
|
@@ -358,19 +360,22 @@ files:
|
|
358
360
|
- benchmark/Centrino1300/result.2000.counter.render
|
359
361
|
- benchmark/Centrino1300/result.2000.filehandler
|
360
362
|
- benchmark/Centrino600/result.2000.counter.action
|
361
|
-
- benchmark/Centrino600/result.2000.filehandler
|
362
363
|
- benchmark/Centrino600/result.2000.counter.render
|
364
|
+
- benchmark/Centrino600/result.2000.filehandler
|
365
|
+
- examples/ajax
|
363
366
|
- examples/og-test.rb
|
364
367
|
- examples/draw.rb
|
365
368
|
- examples/hw.rb
|
366
369
|
- examples/test.rb
|
367
370
|
- examples/live-update.rb
|
368
|
-
- examples/cc.rb
|
369
371
|
- examples/window.rb
|
372
|
+
- examples/cc.rb
|
370
373
|
- examples/ObjectSpaceBrowser.rb
|
371
|
-
- examples/calendar.rb
|
372
374
|
- examples/calculator.rb
|
375
|
+
- examples/calendar.rb
|
373
376
|
- examples/example.rb
|
377
|
+
- examples/ajax/ajax.rb
|
378
|
+
- examples/ajax/ajax.js
|
374
379
|
test_files: []
|
375
380
|
rdoc_options: []
|
376
381
|
extra_rdoc_files: []
|