nitro 0.25.0 → 0.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/CHANGELOG +531 -1
  2. data/ProjectInfo +29 -5
  3. data/README +1 -1
  4. data/doc/AUTHORS +12 -6
  5. data/doc/RELEASES +114 -0
  6. data/lib/glue/sweeper.rb +71 -0
  7. data/lib/nitro.rb +19 -12
  8. data/lib/nitro/adapter/cgi.rb +4 -0
  9. data/lib/nitro/adapter/webrick.rb +4 -2
  10. data/lib/nitro/caching.rb +1 -0
  11. data/lib/nitro/caching/fragments.rb +7 -1
  12. data/lib/nitro/caching/output.rb +6 -1
  13. data/lib/nitro/caching/stores.rb +13 -1
  14. data/lib/nitro/cgi.rb +9 -1
  15. data/lib/nitro/cgi/request.rb +11 -3
  16. data/lib/nitro/cgi/utils.rb +24 -2
  17. data/lib/nitro/compiler.rb +89 -63
  18. data/lib/nitro/compiler/cleanup.rb +16 -0
  19. data/lib/nitro/compiler/elements.rb +117 -0
  20. data/lib/nitro/compiler/markup.rb +3 -1
  21. data/lib/nitro/compiler/morphing.rb +203 -73
  22. data/lib/nitro/compiler/script_generator.rb +14 -0
  23. data/lib/nitro/compiler/shaders.rb +1 -1
  24. data/lib/nitro/context.rb +5 -6
  25. data/lib/nitro/controller.rb +43 -21
  26. data/lib/nitro/dispatcher.rb +86 -37
  27. data/lib/nitro/element.rb +3 -105
  28. data/lib/nitro/helper/benchmark.rb +3 -0
  29. data/lib/nitro/helper/dojo.rb +0 -0
  30. data/lib/nitro/helper/form.rb +85 -255
  31. data/lib/nitro/helper/form/controls.rb +274 -0
  32. data/lib/nitro/helper/javascript.rb +86 -6
  33. data/lib/nitro/helper/pager.rb +5 -0
  34. data/lib/nitro/helper/prototype.rb +49 -0
  35. data/lib/nitro/helper/scriptaculous.rb +0 -0
  36. data/lib/nitro/helper/xhtml.rb +11 -8
  37. data/lib/nitro/helper/xml.rb +1 -1
  38. data/lib/nitro/routing.rb +8 -1
  39. data/lib/nitro/scaffolding.rb +344 -0
  40. data/lib/nitro/server.rb +5 -1
  41. data/lib/nitro/server/runner.rb +19 -15
  42. data/lib/nitro/session.rb +32 -56
  43. data/lib/nitro/session/drbserver.rb +1 -1
  44. data/lib/nitro/session/file.rb +34 -15
  45. data/lib/nitro/session/memory.rb +13 -4
  46. data/lib/nitro/session/og.rb +56 -0
  47. data/proto/public/js/controls.js +30 -1
  48. data/proto/public/js/dragdrop.js +211 -146
  49. data/proto/public/js/effects.js +261 -399
  50. data/proto/public/js/prototype.js +131 -72
  51. data/proto/public/scaffold/edit.xhtml +10 -3
  52. data/proto/public/scaffold/form.xhtml +1 -7
  53. data/proto/public/scaffold/index.xhtml +20 -0
  54. data/proto/public/scaffold/list.xhtml +15 -8
  55. data/proto/public/scaffold/new.xhtml +10 -3
  56. data/proto/public/scaffold/search.xhtml +28 -0
  57. data/proto/public/scaffold/view.xhtml +8 -0
  58. data/proto/run.rb +93 -1
  59. data/src/part/admin.rb +4 -2
  60. data/src/part/admin/controller.rb +62 -28
  61. data/src/part/admin/skin.rb +8 -8
  62. data/src/part/admin/system.css +135 -0
  63. data/src/part/admin/template/index.xhtml +8 -12
  64. data/test/nitro/caching/tc_stores.rb +17 -0
  65. data/test/nitro/tc_caching.rb +1 -4
  66. data/test/nitro/tc_dispatcher.rb +22 -10
  67. data/test/nitro/tc_element.rb +1 -1
  68. data/test/nitro/tc_session.rb +23 -11
  69. data/test/public/blog/another/very_litle/index.xhtml +1 -0
  70. metadata +29 -15
  71. data/lib/nitro/dispatcher/general.rb +0 -62
  72. data/lib/nitro/dispatcher/nice.rb +0 -57
  73. data/lib/nitro/scaffold.rb +0 -171
  74. data/proto/public/index.xhtml +0 -83
  75. data/proto/public/js/scaffold.js +0 -74
  76. data/proto/public/settings.xhtml +0 -66
