nitro 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.
Files changed (102) hide show
  1. data/AUTHORS +14 -4
  2. data/ChangeLog +192 -1
  3. data/README +50 -6
  4. data/RELEASES +60 -0
  5. data/Rakefile +1 -1
  6. data/bin/cluster.rb +2 -2
  7. data/bin/new_form.rb +1 -1
  8. data/examples/blog/config.rb +5 -4
  9. data/examples/blog/lib/blog.rb +56 -36
  10. data/examples/blog/root/comments.xhtml +5 -2
  11. data/examples/blog/root/entry_form.xhtml +7 -2
  12. data/examples/blog/root/login.xhtml +1 -1
  13. data/examples/blog/root/style.xsl +7 -0
  14. data/examples/og/mock_example.rb +6 -9
  15. data/examples/og/mysql_to_psql.rb +100 -0
  16. data/examples/og/run.rb +8 -17
  17. data/lib/glue.rb +7 -8
  18. data/lib/glue/array.rb +1 -1
  19. data/lib/glue/attribute.rb +86 -0
  20. data/lib/glue/cache.rb +1 -1
  21. data/lib/glue/hash.rb +1 -1
  22. data/lib/glue/inflector.rb +1 -1
  23. data/lib/glue/logger.rb +118 -18
  24. data/lib/glue/mixins.rb +1 -1
  25. data/lib/glue/number.rb +1 -1
  26. data/lib/glue/pool.rb +1 -1
  27. data/lib/glue/property.rb +48 -31
  28. data/lib/glue/string.rb +1 -1
  29. data/lib/glue/time.rb +2 -2
  30. data/lib/glue/validation.rb +400 -0
  31. data/lib/nitro/application.rb +6 -6
  32. data/lib/nitro/builders/form.rb +5 -5
  33. data/lib/nitro/builders/rss.rb +1 -1
  34. data/lib/nitro/builders/xhtml.rb +119 -0
  35. data/lib/nitro/builders/xml.rb +111 -0
  36. data/lib/nitro/config.rb +6 -6
  37. data/lib/nitro/events.rb +1 -1
  38. data/lib/nitro/html.rb +1 -1
  39. data/lib/nitro/markup.rb +15 -20
  40. data/lib/nitro/scaffold.rb +2 -2
  41. data/lib/nitro/server/appserver.rb +3 -3
  42. data/lib/nitro/server/cluster.rb +2 -2
  43. data/lib/nitro/server/dispatcher.rb +2 -2
  44. data/lib/nitro/server/filters/autologin.rb +1 -1
  45. data/lib/nitro/server/fragment.rb +2 -2
  46. data/lib/nitro/server/handlers.rb +2 -2
  47. data/lib/nitro/server/render.rb +17 -15
  48. data/lib/nitro/server/request.rb +6 -6
  49. data/lib/nitro/server/script.rb +2 -2
  50. data/lib/nitro/server/server.rb +2 -2
  51. data/lib/nitro/server/session.rb +6 -6
  52. data/lib/nitro/server/shaders.rb +2 -2
  53. data/lib/nitro/server/webrick.rb +1 -1
  54. data/lib/nitro/sitemap.rb +2 -2
  55. data/lib/nitro/uri.rb +1 -1
  56. data/lib/nitro/version.rb +7 -5
  57. data/lib/og.rb +95 -129
  58. data/lib/og/backend.rb +47 -46
  59. data/lib/og/backends/mysql.rb +64 -63
  60. data/lib/og/backends/psql.rb +73 -72
  61. data/lib/og/connection.rb +7 -8
  62. data/lib/og/enchant.rb +80 -0
  63. data/lib/og/meta.rb +21 -21
  64. data/lib/og/mock.rb +31 -88
  65. data/lib/og/version.rb +6 -5
  66. data/lib/parts/README +9 -0
  67. data/lib/parts/content.rb +23 -9
  68. data/test/glue/tc_attribute.rb +22 -0
  69. data/test/glue/tc_cache.rb +4 -6
  70. data/test/glue/tc_hash.rb +2 -2
  71. data/test/glue/tc_logger.rb +36 -0
  72. data/test/glue/tc_numbers.rb +2 -2
  73. data/test/glue/tc_property_mixins.rb +35 -4
  74. data/test/glue/tc_strings.rb +32 -32
  75. data/test/glue/tc_validation.rb +186 -0
  76. data/test/nitro/builders/tc_xhtml.rb +38 -0
  77. data/test/nitro/builders/tc_xml.rb +47 -0
  78. data/test/nitro/server/tc_request.rb +2 -2
  79. data/test/nitro/server/tc_session.rb +1 -1
  80. data/test/nitro/tc_sitemap.rb +1 -1
  81. data/test/nitro/ui/tc_pager.rb +1 -10
  82. data/test/tc_og.rb +3 -3
  83. data/vendor/blankslate.rb +53 -0
  84. data/vendor/extensions/_base.rb +153 -0
  85. data/vendor/extensions/_template.rb +36 -0
  86. data/vendor/extensions/all.rb +21 -0
  87. data/vendor/extensions/array.rb +68 -0
  88. data/vendor/extensions/binding.rb +224 -0
  89. data/vendor/extensions/class.rb +50 -0
  90. data/vendor/extensions/continuation.rb +71 -0
  91. data/vendor/extensions/enumerable.rb +250 -0
  92. data/vendor/extensions/hash.rb +23 -0
  93. data/vendor/extensions/io.rb +58 -0
  94. data/vendor/extensions/kernel.rb +42 -0
  95. data/vendor/extensions/module.rb +114 -0
  96. data/vendor/extensions/numeric.rb +230 -0
  97. data/vendor/extensions/object.rb +164 -0
  98. data/vendor/extensions/ostruct.rb +41 -0
  99. data/vendor/extensions/string.rb +316 -0
  100. data/vendor/extensions/symbol.rb +28 -0
  101. metadata +35 -13
  102. data/lib/glue/property.rb.old +0 -307
