nitro 0.17.0 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +124 -0
- data/README +2 -2
- data/Rakefile +4 -12
- data/bin/nitro +1 -1
- data/bin/nitrogen +47 -31
- data/doc/AUTHORS +3 -3
- data/doc/RELEASES +50 -1
- data/examples/README +7 -0
- data/lib/nitro.rb +5 -4
- data/lib/nitro/{adapters → adapter}/cgi.rb +2 -4
- data/lib/nitro/{adapters → adapter}/fastcgi.rb +1 -1
- data/lib/nitro/{adapters → adapter}/webrick.rb +5 -10
- data/lib/nitro/buffering.rb +6 -0
- data/lib/nitro/{builders → builder}/atom.rb +1 -5
- data/lib/nitro/{builders → builder}/form.rb +1 -5
- data/lib/nitro/{builders → builder}/rss.rb +3 -1
- data/lib/nitro/{builders → builder}/table.rb +2 -4
- data/lib/nitro/{builders → builder}/xhtml.rb +3 -5
- data/lib/nitro/{builders → builder}/xml.rb +2 -4
- data/lib/nitro/caching.rb +6 -4
- data/lib/nitro/caching/output.rb +18 -11
- data/lib/nitro/context.rb +3 -1
- data/lib/nitro/controller.rb +29 -18
- data/lib/nitro/dispatcher.rb +2 -4
- data/lib/nitro/element.rb +2 -0
- data/lib/nitro/environment.rb +2 -4
- data/lib/nitro/errors.rb +69 -0
- data/lib/nitro/mail.rb +2 -4
- data/lib/nitro/markup.rb +20 -3
- data/lib/nitro/output.rb +5 -9
- data/lib/nitro/part.rb +2 -3
- data/lib/nitro/render.rb +49 -30
- data/lib/nitro/request.rb +2 -1
- data/lib/nitro/runner.rb +23 -12
- data/lib/nitro/scaffold.rb +5 -3
- data/lib/nitro/service.rb +22 -0
- data/lib/nitro/service/xmlrpc.rb +42 -0
- data/lib/nitro/session.rb +2 -4
- data/lib/nitro/template.rb +8 -10
- data/lib/nitro/testing.rb +0 -4
- data/proto/public/error.xhtml +27 -2
- data/test/nitro/{adapters → adapter}/raw_post1.bin +0 -0
- data/test/nitro/{adapters → adapter}/tc_cgi.rb +1 -1
- data/test/nitro/{adapters → adapter}/tc_webrick.rb +1 -1
- data/test/nitro/{builders → builder}/tc_atom.rb +1 -1
- data/test/nitro/{builders → builder}/tc_rss.rb +1 -1
- data/test/nitro/{builders → builder}/tc_table.rb +1 -1
- data/test/nitro/{builders → builder}/tc_xhtml.rb +1 -1
- data/test/nitro/{builders → builder}/tc_xml.rb +1 -1
- data/test/nitro/tc_caching.rb +18 -0
- data/test/nitro/tc_controller.rb +1 -1
- data/test/nitro/tc_mail.rb +3 -1
- metadata +33 -168
- data/examples/README.windows +0 -9
- data/examples/ajax/controller.rb +0 -21
- data/examples/ajax/public/index.xhtml +0 -72
- data/examples/ajax/public/js/ajax.js +0 -64
- data/examples/ajax/run.rb +0 -14
- data/examples/blog/README +0 -70
- data/examples/blog/conf/apache.conf +0 -30
- data/examples/blog/conf/apache.conf.new +0 -53
- data/examples/blog/conf/lhttpd.conf +0 -79
- data/examples/blog/conf/locales/de.yml +0 -4
- data/examples/blog/conf/locales/en.yml +0 -4
- data/examples/blog/log/README +0 -3
- data/examples/blog/log/apache.error_log +0 -6647
- data/examples/blog/log/rewrite_log +0 -161
- data/examples/blog/public/base.xsl +0 -153
- data/examples/blog/public/fcgi.rb +0 -5
- data/examples/blog/public/m/bubbles.gif +0 -0
- data/examples/blog/public/m/comments_curve.gif +0 -0
- data/examples/blog/public/m/down.gif +0 -0
- data/examples/blog/public/m/footer_bg.gif +0 -0
- data/examples/blog/public/m/garrow.gif +0 -0
- data/examples/blog/public/m/gbull.gif +0 -0
- data/examples/blog/public/m/grbull.gif +0 -0
- data/examples/blog/public/m/h1_bg.gif +0 -0
- data/examples/blog/public/m/header_bg.gif +0 -0
- data/examples/blog/public/m/nitro.gif +0 -0
- data/examples/blog/public/m/obull.gif +0 -0
- data/examples/blog/public/m/page_bg.gif +0 -0
- data/examples/blog/public/m/rss.gif +0 -0
- data/examples/blog/public/m/side_title_bg.gif +0 -0
- data/examples/blog/public/m/sidebar_bg.gif +0 -0
- data/examples/blog/public/style.css +0 -305
- data/examples/blog/run.rb +0 -43
- data/examples/blog/src/blog.rb +0 -21
- data/examples/blog/src/controller.rb +0 -151
- data/examples/blog/src/mailer.rb +0 -23
- data/examples/blog/src/models/blog.rb +0 -33
- data/examples/blog/src/models/content.rb +0 -18
- data/examples/blog/src/views/blog_entry_email.xhtml +0 -16
- data/examples/blog/src/views/comments.xhtml +0 -36
- data/examples/blog/src/views/entry_form.xhtml +0 -22
- data/examples/blog/src/views/error.xhtml +0 -56
- data/examples/blog/src/views/index.xhtml +0 -49
- data/examples/blog/src/views/login.xhtml +0 -26
- data/examples/blog/src/views/recent_posts.xhtml +0 -14
- data/examples/blog/src/views/view_entry.xhtml +0 -37
- data/examples/blog/src/views/view_entry.xml +0 -12
- data/examples/blog/src/xsl/base.xsl +0 -160
- data/examples/blog/src/xsl/style.xsl +0 -143
- data/examples/blog/test/tc_blog.rb +0 -43
- data/examples/flash/log/README +0 -3
- data/examples/flash/root/index.xhtml +0 -16
- data/examples/flash/root/show_inline_text.xhtml +0 -17
- data/examples/flash/run.rb +0 -7
- data/examples/no_xsl_blog/README +0 -24
- data/examples/no_xsl_blog/conf/apache.conf +0 -30
- data/examples/no_xsl_blog/conf/lhttpd.conf +0 -79
- data/examples/no_xsl_blog/conf/locales/de.yml +0 -4
- data/examples/no_xsl_blog/conf/locales/en.yml +0 -4
- data/examples/no_xsl_blog/lib/blog.rb +0 -16
- data/examples/no_xsl_blog/lib/blog/controller.rb +0 -116
- data/examples/no_xsl_blog/lib/blog/model.rb +0 -35
- data/examples/no_xsl_blog/lib/blog/template.rb +0 -138
- data/examples/no_xsl_blog/lib/content.rb +0 -47
- data/examples/no_xsl_blog/log/README +0 -3
- data/examples/no_xsl_blog/log/apache.error_log +0 -473
- data/examples/no_xsl_blog/public/comments.xhtml +0 -36
- data/examples/no_xsl_blog/public/entry_form.xhtml +0 -22
- data/examples/no_xsl_blog/public/fcgi.rb +0 -5
- data/examples/no_xsl_blog/public/index.xhtml +0 -39
- data/examples/no_xsl_blog/public/login.xhtml +0 -21
- data/examples/no_xsl_blog/public/m/bubbles.gif +0 -0
- data/examples/no_xsl_blog/public/m/comments_curve.gif +0 -0
- data/examples/no_xsl_blog/public/m/down.gif +0 -0
- data/examples/no_xsl_blog/public/m/footer_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/garrow.gif +0 -0
- data/examples/no_xsl_blog/public/m/gbull.gif +0 -0
- data/examples/no_xsl_blog/public/m/grbull.gif +0 -0
- data/examples/no_xsl_blog/public/m/h1_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/header_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/nitro.gif +0 -0
- data/examples/no_xsl_blog/public/m/obull.gif +0 -0
- data/examples/no_xsl_blog/public/m/page_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/rss.gif +0 -0
- data/examples/no_xsl_blog/public/m/side_title_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/sidebar_bg.gif +0 -0
- data/examples/no_xsl_blog/public/recent_posts.xhtml +0 -14
- data/examples/no_xsl_blog/public/style.css +0 -299
- data/examples/no_xsl_blog/public/view_entry.xhtml +0 -25
- data/examples/no_xsl_blog/public/view_entry.xml +0 -12
- data/examples/no_xsl_blog/run.rb +0 -35
- data/examples/tiny/README +0 -14
- data/examples/tiny/conf/apache.conf +0 -30
- data/examples/tiny/conf/lhttpd.conf +0 -79
- data/examples/tiny/log/README +0 -3
- data/examples/tiny/log/apache.error_log +0 -154
- data/examples/tiny/public/deep/dir/hello.xhtml +0 -3
- data/examples/tiny/public/fcgi.rb +0 -5
- data/examples/tiny/public/include.xhtml +0 -3
- data/examples/tiny/public/index.xhtml +0 -55
- data/examples/tiny/public/nitro.png +0 -0
- data/examples/tiny/public/upload.xhtml +0 -21
- data/examples/tiny/run.rb +0 -7
- data/examples/wee_style/README +0 -10
- data/examples/wee_style/run.rb +0 -50
- data/examples/why_wiki/README +0 -5
- data/examples/why_wiki/run.rb +0 -59
- data/proto/public/js/ajax.js +0 -63
data/lib/nitro/markup.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
# (c) 2004 Navel, all rights reserved.
|
3
|
-
# $Id: markup.rb 7 2005-04-12 14:24:10Z gmosx $
|
1
|
+
require 'redcloth'
|
4
2
|
|
5
3
|
require 'glue/property'
|
6
4
|
|
@@ -127,4 +125,23 @@ module Markup
|
|
127
125
|
|
128
126
|
end
|
129
127
|
|
128
|
+
# Markup shader.
|
129
|
+
#
|
130
|
+
# === Examples
|
131
|
+
#
|
132
|
+
# <h1>#{{Welcome}}</h1>
|
133
|
+
|
134
|
+
class MarkupShader < Shader
|
135
|
+
|
136
|
+
def process(hash, text)
|
137
|
+
# handle strings
|
138
|
+
text.gsub!(/\#\{\{(.*?)\}\}/, '#{RedCloth.new(\1).to_html}')
|
139
|
+
|
140
|
+
process_next(hash, text)
|
141
|
+
end
|
142
|
+
|
130
143
|
end
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
# * George Moschovitis <gm@navel.gr>
|
data/lib/nitro/output.rb
CHANGED
@@ -1,12 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
require 'nitro/
|
6
|
-
require 'nitro/builders/xhtml'
|
7
|
-
require 'nitro/builders/rss'
|
8
|
-
require 'nitro/builders/form'
|
9
|
-
require 'nitro/builders/table'
|
1
|
+
require 'nitro/builder/xml'
|
2
|
+
require 'nitro/builder/xhtml'
|
3
|
+
require 'nitro/builder/rss'
|
4
|
+
require 'nitro/builder/form'
|
5
|
+
require 'nitro/builder/table'
|
10
6
|
|
11
7
|
module Nitro
|
12
8
|
|
data/lib/nitro/part.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
# UNDER CONSTRUCTION, dont use yet!
|
1
|
+
# WARNING: UNDER CONSTRUCTION, dont use yet!
|
2
2
|
|
3
3
|
require 'glue/attribute'
|
4
4
|
|
5
5
|
module Nitro
|
6
6
|
|
7
7
|
class Part
|
8
|
-
cattr_accessor :parts_root,
|
8
|
+
cattr_accessor :parts_root, '/home/gmosx/private/plasma/src'
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
@@ -20,4 +20,3 @@ module Kernel
|
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
23
|
-
|
data/lib/nitro/render.rb
CHANGED
@@ -6,6 +6,7 @@ require 'glue/object'
|
|
6
6
|
|
7
7
|
require 'nitro/shaders'
|
8
8
|
require 'nitro/buffering'
|
9
|
+
require 'nitro/errors'
|
9
10
|
|
10
11
|
module Nitro
|
11
12
|
|
@@ -25,6 +26,10 @@ module Rendering
|
|
25
26
|
|
26
27
|
@@sync = Sync.new
|
27
28
|
|
29
|
+
# The default template root
|
30
|
+
|
31
|
+
mattr_accessor :default_template_root, 'public'
|
32
|
+
|
28
33
|
# The default template name (no extension).
|
29
34
|
|
30
35
|
mattr_accessor :default_template, 'index'
|
@@ -54,20 +59,18 @@ module Rendering
|
|
54
59
|
# Returns nil if no template file is found.
|
55
60
|
|
56
61
|
def self.template_for_action(template_root, action, ext = :xhtml)
|
57
|
-
|
58
62
|
# attempt to find a template of the form
|
59
63
|
# template_root/action.xhtml
|
60
64
|
|
61
65
|
path = "#{template_root}/#{action.gsub(/__/, '/')}.#{ext}".squeeze('/')
|
62
|
-
|
66
|
+
|
63
67
|
unless File.exist?(path)
|
64
|
-
|
65
68
|
# attempt to find a template of the form
|
66
69
|
# template_root/action/index.xhtml
|
67
70
|
|
68
71
|
path = "#{template_root}/#{action.gsub(/__/, '/')}/#{Rendering.default_template}.#{ext}".squeeze('/')
|
69
72
|
|
70
|
-
unless File.exist?(path)
|
73
|
+
unless File.exist?(path)
|
71
74
|
# No template found!
|
72
75
|
path = nil
|
73
76
|
end
|
@@ -89,7 +92,7 @@ module Rendering
|
|
89
92
|
|
90
93
|
# Compile a controller action.
|
91
94
|
|
92
|
-
def self.compile_action(klass, action
|
95
|
+
def self.compile_action(klass, action)
|
93
96
|
@@sync.synchronize do
|
94
97
|
Aspects.include_advice_modules(klass)
|
95
98
|
|
@@ -99,7 +102,7 @@ module Rendering
|
|
99
102
|
|
100
103
|
return false unless action
|
101
104
|
|
102
|
-
Logger.debug "Compiling action '#{template_root}/#{action}'" if $DBG
|
105
|
+
Logger.debug "Compiling action '#{klass.template_root}/#{action}'" if $DBG
|
103
106
|
|
104
107
|
valid = false
|
105
108
|
|
@@ -166,13 +169,23 @@ module Rendering
|
|
166
169
|
end
|
167
170
|
view ||= action
|
168
171
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
172
|
+
cklass = klass
|
173
|
+
|
174
|
+
while cklass.respond_to?(:template_root)
|
175
|
+
if template = template_for_action(cklass.template_root, view.to_s)
|
176
|
+
valid = true
|
177
|
+
code << %{
|
178
|
+
#{action}_template;
|
179
|
+
}
|
180
|
+
break
|
181
|
+
end
|
182
|
+
|
183
|
+
# don't search in parent template roots if an
|
184
|
+
# action is defined.
|
185
|
+
|
186
|
+
break if valid
|
187
|
+
|
188
|
+
cklass = cklass.superclass
|
176
189
|
end
|
177
190
|
|
178
191
|
# raise "Invalid action '#{action}' for '#{klass}'!" unless valid
|
@@ -194,26 +207,28 @@ module Rendering
|
|
194
207
|
end
|
195
208
|
}
|
196
209
|
|
210
|
+
# First compile the action method.
|
211
|
+
|
212
|
+
# begin
|
213
|
+
klass.class_eval(code)
|
214
|
+
# rescue SyntaxError => e
|
215
|
+
# raise ActionCompileError.new(code, action, e)
|
216
|
+
# end
|
217
|
+
|
218
|
+
# Try to compile the template (if exists).
|
219
|
+
|
197
220
|
if template
|
198
|
-
code
|
221
|
+
code = %{
|
199
222
|
def #{action}_template
|
200
223
|
#{transform_template(template, Rendering.shader)}
|
201
224
|
end
|
202
225
|
}
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
# lines in error radius.
|
210
|
-
klass.class_eval(code, __FILE__, __LINE__)
|
211
|
-
rescue SyntaxError => e
|
212
|
-
where = "Action: #{action}"
|
213
|
-
where += ", Template: #{template}" if template
|
214
|
-
Logger.error "Action compilation error, #{where}"
|
215
|
-
Logger.error e
|
216
|
-
return false
|
226
|
+
|
227
|
+
begin
|
228
|
+
klass.class_eval(code, template)
|
229
|
+
rescue SyntaxError => e
|
230
|
+
raise TemplateCompileError.new(code, template, e)
|
231
|
+
end
|
217
232
|
end
|
218
233
|
end
|
219
234
|
|
@@ -307,9 +322,11 @@ private
|
|
307
322
|
# Send a redirect response.
|
308
323
|
|
309
324
|
def redirect(url, status = 303)
|
325
|
+
url = url.to_s
|
326
|
+
url = "#{@context.host_url}/#{url.gsub(/^\//, '')}" unless url =~ /http/
|
310
327
|
@context.status = status
|
311
|
-
@context.out = "<html><a href=\"#{url
|
312
|
-
@context.response_headers['location'] = url
|
328
|
+
@context.out = "<html><a href=\"#{url}\">#{url}</a>.</html>\n"
|
329
|
+
@context.response_headers['location'] = url
|
313
330
|
|
314
331
|
raise RenderExit
|
315
332
|
end
|
@@ -363,3 +380,5 @@ private
|
|
363
380
|
end
|
364
381
|
|
365
382
|
end
|
383
|
+
|
384
|
+
# * George Moschovitis <gm@navel.gr>
|
data/lib/nitro/request.rb
CHANGED
data/lib/nitro/runner.rb
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
# * George Moschovitis <gm@navel.gr>
|
4
|
-
# * James Britt <james_b@neurogami.com>
|
5
|
-
# (c) 2004-2005 Navel, all rights reserved.
|
6
|
-
# $Id: runner.rb 9 2005-04-13 00:08:20Z nasis $
|
7
|
-
|
8
3
|
require 'optparse'
|
9
4
|
|
10
5
|
require 'glue/misc'
|
@@ -222,12 +217,12 @@ class Runner
|
|
222
217
|
alias_method :setup_production, :setup_live
|
223
218
|
|
224
219
|
def invoke_fcgi_proc(conf)
|
225
|
-
require 'nitro/
|
220
|
+
require 'nitro/adapter/fastcgi'
|
226
221
|
FastCGI.start(conf)
|
227
222
|
end
|
228
223
|
|
229
224
|
def invoke_cgi_proc(conf)
|
230
|
-
require 'nitro/
|
225
|
+
require 'nitro/adapter/cgi'
|
231
226
|
Cgi.start(conf)
|
232
227
|
end
|
233
228
|
|
@@ -258,19 +253,19 @@ class Runner
|
|
258
253
|
|
259
254
|
case @server
|
260
255
|
when :webrick
|
261
|
-
require 'nitro/
|
256
|
+
require 'nitro/adapter/webrick'
|
262
257
|
Webrick.start(conf)
|
263
|
-
|
258
|
+
|
264
259
|
when :lhttpd
|
265
|
-
require 'nitro/
|
260
|
+
require 'nitro/adapter/fastcgi'
|
266
261
|
`lighttpd -f conf/lhttpd.conf`
|
267
262
|
|
268
263
|
when :apache
|
269
|
-
require 'nitro/
|
264
|
+
require 'nitro/adapter/fastcgi'
|
270
265
|
`apachectl -d #{Dir.pwd} -f conf/apache.conf -k start`
|
271
266
|
|
272
267
|
when :cgi
|
273
|
-
require 'nitro/
|
268
|
+
require 'nitro/adapter/cgi'
|
274
269
|
end
|
275
270
|
|
276
271
|
when :stop
|
@@ -287,6 +282,18 @@ class Runner
|
|
287
282
|
end
|
288
283
|
end
|
289
284
|
|
285
|
+
def daemonize
|
286
|
+
require 'daemons/daemonize'
|
287
|
+
pwd = Dir.pwd
|
288
|
+
Daemonize.daemonize(File.join(pwd, 'log/app.log'))
|
289
|
+
# Restore the original pwd (daemonize sets the
|
290
|
+
# pwd to '/').
|
291
|
+
Dir.chdir(pwd)
|
292
|
+
# Set the logger to a file (daemonize closes the
|
293
|
+
# std streams).
|
294
|
+
Logger.set(Logger.new('log/app.log'))
|
295
|
+
end
|
296
|
+
|
290
297
|
# Helper method.
|
291
298
|
|
292
299
|
def self.run(conf)
|
@@ -313,6 +320,7 @@ end
|
|
313
320
|
|
314
321
|
def self.run(conf = nil)
|
315
322
|
runner = Runner.new.setup
|
323
|
+
runner.daemonize if runner.daemon
|
316
324
|
conf ||= Conf.new({})
|
317
325
|
$nitro_environment = conf
|
318
326
|
yield(conf) if block_given?
|
@@ -320,3 +328,6 @@ def self.run(conf = nil)
|
|
320
328
|
end
|
321
329
|
|
322
330
|
end
|
331
|
+
|
332
|
+
# * George Moschovitis <gm@navel.gr>
|
333
|
+
# * James Britt <james_b@neurogami.com>
|
data/lib/nitro/scaffold.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'facet/string/singular'
|
2
|
+
require 'facet/string/demodulize'
|
3
|
+
require 'facet/string/underscore'
|
2
4
|
|
3
5
|
module Nitro
|
4
6
|
|
@@ -23,8 +25,8 @@ module Scaffolding
|
|
23
25
|
def scaffold(klass, options = {})
|
24
26
|
|
25
27
|
oid = options[:oid] || 'oid'
|
26
|
-
name = options[:name] ||
|
27
|
-
list_name = options[:list_name] ||
|
28
|
+
name = options[:name] || klass.to_s.demodulize.underscore.downcase
|
29
|
+
list_name = options[:list_name] || name.plural
|
28
30
|
options[:nosuffix] ? suffix = nil : suffix = "_#{name}"
|
29
31
|
|
30
32
|
# Add methods to the scaffolded class.
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'nitro/controller'
|
2
|
+
|
3
|
+
module Nitro
|
4
|
+
|
5
|
+
class Service < Nitro::Controller
|
6
|
+
|
7
|
+
def index
|
8
|
+
method, args = decode_request(request.raw_body)
|
9
|
+
|
10
|
+
res = send(method, *args)
|
11
|
+
|
12
|
+
response.content_type = 'text/xml'
|
13
|
+
print encode_response(method, res)
|
14
|
+
|
15
|
+
return :stop
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
# * George Moschovitis <gm@navel.gr>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'xmlrpc/marshal'
|
2
|
+
|
3
|
+
require 'nitro/service'
|
4
|
+
|
5
|
+
module Nitro
|
6
|
+
|
7
|
+
# The XML-RPC protocol.
|
8
|
+
|
9
|
+
module XmlRpc
|
10
|
+
|
11
|
+
# === In
|
12
|
+
#
|
13
|
+
# [+request+]
|
14
|
+
# Raw request data.
|
15
|
+
#
|
16
|
+
# === Out
|
17
|
+
#
|
18
|
+
# [+method+]
|
19
|
+
# [+args+]
|
20
|
+
|
21
|
+
def decode_request(request)
|
22
|
+
method, args = XMLRPC::Marshal.load_call(request)
|
23
|
+
return method.gsub(/\./, '__'), args
|
24
|
+
end
|
25
|
+
|
26
|
+
def encode_response(method_name, response)
|
27
|
+
XMLRPC::Marshal.dump_response(response)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
# The XML-RPC base service.
|
35
|
+
|
36
|
+
class XmlRpcService < Service
|
37
|
+
include XmlRpc
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
# * George Moschovitis <gm@navel.gr>
|
data/lib/nitro/session.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
# * George Moschovitis <gm@navel.gr>
|
2
|
-
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: session.rb 1 2005-04-11 11:04:30Z gmosx $
|
4
|
-
|
5
1
|
require 'md5'
|
6
2
|
require 'webrick'
|
7
3
|
|
@@ -156,3 +152,5 @@ class SessionStore
|
|
156
152
|
end
|
157
153
|
|
158
154
|
end
|
155
|
+
|
156
|
+
# * George Moschovitis <gm@navel.gr>
|
data/lib/nitro/template.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
# * George Moschovitis <gm@navel.gr>
|
2
|
-
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: template.rb 30 2005-04-25 12:28:02Z gmosx $
|
4
|
-
|
5
1
|
require 'glue/flexob'
|
6
2
|
|
7
3
|
module Nitro
|
@@ -79,20 +75,20 @@ module TemplateMixin
|
|
79
75
|
# Transform the processing instructions, use <?r as
|
80
76
|
# a marker.
|
81
77
|
|
82
|
-
text.gsub!(/\?>/, "
|
83
|
-
text.gsub!(/<\?r(\s?)/, "
|
78
|
+
text.gsub!(/\?>/, "; #{buffer} << %^")
|
79
|
+
text.gsub!(/<\?r(\s?)/, "^; ")
|
84
80
|
|
85
81
|
# Transform alternative code tags.
|
86
82
|
# (very useful in xsl stylesheets)
|
87
83
|
|
88
|
-
text.gsub!(/<\/ruby>/, "
|
89
|
-
text.gsub!(/<ruby>/, "
|
84
|
+
text.gsub!(/<\/ruby>/, "; #{buffer} << %^")
|
85
|
+
text.gsub!(/<ruby>/, "^; ")
|
90
86
|
|
91
87
|
# Also handle erb/asp/jsp style tags. Those tags
|
92
88
|
# *cannot* be used with an xslt stylesheet.
|
93
89
|
|
94
|
-
text.gsub!(/%>/, "
|
95
|
-
text.gsub!(/<%/, "
|
90
|
+
text.gsub!(/%>/, "; #{buffer} << %^")
|
91
|
+
text.gsub!(/<%/, "^; ")
|
96
92
|
|
97
93
|
# Alterative versions of interpolation.
|
98
94
|
# (very useful in xsl stylesheets)
|
@@ -186,3 +182,5 @@ class FileTemplate < Flexob
|
|
186
182
|
end
|
187
183
|
|
188
184
|
end
|
185
|
+
|
186
|
+
# * George Moschovitis <gm@navel.gr>
|