@@ -1,12 +1,6 @@
1
- <SystemPage name="System">
2
-
3
- <style>
4
- th {
5
- border: 1px solid #ccc;
6
- background: #eee;
7
- text-align: left;
8
- }
9
- </style>
1
+ <SystemPage>
2
+ <?r base = "#{@base}/%base%" ?>
3
+ <h1><a href='/'>Home</a> > System</h1>
10
4
 
11
5
  <h2>Og managed classes</h2>
12
6
 
@@ -14,12 +8,15 @@
14
8
  <tr>
15
9
  <th>Class</th>
16
10
  <th>Count</th>
11
+ <th colspan="2">Cleanup</th>
17
12
  <th>Properties</th>
18
13
  </tr>
19
14
  <?r for c in @classes ?>
20
15
  <tr>
21
- <td><a href="#@base/#{c.name.plural.underscore}">#{c.name}</a></td>
16
+ <td><a href="#@base/#{c.name.plural.underscore}/list">#{c.name}</a></td>
22
17
  <td>#{c.count}</td>
18
+ <td><a href="delete_all/#{c.name}" onclick="return confirm('Delete all instances?')">delete</a></td>
19
+ <td><a href="destroy/#{c.name}" onclick="return confirm('Drop the schema?')">destroy</a></td>
23
20
  <td width="100%">#{c.properties.values.join(', ')}</td>
24
21
  </tr>
25
22
  <?r end ?>
@@ -43,5 +40,4 @@
43
40
  </tr>
44
41
  <?r end ?>
45
42
  </table>
46
-
47
- </SystemPage>
43
+ </SystemPage>
@@ -0,0 +1,17 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'lib')
2
+
3
+ require 'test/unit'
4
+
5
+ require 'nitro/caching/stores'
6
+
7
+ class TC_CachingStores < Test::Unit::TestCase # :nodoc: all
8
+
9
+ def test_memory
10
+ s = Nitro::Caching::MemoryStore.new
11
+ s.write('test', 'hello', { :none => 1})
12
+ s.read('test')
13
+ end
14
+
15
+ end
16
+
17
+ # * George Moschovitis <gm@navel.gr>
@@ -13,10 +13,7 @@ class TC_Caching < Test::Unit::TestCase # :nodoc: all
13
13
 
14
14
  def test_all
15
15
  # bug:
16
- #--
17
- # FIXME: no module_options should be here!!
18
- #++
19
- assert_equal ['module_options'], Caching.public_instance_methods
16
+ assert_equal [], Caching.public_instance_methods
20
17
  assert_equal [], DummyCa.public_instance_methods.grep(/caching/)
21
18
  end
22
19
  end
@@ -3,11 +3,20 @@ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
3
3
  require 'test/unit'
4
4
 
5
5
  require 'nitro'
6
- require 'nitro/dispatcher/general'
7
6
 
8
7
  class TC_Dispatcher < Test::Unit::TestCase # :nodoc: all
9
8
  include Nitro
10
9
 
10
+ Template.root = File.expand_path(File.join('..', 'public'))
11
+
12
+ class MyContext
13
+ attr_accessor :headers
14
+
15
+ def initialize
16
+ @headers = {}
17
+ end
18
+ end
19
+
11
20
  class MainController < Controller
12
21
  end
13
22
 
@@ -26,10 +35,12 @@ class TC_Dispatcher < Test::Unit::TestCase # :nodoc: all
26
35
  # FIXME: this is a hack!
27
36
  'xml:blog' => BlogController
28
37
  })
38
+
39
+ @ctx = MyContext.new
29
40
  end
30
41
 
31
42
  def teardown
32
- @d = @dxml = nil
43
+ @d = @dxml = @ctx = nil
33
44
  end
34
45
 
35
46
  def test_initialize
@@ -38,29 +49,30 @@ class TC_Dispatcher < Test::Unit::TestCase # :nodoc: all
38
49
  end
39
50
 
40
51
  def test_dispatch
41
- klass, action = @d.dispatch('/blog/list')
52
+ klass, action = @d.dispatch('/blog/list', @ctx)
42
53
  assert_equal BlogController, klass
43
54
  assert_equal 'list_action', action
44
55
 
45
- klass, action = @d.dispatch('/blog/another/very_litle/list')
56
+ klass, action = @d.dispatch('/blog/another/very_litle', @ctx)
46
57
  assert_equal BlogController, klass
