nitro 0.14.0 → 0.15.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 +117 -0
- data/INSTALL +4 -0
- data/README +30 -31
- data/Rakefile +2 -2
- data/bin/nitro +10 -1
- data/bin/{new_app.rb → nitrogen} +12 -22
- data/doc/AUTHORS +4 -13
- data/doc/RELEASES +98 -0
- data/examples/ajax/run.rb +1 -3
- data/examples/blog/cache/entriesadmin +1 -1
- data/examples/blog/conf/locales/de.yml +4 -0
- data/examples/blog/conf/locales/en.yml +4 -0
- data/examples/blog/public/fcgi.rb +2 -3
- data/examples/blog/run.rb +10 -5
- data/examples/blog/src/controller.rb +21 -10
- data/examples/blog/src/mailer.rb +1 -1
- data/examples/blog/src/views/index.xhtml +2 -2
- data/examples/blog/src/xsl/style.xsl +6 -1
- data/examples/flash/run.rb +1 -3
- data/examples/no_xsl_blog/conf/locales/de.yml +4 -0
- data/examples/no_xsl_blog/conf/locales/en.yml +4 -0
- data/examples/no_xsl_blog/lib/blog/controller.rb +10 -0
- data/examples/no_xsl_blog/lib/blog/template.rb +4 -0
- data/examples/no_xsl_blog/public/fcgi.rb +2 -1
- data/examples/no_xsl_blog/public/index.xhtml +1 -1
- data/examples/no_xsl_blog/run.rb +8 -4
- data/examples/tiny/public/deep/dir/hello.xhtml +1 -0
- data/examples/tiny/public/fcgi.rb +2 -1
- data/examples/tiny/public/index.xhtml +5 -2
- data/examples/tiny/run.rb +1 -3
- data/examples/wee_style/run.rb +1 -3
- data/examples/why_wiki/run.rb +1 -3
- data/lib/nitro.rb +5 -2
- data/lib/nitro/builders/form.rb +8 -3
- data/lib/nitro/caching/stores.rb +3 -3
- data/lib/nitro/controller.rb +26 -6
- data/lib/nitro/dispatcher.rb +21 -13
- data/lib/nitro/environment.rb +23 -0
- data/lib/nitro/filters.rb +10 -8
- data/lib/nitro/localization.rb +127 -13
- data/lib/nitro/part.rb +24 -0
- data/lib/nitro/render.rb +19 -15
- data/lib/nitro/runner.rb +2 -1
- data/lib/nitro/scaffold.rb +69 -17
- data/lib/nitro/shaders.rb +54 -83
- data/lib/nitro/template.rb +7 -1
- data/proto/README +11 -0
- data/proto/conf/apache.conf +51 -0
- data/proto/conf/lhttpd.conf +107 -0
- data/proto/public/error.xhtml +56 -0
- data/proto/public/fcgi.rb +5 -0
- data/proto/public/index.xhtml +83 -0
- data/proto/public/js/ajax.js +63 -0
- data/proto/public/media/nitro.png +0 -0
- data/proto/run.rb +11 -0
- data/test/nitro/tc_controller.rb +1 -4
- data/test/nitro/tc_dispatcher.rb +8 -0
- data/test/nitro/tc_localization.rb +49 -0
- metadata +34 -6
- data/bin/new_form.rb +0 -54
@@ -0,0 +1,56 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Error</title>
|
4
|
+
<style>
|
5
|
+
.path {
|
6
|
+
padding: 5px;
|
7
|
+
font-size: 140%;
|
8
|
+
background: #ddd;
|
9
|
+
}
|
10
|
+
.error {
|
11
|
+
padding: 5px;
|
12
|
+
padding-top: 15px;
|
13
|
+
font-size: 140%;
|
14
|
+
color: #f00;
|
15
|
+
}
|
16
|
+
.load {
|
17
|
+
padding: 5px;
|
18
|
+
color: #555;
|
19
|
+
}
|
20
|
+
h2 {
|
21
|
+
padding-left: 5px;
|
22
|
+
background: #eee;
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
</head>
|
26
|
+
<body>
|
27
|
+
<h1>Error</h1>
|
28
|
+
|
29
|
+
<?r for error, path in @context.rendering_errors ?>
|
30
|
+
<div class="path"><strong>Path:</strong> #{path}</div>
|
31
|
+
<div class="error"><strong>#{error.class.name}:</strong> #{N::Markup.expand(error.to_s)}</div>
|
32
|
+
<div class="load">Click here to <strong><a href="#{request.uri}">reload</a></strong>.</div>
|
33
|
+
<div class="load">Click here to go to the <strong><a href="#{request.referer}">referer</a></strong>.</div>
|
34
|
+
<h2><a href="#" onclick="document.getElementById('trace').style.display = 'block'; return false">Stack Trace</a></h2>
|
35
|
+
<p id="trace" style="display: none">#{error.backtrace.join('<br />')}</p>
|
36
|
+
<?r end ?>
|
37
|
+
|
38
|
+
<h2><a href="#" onclick="document.getElementById('request').style.display = 'block'; return false">Request</a></h2>
|
39
|
+
<div id="request" style="display: none">
|
40
|
+
<p><strong>Parameters:</strong> #{request.params.reject{ |k,v| k == :__RELOADED__ }.inspect}</p>
|
41
|
+
<p><strong>Cookies:</strong> #{request.cookies.inspect}</p>
|
42
|
+
<p><strong>Headers:</strong><br />#{request.headers.collect { |k, v| "#{k} => #{v}" }.join('<br />')}</p>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<h2><a href="#" onclick="document.getElementById('response').style.display = 'block'; return false">Response</a></h2>
|
46
|
+
<div id="response" style="display: none">
|
47
|
+
<p><strong>Headers:</strong> #{request.response_headers.inspect}</p>
|
48
|
+
<p><strong>Cookies:</strong> #{request.response_cookies.inspect}</p>
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<h2><a href="#" onclick="document.getElementById('session').style.display = 'block'; return false">Session</a></h2>
|
52
|
+
<div id="session" style="display: none">
|
53
|
+
<p><strong>Values:</strong> #{session.inspect}</p>
|
54
|
+
</div>
|
55
|
+
</body>
|
56
|
+
</html>
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<title>Nitro, Feel the magic!</title>
|
6
|
+
<style>
|
7
|
+
body { margin: 10px; background-color: #fff; color: #333; }
|
8
|
+
|
9
|
+
body, p, ol, ul, td {
|
10
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
11
|
+
font-size: 12px;
|
12
|
+
line-height: 18px;
|
13
|
+
}
|
14
|
+
|
15
|
+
h1 { margin-top: 15px; margin-bottom: 45px; }
|
16
|
+
|
17
|
+
li {
|
18
|
+
margin-bottom: 7px;
|
19
|
+
}
|
20
|
+
|
21
|
+
pre {
|
22
|
+
background-color: #eee;
|
23
|
+
padding: 10px;
|
24
|
+
font-size: 11px;
|
25
|
+
}
|
26
|
+
|
27
|
+
a { color: #000; }
|
28
|
+
a:visited { color: #666; }
|
29
|
+
a:hover { color: #fff; background-color:#000; }
|
30
|
+
|
31
|
+
img { border: none; }
|
32
|
+
</style>
|
33
|
+
</head>
|
34
|
+
<body>
|
35
|
+
|
36
|
+
<a href="http://nitro.rubyforge.org" target="_blank"><img src="media/nitro.png" /></a>
|
37
|
+
|
38
|
+
<h1>You have successfully installed Nitro!</h1>
|
39
|
+
|
40
|
+
<p><b>Before you move on</b>, verify that the following conditions have been met:</p>
|
41
|
+
|
42
|
+
<ol>
|
43
|
+
<li>The log directory and the empty log files must be writable to the web server (<code>chmod -R 666 log/*</code>).
|
44
|
+
<li>
|
45
|
+
The shebang line in the ctl file must reference your Ruby installation. <br/>
|
46
|
+
You might need to change it to <code>#!/usr/bin/env ruby</code> or point directly at the installation.
|
47
|
+
</li>
|
48
|
+
</ol>
|
49
|
+
|
50
|
+
<p>Have a look at the <b>examples</b>:</p>
|
51
|
+
|
52
|
+
<ol>
|
53
|
+
<li><b>examples/blog</b>: A simple Blog, featuring a nice XSLT based template.</li>
|
54
|
+
<li><b>examples/no_xsl_blog</b>: The same example without using XSLT (easier to setup under Windows).</li>
|
55
|
+
<li><b>examples/why_wiki</b>: A conversion of why_'s wiki.</li>
|
56
|
+
<li><b>examples/wee_style</b>: A Wee-style (ruby code only) example.</li>
|
57
|
+
<li><b>examples/ajax</b>: Implement Google suggest-style functionality using ajax techniques.</li>
|
58
|
+
<li><b>examples/tiny</b>: A small example to verify your installation.</li>
|
59
|
+
</ol>
|
60
|
+
|
61
|
+
<p>Here is <b>what do next</b>:</p>
|
62
|
+
|
63
|
+
<ol>
|
64
|
+
<li>Add your xhtml files in the 'public' directory. Those files are
|
65
|
+
automagically converted to controller actions by Nitro
|
66
|
+
</li>
|
67
|
+
<li>Place additional media files, css, or xsl files in the public directory.</li>
|
68
|
+
<li>Create your models and controllers.</li>
|
69
|
+
<li>Develop your application utilizing Nitro's powerful features.</li>
|
70
|
+
</ol>
|
71
|
+
|
72
|
+
<br />
|
73
|
+
|
74
|
+
<p>
|
75
|
+
<b>Having problems getting up and running?</b><br />
|
76
|
+
First try debugging it yourself by looking at the log files.
|
77
|
+
If you get stuck, post your problem to the <a href="http://rubyforge.org/mailman/listinfo/nitro-general">Nitro Mailing
|
78
|
+
List</a> at <a href="http://www.rubyforge.com">Rubyforge</a>.
|
79
|
+
</p>
|
80
|
+
|
81
|
+
<br /><br />
|
82
|
+
</body>
|
83
|
+
</html>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
function ajax_get(url) {
|
3
|
+
req = xml_http_request_object();
|
4
|
+
req.open("GET", url, false);
|
5
|
+
req.send(null);
|
6
|
+
return req.responseText;
|
7
|
+
}
|
8
|
+
|
9
|
+
function ajax_async_get(url, callback) {
|
10
|
+
req = xml_http_request_object();
|
11
|
+
req.open("GET", url, true);
|
12
|
+
|
13
|
+
req.onreadystatechange = function() {
|
14
|
+
if (req.readyState == 4 && req.status == 200) {
|
15
|
+
return callback(req.responseText);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
req.send(null);
|
20
|
+
}
|
21
|
+
|
22
|
+
function ajax_post(url) {
|
23
|
+
req = xml_http_request_object();
|
24
|
+
req.open("POST", url, false);
|
25
|
+
req.send(null);
|
26
|
+
return req.responseText;
|
27
|
+
}
|
28
|
+
|
29
|
+
function ajax_async_post(url, callback) {
|
30
|
+
req = xml_http_request_object();
|
31
|
+
req.open("POST", url, true);
|
32
|
+
|
33
|
+
req.onreadystatechange = function() {
|
34
|
+
if (req.readyState == 4 && req.status == 200) {
|
35
|
+
return callback(req.responseText);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
req.send(null);
|
40
|
+
}
|
41
|
+
|
42
|
+
function xml_http_request_object() {
|
43
|
+
var req = false;
|
44
|
+
try {
|
45
|
+
req = new ActiveXObject("Msxml2.XMLHTTP");
|
46
|
+
} catch (e) {
|
47
|
+
try {
|
48
|
+
req = new ActiveXObject("Microsoft.XMLHTTP");
|
49
|
+
} catch (e) {
|
50
|
+
try {
|
51
|
+
req = ActiveXObject("Msxml2.XMLHTTP.4.0");
|
52
|
+
} catch (e) {
|
53
|
+
req = false;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
if (!req && typeof XMLHttpRequest!='undefined') {
|
59
|
+
req = new XMLHttpRequest();
|
60
|
+
}
|
61
|
+
|
62
|
+
return req;
|
63
|
+
}
|
Binary file
|
data/proto/run.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# * George Moschovitis <gm@navel.gr>
|
4
|
+
# (c) 2004-2005 Navel, all rights reserved.
|
5
|
+
# $Id: run.rb 331 2005-03-28 11:12:43Z gmosx $
|
6
|
+
|
7
|
+
Dir.chdir File.dirname(__FILE__)
|
8
|
+
|
9
|
+
require 'nitro'
|
10
|
+
|
11
|
+
N::Runner.run(:host => '127.0.0.1', :port => 9999)
|
data/test/nitro/tc_controller.rb
CHANGED
@@ -13,10 +13,7 @@ class TC_Controller < Test::Unit::TestCase # :nodoc: all
|
|
13
13
|
class Blog2Controller < Controller
|
14
14
|
attr_reader :aflag, :tflag
|
15
15
|
|
16
|
-
|
17
|
-
super
|
18
|
-
@template_root = 'test/public/blog'
|
19
|
-
end
|
16
|
+
@template_root = 'test/public/blog'
|
20
17
|
|
21
18
|
def list
|
22
19
|
@aflag = true
|
data/test/nitro/tc_dispatcher.rb
CHANGED
@@ -38,6 +38,14 @@ class TC_Dispatcher < Test::Unit::TestCase # :nodoc: all
|
|
38
38
|
assert_equal BlogController, klass
|
39
39
|
assert_equal '__xhtml__list', action
|
40
40
|
|
41
|
+
klass, action = @d.dispatch('/blog/another/very_litle/list')
|
42
|
+
assert_equal BlogController, klass
|
43
|
+
assert_equal '__xhtml__another__very_litle__list', action
|
44
|
+
|
45
|
+
klass, action = @d.dispatch('/another/litle/list')
|
46
|
+
assert_equal MainController, klass
|
47
|
+
assert_equal '__xhtml__another__litle__list', action
|
48
|
+
|
41
49
|
klass, action, ctype = @d.dispatch('/blog')
|
42
50
|
assert_equal BlogController, klass
|
43
51
|
assert_equal '__xhtml__index', action
|
@@ -0,0 +1,49 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
require 'nitro/localization'
|
7
|
+
|
8
|
+
class TestCaseLocalization < Test::Unit::TestCase # :nodoc: all
|
9
|
+
include N
|
10
|
+
|
11
|
+
def setup
|
12
|
+
locale_en = {
|
13
|
+
'See you' => 'See you',
|
14
|
+
:long_paragraph => 'The best new books, up to 30% reduced price',
|
15
|
+
:price => 'Price: %d %s',
|
16
|
+
:proc_price => proc { |value, cur| "Price: #{value} #{cur}" }
|
17
|
+
}
|
18
|
+
|
19
|
+
locale_de = {
|
20
|
+
'See you' => 'Auf wieder sehen',
|
21
|
+
:long_paragraph => 'Die besten neuer buecher, bis zu 30% reduziert',
|
22
|
+
:price => 'Preis: %d %s',
|
23
|
+
:proc_price => proc { |value, cur| "Preis: #{value} #{cur}" }
|
24
|
+
}
|
25
|
+
|
26
|
+
Localization.add(
|
27
|
+
:en => locale_en,
|
28
|
+
:de => locale_de
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_all
|
33
|
+
lc = Localization.get
|
34
|
+
assert_equal 'See you', lc['See you']
|
35
|
+
assert_equal 'The best new books, up to 30% reduced price', lc[:long_paragraph]
|
36
|
+
|
37
|
+
lc = Localization.get(:en)
|
38
|
+
assert_equal 'See you', lc['See you']
|
39
|
+
assert_equal 'The best new books, up to 30% reduced price', lc[:long_paragraph]
|
40
|
+
assert_equal 'Price: 100 euro', lc[:price, 100, 'euro']
|
41
|
+
assert_equal 'Price: 100 euro', lc[:proc_price, 100, 'euro']
|
42
|
+
|
43
|
+
lc = Localization.get(:de)
|
44
|
+
assert_equal 'Auf wieder sehen', lc['See you']
|
45
|
+
assert_equal 'Die besten neuer buecher, bis zu 30% reduziert', lc[:long_paragraph]
|
46
|
+
assert_equal 'Preis: 100 euro', lc.translate(:price, 100, 'euro')
|
47
|
+
assert_equal 'Preis: 100 euro', lc[:proc_price, 100, 'euro']
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.10
|
|
3
3
|
specification_version: 1
|
4
4
|
name: nitro
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.15.0
|
7
|
+
date: 2005-04-04
|
8
8
|
summary: Nitro Web Engine
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -34,8 +34,7 @@ files:
|
|
34
34
|
- README
|
35
35
|
- install.rb
|
36
36
|
- bin/nitro
|
37
|
-
- bin/
|
38
|
-
- bin/new_form.rb
|
37
|
+
- bin/nitrogen
|
39
38
|
- benchmark/tiny-lhttpd-n-200-c-5.txt
|
40
39
|
- benchmark/simple-webrick-n-200.txt
|
41
40
|
- benchmark/static-webrick-n-200.txt
|
@@ -65,8 +64,11 @@ files:
|
|
65
64
|
- examples/no_xsl_blog/README
|
66
65
|
- examples/no_xsl_blog/log/apache.error_log
|
67
66
|
- examples/no_xsl_blog/log/README
|
67
|
+
- examples/no_xsl_blog/conf/locales
|
68
68
|
- examples/no_xsl_blog/conf/apache.conf
|
69
69
|
- examples/no_xsl_blog/conf/lhttpd.conf
|
70
|
+
- examples/no_xsl_blog/conf/locales/de.yml
|
71
|
+
- examples/no_xsl_blog/conf/locales/en.yml
|
70
72
|
- examples/no_xsl_blog/public/login.xhtml
|
71
73
|
- examples/no_xsl_blog/public/index.xhtml
|
72
74
|
- examples/no_xsl_blog/public/style.css
|
@@ -121,6 +123,9 @@ files:
|
|
121
123
|
- examples/tiny/public/upload.xhtml
|
122
124
|
- examples/tiny/public/fcgi.rb
|
123
125
|
- examples/tiny/public/include.xhtml
|
126
|
+
- examples/tiny/public/deep
|
127
|
+
- examples/tiny/public/deep/dir
|
128
|
+
- examples/tiny/public/deep/dir/hello.xhtml
|
124
129
|
- examples/wee_style/run.rb
|
125
130
|
- examples/wee_style/README
|
126
131
|
- examples/blog/log
|
@@ -133,9 +138,12 @@ files:
|
|
133
138
|
- examples/blog/log/apache.error_log
|
134
139
|
- examples/blog/log/rewrite_log
|
135
140
|
- examples/blog/log/README
|
141
|
+
- examples/blog/conf/locales
|
136
142
|
- examples/blog/conf/apache.conf
|
137
143
|
- examples/blog/conf/lhttpd.conf
|
138
144
|
- examples/blog/conf/apache.conf.new
|
145
|
+
- examples/blog/conf/locales/de.yml
|
146
|
+
- examples/blog/conf/locales/en.yml
|
139
147
|
- examples/blog/cache/entriesadmin
|
140
148
|
- examples/blog/public/style.css
|
141
149
|
- examples/blog/public/m
|
@@ -186,6 +194,21 @@ files:
|
|
186
194
|
- doc/architecture.txt
|
187
195
|
- doc/CHANGELOG.2
|
188
196
|
- doc/bugs.txt
|
197
|
+
- proto/log
|
198
|
+
- proto/conf
|
199
|
+
- proto/doc
|
200
|
+
- proto/public
|
201
|
+
- proto/run.rb
|
202
|
+
- proto/README
|
203
|
+
- proto/conf/apache.conf
|
204
|
+
- proto/conf/lhttpd.conf
|
205
|
+
- proto/public/error.xhtml
|
206
|
+
- proto/public/index.xhtml
|
207
|
+
- proto/public/fcgi.rb
|
208
|
+
- proto/public/js
|
209
|
+
- proto/public/media
|
210
|
+
- proto/public/js/ajax.js
|
211
|
+
- proto/public/media/nitro.png
|
189
212
|
- lib/nitro
|
190
213
|
- lib/nitro.rb
|
191
214
|
- lib/nitro/caching.rb
|
@@ -212,12 +235,15 @@ files:
|
|
212
235
|
- lib/nitro/response.rb
|
213
236
|
- lib/nitro/cluster.rb
|
214
237
|
- lib/nitro/mail.rb
|
238
|
+
- lib/nitro/shaders
|
215
239
|
- lib/nitro/controller.rb
|
216
240
|
- lib/nitro/conf.rb
|
217
241
|
- lib/nitro/dispatcher.rb
|
218
242
|
- lib/nitro/request.rb
|
219
243
|
- lib/nitro/filters
|
244
|
+
- lib/nitro/part.rb
|
220
245
|
- lib/nitro/component.rb
|
246
|
+
- lib/nitro/environment.rb
|
221
247
|
- lib/nitro/markup.rb
|
222
248
|
- lib/nitro/filters.rb
|
223
249
|
- lib/nitro/caching/invalidation.rb
|
@@ -253,6 +279,7 @@ files:
|
|
253
279
|
- test/nitro/tc_context.rb
|
254
280
|
- test/nitro/tc_filters.rb
|
255
281
|
- test/nitro/tc_dispatcher.rb
|
282
|
+
- test/nitro/tc_localization.rb
|
256
283
|
- test/nitro/adapters/tc_webrick.rb
|
257
284
|
- test/nitro/adapters/tc_cgi.rb
|
258
285
|
- test/nitro/adapters/raw_post1.bin
|
@@ -280,6 +307,7 @@ extra_rdoc_files:
|
|
280
307
|
- README
|
281
308
|
executables:
|
282
309
|
- nitro
|
310
|
+
- nitrogen
|
283
311
|
extensions: []
|
284
312
|
requirements: []
|
285
313
|
dependencies:
|
@@ -291,7 +319,7 @@ dependencies:
|
|
291
319
|
-
|
292
320
|
- "="
|
293
321
|
- !ruby/object:Gem::Version
|
294
|
-
version: 0.
|
322
|
+
version: 0.15.0
|
295
323
|
version:
|
296
324
|
- !ruby/object:Gem::Dependency
|
297
325
|
name: og
|
@@ -301,7 +329,7 @@ dependencies:
|
|
301
329
|
-
|
302
330
|
- "="
|
303
331
|
- !ruby/object:Gem::Version
|
304
|
-
version: 0.
|
332
|
+
version: 0.15.0
|
305
333
|
version:
|
306
334
|
- !ruby/object:Gem::Dependency
|
307
335
|
name: ruby-breakpoint
|
data/bin/new_form.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
#! /usr/bin/env ruby
|
2
|
-
|
3
|
-
# = New Form Wizzard
|
4
|
-
#
|
5
|
-
# Leverages the FormBuilder functionality to generate a scaffold
|
6
|
-
# form for the given managed object
|
7
|
-
#
|
8
|
-
# Example usage:
|
9
|
-
#
|
10
|
-
# ./new_form.rb N::Article lib/articles.rb [article_form.xhtml]
|
11
|
-
#
|
12
|
-
# code:
|
13
|
-
# * George Moschovitis <gm@navel.gr>
|
14
|
-
#
|
15
|
-
# (c) 2004 Navel, all rights reserved.
|
16
|
-
# $Id: new_app.rb 188 2004-12-10 14:14:17Z gmosx $
|
17
|
-
|
18
|
-
$LOAD_PATH.unshift 'lib'
|
19
|
-
|
20
|
-
require 'glue/property'
|
21
|
-
require 'glue/inflector'
|
22
|
-
require 'nitro/builders/form'
|
23
|
-
require 'og'
|
24
|
-
|
25
|
-
def die(str)
|
26
|
-
puts str
|
27
|
-
exit!
|
28
|
-
end
|
29
|
-
|
30
|
-
if klass_name = ARGV[0] and lib_filename = ARGV[1]
|
31
|
-
|
32
|
-
require lib_filename
|
33
|
-
klass = nil
|
34
|
-
eval "klass = #{klass_name}"
|
35
|
-
dst_dir = File.dirname(lib_filename)
|
36
|
-
dst_filename = ARGV[3] || File.join(dst_dir, "#{N::Inflector.name(klass_name)}_form.xhtml")
|
37
|
-
|
38
|
-
# p klass, lib_filename, dst_filename
|
39
|
-
|
40
|
-
form = N::FormBuilder.render(klass.new)
|
41
|
-
|
42
|
-
File.open(dst_filename, 'w') do |file|
|
43
|
-
file.write(form)
|
44
|
-
end
|
45
|
-
|
46
|
-
else
|
47
|
-
|
48
|
-
puts %{
|
49
|
-
USAGE:
|
50
|
-
new_form class_name library_filename [base_filename]
|
51
|
-
}
|
52
|
-
|
53
|
-
end
|
54
|
-
|