@@ -0,0 +1,28 @@
1
+ #!/usr/local/bin/ruby -w
2
+ #
3
+ # == extensions/symbol.rb
4
+ #
5
+ # Adds methods to the builtin Symbol class.
6
+ #
7
+
8
+ require "extensions/_base"
9
+
10
+
11
+ #
12
+ # * Symbol#to_proc
13
+ #
14
+ ExtensionsProject.implement(Symbol, :to_proc) do
15
+ class Symbol
16
+ #
17
+ # Allows a Symbol to be implicitly converted to a Proc.
18
+ #
19
+ # This allows such conveniences as:
20
+ # %{john terry fiona}.map(&:capitalize) # -> %{John Terry Fiona}
21
+ # sum = numbers.inject(&:+)
22
+ #
23
+ def to_proc
24
+ proc { |obj, *args| obj.send(self, *args) }
25
+ end
26
+ end
27
+ end
28
+
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.3
2
+ rubygems_version: 0.8.4
3
3
  specification_version: 1
4
4
  name: nitro
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.7.0
7
- date: 2004-12-27
6
+ version: 0.8.0
7
+ date: 2005-01-12
8
8
  summary: Web Engine
9
9
  require_paths:
10
10
  - lib
@@ -107,6 +107,7 @@ files:
107
107
  - examples/blog/root/m/grbull.gif
108
108
  - examples/blog/root/m/footer_bg.gif
109
109
  - examples/blog/lib/blog.rb
110
+ - examples/og/mysql_to_psql.rb
110
111
  - examples/og/run.rb
111
112
  - examples/og/mock_example.rb
112
113
  - examples/og/README
@@ -139,9 +140,11 @@ files:
139
140
  - lib/nitro/service.rb
140
141
  - lib/nitro/markup.rb
141
142
  - lib/nitro/filters.rb
143
+ - lib/nitro/builders/xhtml.rb
142
144
  - lib/nitro/builders/form.rb
143
145
  - lib/nitro/builders/rss.rb
144
146
  - lib/nitro/builders/table.rb
147
+ - lib/nitro/builders/xml.rb
145
148
  - lib/nitro/ui/pager.rb
146
149
  - lib/nitro/ui/date-select.rb
147
150
  - lib/nitro/ui/tabs.rb
@@ -167,6 +170,7 @@ files:
167
170
  - lib/nitro/server/filters/autologin.rb