47
- assert_equal 'another__very_litle__list_action', action
48
-
49
- klass, action = @d.dispatch('/another/litle/list')
58
+ assert_equal 'another__very_litle_action', action
59
+ =begin
60
+ klass, action = @d.dispatch('/another/litle/list', @ctx)
50
61
  assert_equal MainController, klass
51
62
  assert_equal 'another__litle__list_action', action
52
63
 
53
- klass, action = @d.dispatch('/blog')
64
+ klass, action = @d.dispatch('/blog', @ctx)
54
65
  assert_equal BlogController, klass
55
66
  assert_equal 'index_action', action
56
67
 
57
- klass, action, ctype = @d.dispatch('/login')
68
+ klass, action, ctype = @d.dispatch('/login', @ctx)
58
69
  assert_equal MainController, klass
59
70
  assert_equal 'login_action', action
60
71
 
61
- klass, action = @d.dispatch('/')
72
+ klass, action = @d.dispatch('/', @ctx)
62
73
  assert_equal MainController, klass
63
74
  assert_equal 'index_action', action
75
+ =end
64
76
  end
65
77
 
66
78
  end
@@ -2,7 +2,7 @@ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
2
 
3
3
  require 'test/unit'
4
4
 
5
- require 'nitro/element'
5
+ require 'nitro/compiler/elements'
6
6
 
7
7
  include Nitro
8
8
 
@@ -5,11 +5,14 @@ $NITRO_NO_ENVIRONMENT = true
5
5
  require 'ostruct'
6
6
  require 'test/unit'
7
7
 
8
+ require 'glue'
8
9
  require 'nitro/session'
9
10
 
10
11
  class TC_Session < Test::Unit::TestCase # :nodoc: all
11
12
  include Nitro
12
13
 
14
+ STORES = [:memory, :file, :og]
15
+
13
16
  def test_create_id
14
17
  sid = Session.new.session_id
15
18
  assert_not_equal sid, Session.new.session_id
@@ -20,17 +23,26 @@ class TC_Session < Test::Unit::TestCase # :nodoc: all
20
23
  end
21
24
 
22
25
  def test_gc
23
- Session.keepalive = 2
24
-
25
- Session.store[1] = Session.new
26
- Session.store[2] = Session.new
27
-
28
- assert_equal 2, Session.store.values.size
29
- Session.gc!
30
- assert_equal 2, Session.store.values.size
31
- sleep(3)
32
- Session.gc!
33
- assert_equal 0, Session.store.values.size
26
+ STORES.each do |store_type|
27
+ Session.store_type = store_type
28
+
29
+ if store_type == :og
30
+ Og.setup(:store => :sqlite, :name => "/tmp/test", :destroy => true)
31
+ end
32
+
33
+ Session.keepalive = 2
34
+
35
+ Session.store[1] = Session.new
36
+ Session.store[2] = Session.new
37
+
38
+ Session.store.gc!
39
+ assert_equal 2, Session.store.all.size
40
+ Session.store.gc!
41
+ assert_equal 2, Session.store.all.size
42
+ sleep(3)
43
+ Session.store.gc!
44
+ assert_equal 0, Session.store.all.size
45
+ end
34
46
  end
35
47
 
36
48
  end
@@ -0,0 +1 @@
1
+ <html>hello</html>
metadata CHANGED
@@ -3,9 +3,9 @@ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: nitro
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.25.0
7
- date: 2005-11-17
8
- summary: Everyhting you need to create Web 2.0 applications with Ruby and Javascript
6
+ version: 0.26.0
7
+ date: 2005-12-21
8
+ summary: Everything you need to create Web 2.0 applications with Ruby and Javascript
9
9
  require_paths:
10
10
  - lib
11
11
  email: gm@navel.gr
@@ -55,8 +55,10 @@ files:
55
55
  - doc/MIGRATION
56
56
  - doc/RELEASES
57
57
  - doc/tutorial.txt
58
+ - lib/glue
58
59
  - lib/nitro
59
60
  - lib/nitro.rb
61
+ - lib/glue/sweeper.rb
60
62
  - lib/nitro/adapter
61
63
  - lib/nitro/caching
62
64
  - lib/nitro/caching.rb
@@ -66,7 +68,6 @@ files:
66
68
  - lib/nitro/compiler.rb
67
69
  - lib/nitro/context.rb
68
70
  - lib/nitro/controller.rb
69
- - lib/nitro/dispatcher
70
71
  - lib/nitro/dispatcher.rb
71
72
  - lib/nitro/element
72
73
  - lib/nitro/element.rb
@@ -76,7 +77,7 @@ files:
76
77
  - lib/nitro/render.rb
77
78
  - lib/nitro/routing.rb
78
79
  - lib/nitro/scaffold
79
- - lib/nitro/scaffold.rb
80
+ - lib/nitro/scaffolding.rb
80
81
  - lib/nitro/server
81
82
  - lib/nitro/server.rb
82
83
  - lib/nitro/service
@@ -101,6 +102,7 @@ files:
101
102
  - lib/nitro/cgi/response.rb
102
103
  - lib/nitro/cgi/stream.rb
103
104
  - lib/nitro/cgi/utils.rb
105
+ - lib/nitro/compiler/cleanup.rb
104
106
  - lib/nitro/compiler/css.rb
105
107
  - lib/nitro/compiler/elements.rb
106
108
  - lib/nitro/compiler/errors.rb
@@ -108,23 +110,27 @@ files:
108
110
  - lib/nitro/compiler/localization.rb
109
111
  - lib/nitro/compiler/markup.rb
110
112
  - lib/nitro/compiler/morphing.rb
113
+ - lib/nitro/compiler/script_generator.rb
111
114
  - lib/nitro/compiler/shaders.rb
112
115
  - lib/nitro/compiler/squeeze.rb
113
116
  - lib/nitro/compiler/xslt.rb
114
- - lib/nitro/dispatcher/general.rb
115
- - lib/nitro/dispatcher/nice.rb
116
117
  - lib/nitro/element/java_script.rb
117
118
  - lib/nitro/helper/benchmark.rb
118
119
  - lib/nitro/helper/buffer.rb
119
120
  - lib/nitro/helper/debug.rb
120
121
  - lib/nitro/helper/default.rb
122
+ - lib/nitro/helper/dojo.rb
123
+ - lib/nitro/helper/form
121
124
  - lib/nitro/helper/form.rb
122
125
  - lib/nitro/helper/javascript.rb
123
126
  - lib/nitro/helper/pager.rb
127
+ - lib/nitro/helper/prototype.rb
124
128
  - lib/nitro/helper/rss.rb
129
+ - lib/nitro/helper/scriptaculous.rb
125
130
  - lib/nitro/helper/table.rb
126
131
  - lib/nitro/helper/xhtml.rb
127
132
  - lib/nitro/helper/xml.rb
133
+ - lib/nitro/helper/form/controls.rb
128
134
  - lib/nitro/scaffold/relations.rb
129
135
  - lib/nitro/server/runner.rb
130
136
  - lib/nitro/service/xmlrpc.rb
@@ -132,6 +138,7 @@ files:
132
138
  - lib/nitro/session/drbserver.rb
133
139
  - lib/nitro/session/file.rb
134
140
  - lib/nitro/session/memory.rb
141
+ - lib/nitro/session/og.rb
135
142
  - lib/nitro/test/assertions.rb
136
143
  - lib/nitro/test/context.rb
137
144
  - lib/nitro/test/testcase.rb
@@ -145,12 +152,10 @@ files:
145
152
  - proto/public/cgi.rb
146
153
  - proto/public/error.xhtml
147
154
  - proto/public/fcgi.rb
148
- - proto/public/index.xhtml
149
155
  - proto/public/js
150
156
  - proto/public/media
151
157
  - proto/public/robots.txt
152
158
  - proto/public/scaffold
153
- - proto/public/settings.xhtml
154
159
  - proto/public/js/behaviour.js
155
160
  - proto/public/js/builder.js
156
161
  - proto/public/js/controls.js
@@ -158,7 +163,6 @@ files:
158
163
  - proto/public/js/dragdrop.js
159
164
  - proto/public/js/effects.js
160
165
  - proto/public/js/prototype.js
161
- - proto/public/js/scaffold.js
162
166
  - proto/public/js/scriptaculous.js
163
167
  - proto/public/js/slider.js
164
168
  - proto/public/js/unittest.js
@@ -166,8 +170,10 @@ files:
166
170
  - proto/public/media/nitro.png
167
171
  - proto/public/scaffold/edit.xhtml
168
172
  - proto/public/scaffold/form.xhtml
173
+ - proto/public/scaffold/index.xhtml
169
174
  - proto/public/scaffold/list.xhtml
170
175
  - proto/public/scaffold/new.xhtml
176
+ - proto/public/scaffold/search.xhtml
171
177
  - proto/public/scaffold/view.xhtml
172
178
  - proto/script/benchmark
173
179
  - proto/script/runner
@@ -179,13 +185,16 @@ files:
179
185
  - src/part/admin.rb
180
186
  - src/part/admin/controller.rb
181
187
  - src/part/admin/skin.rb