168
171
  - lib/parts/content.rb
169
172
  - lib/parts/content
173
+ - lib/parts/README
170
174
  - lib/xsl/ui.xsl
171
175
  - lib/xsl/xforms.xsl
172
176
  - lib/xsl/base.xsl
@@ -178,13 +182,15 @@ files:
178
182
  - lib/glue/number.rb
179
183
  - lib/glue/time.rb
180
184
  - lib/glue/property.rb
181
- - lib/glue/property.rb.old
182
185
  - lib/glue/macro.rb
183
186
  - lib/glue/cache.rb
184
187
  - lib/glue/string.rb
185
188
  - lib/glue/array.rb
189
+ - lib/glue/validation.rb
190
+ - lib/glue/attribute.rb
186
191
  - lib/og/backends
187
192
  - lib/og/version.rb
193
+ - lib/og/enchant.rb
188
194
  - lib/og/connection.rb
189
195
  - lib/og/mock.rb
190
196
  - lib/og/meta.rb
@@ -198,10 +204,13 @@ files:
198
204
  - test/nitro/tc_uri.rb
199
205
  - test/nitro/tc_events.rb
200
206
  - test/nitro/tc_http.rb
207
+ - test/nitro/builders
201
208
  - test/nitro/ui
202
209
  - test/nitro/tc_html.rb
203
210
  - test/nitro/server
204
211
  - test/nitro/tc_sitemap.rb
212
+ - test/nitro/builders/tc_xhtml.rb
213
+ - test/nitro/builders/tc_xml.rb
205
214
  - test/nitro/ui/tc_pager.rb
206
215
  - test/nitro/server/tc_request.rb
207
216
  - test/nitro/server/tc_session.rb
@@ -209,25 +218,38 @@ files:
209
218
  - test/nitro/server/tc_filters.rb
210
219
  - test/nitro/server/tc_cookie.rb
211
220
  - test/glue/tc_strings.rb
221
+ - test/glue/tc_logger.rb
222
+ - test/glue/tc_validation.rb
212
223
  - test/glue/tc_property.rb
213
224
  - test/glue/tc_hash.rb
225
+ - test/glue/tc_attribute.rb
214
226
  - test/glue/tc_property_mixins.rb
215
227
  - test/glue/tc_cache.rb
216
228
  - test/glue/tc_numbers.rb
217
229
  - test/og/tc_lifecycle.rb
218
230
  - vendor/breakpoint_client.rb
231
+ - vendor/extensions
219
232
  - vendor/binding_of_caller.rb
220
- - vendor/breakpoint_doc
233
+ - vendor/blankslate.rb
221
234
  - vendor/breakpoint.rb
222
235
  - vendor/README
223
- - vendor/breakpoint_doc/files
224
- - vendor/breakpoint_doc/classes
225
- - vendor/breakpoint_doc/files/breakpoint_rb.src
226
- - vendor/breakpoint_doc/classes/Breakpoint
227
- - vendor/breakpoint_doc/classes/Breakpoint.src
228
- - vendor/breakpoint_doc/classes/Breakpoint/CommandBundle
229
- - vendor/breakpoint_doc/classes/Breakpoint/CommandBundle.src
230
- - vendor/breakpoint_doc/classes/Breakpoint/CommandBundle/Client.src
236
+ - vendor/extensions/enumerable.rb
237
+ - vendor/extensions/all.rb
238
+ - vendor/extensions/hash.rb
239
+ - vendor/extensions/continuation.rb
240
+ - vendor/extensions/module.rb
241
+ - vendor/extensions/binding.rb
242
+ - vendor/extensions/ostruct.rb
243
+ - vendor/extensions/kernel.rb
244
+ - vendor/extensions/class.rb
245
+ - vendor/extensions/numeric.rb
246
+ - vendor/extensions/_base.rb
247
+ - vendor/extensions/io.rb
248
+ - vendor/extensions/string.rb
249
+ - vendor/extensions/object.rb
250
+ - vendor/extensions/array.rb
251
+ - vendor/extensions/symbol.rb
252
+ - vendor/extensions/_template.rb
231
253
  test_files: []
232
254
  rdoc_options:
233
255
  - "--main"
@@ -1,307 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- # design:
4
- # * Anastastios Koutoumanos <ak@navel.gr>
5
- # * Elias Karakoulakis <ekarak@ktismata.com>
6
- #
7
- # (c) 2004 Navel, all rights reserved.
8
- # $Id: property.rb 185 2004-12-10 13:29:09Z gmosx $
9
-
10
- require "glue/array"
11
- require "glue/hash"
12
-
13
- module G
14
-
15
- # = Property
16
- #
17
- # Ruby attributes are typeless and generally this is good. Some times
18
- # we need extra metadata though, for example in relational mapping,
19
- # or web form population.
20
- #
21
- # Only Fixnums, Strings, Floats, Times, Booleans are converted.
22
- #
23
- # The default = methods do not force the types. A special
24
- # __force_set method should be used instead.
25
- #
26
- #--
27
- # TODO:
28
- # Inject only the really needd methods into Module.
29
- # Perhaps a sync is needed in evals (!!!!)
30
- #++
31
- #
32
- class Property
33
- # the symbol of the property
34
- attr_accessor :symbol
35
- # the string representation of the symbol
36
- attr_accessor :name
37
- # the class of the property
38
- attr_accessor :klass
39
- # additional metadata (like sql declaratio, sql index, etc)
40
- attr_accessor :meta
41
-
42
- def initialize(symbol, klass, meta = {})
43
- @symbol, @klass = symbol, klass
44
- @meta = meta
45
- @name = @symbol.to_s()
46
- end
47
-
48
- def ==(other)
49
- return @symbol == other.symbol
50
- end
51
-
52
- def to_s
53
- return name
54
- end
55
- end
56
-
57
- end # module
58
-
59
- class Module
60
-
61
- # Define a property (== typed attribute)
62
- # This works like Ruby's standard attr method, ie creates
63
- # only one property.
64
- #
65
- # Use the prop_reader, prop_writer, prop_accessor methods
66
- # for multiple properties.
67
- #
68
- # Examples:
69
- # prop String, :name, :sql => "char(32), :sql_index => "name(32)"
70
- # --> creates only writer.
71
- # prop Fixnum, :oid, writer = true, :sql => "integer PRIMARY KEY"
72
- # --> creates reader and writer.
73
- #
74
- def prop(*params)
75
- meta = {}
76
- klass = Object
77
-
78
- for param in params
79
- if param.is_a?(Class)
80
- klass = param
81
- elsif param.is_a?(Symbol)
82
- symbol = param
83
- elsif param.is_a?(TrueClass) or param.is_a?(TrueClass)
84
- writer = param
85
- elsif param.is_a?(Hash)
86
- # the meta hash.
87
- meta = param
88
- else
89
- raise "Error when defining property!"
90
- end
91
- end
92
-
93
- unless self.methods.include?(:__props)
94
- eval %{
95
- # Properties
96
- # An array is used to enforce order.
97
- def __props
98
- @__props
99
- end
100
-
101
- def __props=(props)
102
- @__props = props
103
- end
104
-
105
- def __meta
106
- @__meta
107
- end
108
-
109
- def __meta=(meta)
110
- @__meta = meta
111
- end
112
- }
113
- end
114
-
115
- @__props = G::SafeArray.new() unless @__props
116
-
117
- property = G::Property.new(symbol, klass, meta)
118
-
119
- reader = meta[:reader] || true
120
- writer = writer || meta[:writer] || false
121
-
122
- __add_prop(property, reader, writer)
123
- end
124
-
125
- # Helper method. Accepts a collection of symbols and generates
126
- # properties. Only generates reader.
127
- #
128
- # Example:
129
- # prop_reader String, :name, :title, :body, :sql => "char(32)"
130
- #
131
- def prop_reader(*params)
132
- meta = {}
133
- klass = Object
134
- symbols = []
135
-
136
- for param in params
137
- if param.is_a?(Class)
138
- klass = param
139
- elsif param.is_a?(Symbol)
140
- symbols << param
141
- elsif param.is_a?(Hash)
142
- # the meta hash.
143
- meta = param
144
- else
145
- raise "Error when defining property!"
146
- end
147
- end
148
-
149
- meta[:reader] = true
150
- meta[:writer] = false
151
-
152
- for symbol in symbols
153
- prop(klass, symbol, meta)
154
- end
155
- end
156
-
157
- # Helper method. Accepts a collection of symbols and generates
158
- # properties. Only generates writer.
159
- #
160
- # Example:
161
- # prop_writer String, :name, :title, :body, :sql => "char(32)"
162
- #
163
- def prop_writer(*params)
164
- meta = {}
165
- klass = Object
166
- symbols = []
167
-
168
- for param in params
169
- if param.is_a?(Class)
170
- klass = param
171
- elsif param.is_a?(Symbol)
172
- symbols << param
173
- elsif param.is_a?(Hash)
174
- # the meta hash.
175
- meta = param
176
- else
177
- raise "Error when defining property!"
178
- end
179
- end
180
-
181
- meta[:reader] = false
182
- meta[:writer] = true
183
-
184
- for symbol in symbols
185
- prop(klass, symbol, meta)
186
- end
187
- end
188
-
189
- # Helper method. Accepts a collection of symbols and generates
190
- # properties. Generates reader and writer.
191
- #
192
- # Example:
193
- # prop_accessor String, :name, :title, :body, :sql => "char(32)"
194
- #
195
- def prop_accessor(*params)
196
- meta = {}
197
- klass = Object
198
- symbols = []
199
-
200
- for param in params
201
- if param.is_a?(Class)
202
- klass = param
203
- elsif param.is_a?(Symbol)
204
- symbols << param
205
- elsif param.is_a?(Hash)
206
- # the meta hash.
207
- meta = param
208
- else
209
- raise "Error when defining property!"
210
- end
211
- end
212
-
213
- meta[:reader] = true
214
- meta[:writer] = true
215
-
216
- for symbol in symbols
217
- prop(klass, symbol, meta)
218
- end
219
- end
220
-
221
- # Add the property
222
- #
223
- def __add_prop(prop, reader = true, writer = true)
224
- if idx = @__props.index(prop)
225
- # override in case of duplicates. Keep the order of the props.
226
- @__props[idx] = prop
227
- else
228
- @__props << prop
229
- end
230
-
231
- # Precompile the property read/write methods
232
-
233
- s, klass = prop.symbol, prop.klass
234
-
235
- if reader
236
- module_eval %{
237
- def #{s}
238
- return @#{s}
239
- end
240
- }
241
- end
242
-
243
- # gmosx: __force_xxx reuses xxx= to allow for easier
244
- # overrides.
245
- if writer
246
- module_eval %{
247
- def #{s}=(val)
248
- @#{s} = val
249
- end
250
-
251
- def __force_#{s}(val)
252
- self.#{s}=(} + case klass.name
253
- when Fixnum.name
254
- "val.to_i()"
255
- when String.name
256
- "val.to_s()"
257
- when Float.name
258
- "val.to_f()"
259
- when Time.name
260
- "Time.parse(val.to_s())"
261
- when TrueClass.name, FalseClass.name
262
- "val.to_i() > 0"
263
- else
264
- "val"
265
- end + %{)
266
- end
267
- }
268
- end
269
- end
270
-
271
- # Attach metadata
272
- #
273
- def meta(key, val)
274
- @__meta = G::SafeHash.new unless @__meta
275
-
276
- @__meta[key] = [] unless @__meta[key]
277
-
278
- # guard against duplicates, no need to keep order.
279
- @__meta[key].delete_if { |v| val == v }
280
- @__meta[key] << val
281
- end
282
-
283
- # This method is typically called before including other
284
- # modules to preserve properties order.
285
- #
286
- def inherit_meta(mod = superclass)
287
- # concat props.
288
- if mod.__props
289
- @__props = G::SafeArray.new unless @__props
290
-
291
- mod.__props.each { |p|
292
- __add_prop(p)
293
- }
294
- end
295
-
296
- # concat metadata
297
- if mod.__meta
298
- mod.__meta.each { |k, val|
299
- val.each { |v|
300
- meta(k, v)
301
- } if val
302
- }
303
- end
304
- end
305
-
306
- end
307
-