188
+ - src/part/admin/system.css
182
189
  - src/part/admin/template
183
190
  - src/part/admin/template/denied.xhtml
184
191
  - src/part/admin/template/index.xhtml
185
192
  - test/nitro
186
193
  - test/public
187
194
  - test/nitro/adapter
195
+ - test/nitro/caching
188
196
  - test/nitro/cgi
197
+ - test/nitro/compiler
189
198
  - test/nitro/helper
190
199
  - test/nitro/tc_caching.rb
191
200
  - test/nitro/tc_cgi.rb
@@ -199,9 +208,9 @@ files:
199
208
  - test/nitro/tc_render.rb
200
209
  - test/nitro/tc_server.rb
201
210
  - test/nitro/tc_session.rb
202
- - test/nitro/ui
203
211
  - test/nitro/adapter/raw_post1.bin
204
212
  - test/nitro/adapter/tc_webrick.rb
213
+ - test/nitro/caching/tc_stores.rb
205
214
  - test/nitro/cgi/tc_cookie.rb
206
215
  - test/nitro/cgi/tc_request.rb
207
216
  - test/nitro/helper/tc_pager.rb
@@ -210,14 +219,19 @@ files:
210
219
  - test/nitro/helper/tc_xhtml.rb
211
220
  - test/public/blog
212
221
  - test/public/dummy_mailer
222
+ - test/public/blog/another
213
223
  - test/public/blog/inc1.xhtml
214
224
  - test/public/blog/inc2.xhtml
215
225
  - test/public/blog/list.xhtml
226
+ - test/public/blog/another/very_litle
227
+ - test/public/blog/another/very_litle/index.xhtml
216
228
  - test/public/dummy_mailer/registration.xhtml
217
229
  test_files: []
218
230
  rdoc_options: []
219
231
  extra_rdoc_files: []
220
- executables: []
232
+ executables:
233
+ - nitro
234
+ - nitrogen
221
235
  extensions: []
222
236
  requirements: []
223
237
  dependencies:
@@ -229,7 +243,7 @@ dependencies:
229
243
  -
230
244
  - "="
231
245
  - !ruby/object:Gem::Version
232
- version: 0.25.0
246
+ version: 0.26.0
233
247
  version:
234
248
  - !ruby/object:Gem::Dependency
235
249
  name: gen
@@ -239,7 +253,7 @@ dependencies:
239
253
  -
240
254
  - "="
241
255
  - !ruby/object:Gem::Version
242
- version: 0.25.0
256
+ version: 0.26.0
243
257
  version:
244
258
  - !ruby/object:Gem::Dependency
245
259
  name: glue
@@ -249,7 +263,7 @@ dependencies:
249
263
  -
250
264
  - "="
251
265
  - !ruby/object:Gem::Version
252
- version: 0.25.0
266
+ version: 0.26.0
253
267
  version:
254
268
  - !ruby/object:Gem::Dependency
255
269
  name: RedCloth
@@ -1,62 +0,0 @@
1
- require 'nitro/dispatcher'
2
-
3
- module Nitro
4
-
5
- # Specialize the Dispatcher to handle general urls. This is
6
- # useful for PHP/ASP style programming.
7
-
8
- class Dispatcher
9
-
10
- # An alternative dispatching algorithm that handles
11
- # general urls. Action containing '/' separators look for
12
- # templates in subdirectories. The '/' char is converted
13
- # to '__' to find the actual action.
14
-
15
- def dispatch(path, context = nil)
16
- path = route(path, context)
17
-
18
- parts = path.split('/')
19
- parts.shift
20
-
21
- case parts.size
22
- when 0
23
- # / -> root.index
24
- base = '/'
25
- klass = controller_class_for(base)
26
- action = 'index'
27
-
28
- when 1
29
- base = "/#{parts[0]}"
30
- if klass = controller_class_for(base)
31
- # controller/ -> controller.index
32
- action = 'index'
33
- else
34
- # action/ -> root.action
35
- base = '/'
36
- klass = controller_class_for(base)
37
- action = parts[0]
38
- end
39
-
40
- else
41
- base = "/#{parts[0]}"
42
- if klass = controller_class_for(base)
43
- # controller/action -> controller.action
44
- parts.shift
45
- action = parts.join('__')
46
- else
47
- # action/ -> root.action
48
- base = '/'
49
- klass = controller_class_for(base)
50
- action = parts.join('__')
51
- end
52
- end
53
-
54
- return klass, "#{action}_action", base
55
- end
56
- end
57
-
58
- Dispatcher.mode = :general
59
-
60
- end
61
-
62
- # * George Moschovitis <gm@navel.gr>