nitro 0.6.0 → 0.7.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 +175 -0
- data/README +41 -7
- data/RELEASES +24 -0
- data/Rakefile +5 -7
- data/bin/new_app.rb +26 -4
- data/bin/new_form.rb +54 -0
- data/bin/proto/config.rb +3 -3
- data/bin/proto/root/index.xhtml +2 -34
- data/bin/proto/root/style.css +4 -70
- data/bin/proto/root/style.xsl +8 -39
- data/doc/tutorial.txt +5 -0
- data/examples/blog/app.rb +2 -1
- data/examples/blog/config.rb +7 -2
- data/examples/blog/root/style.xsl +1 -2
- data/examples/flash/README +34 -0
- data/examples/flash/app.rb +20 -0
- data/examples/flash/config.rb +38 -0
- data/examples/flash/lib/flash.rb +40 -0
- data/examples/flash/root/index.xhtml +25 -0
- data/examples/flash/root/show_inline_text.xhtml +12 -0
- data/examples/flash/tmp.swf +0 -0
- data/examples/og/README +7 -0
- data/examples/og/mock_example.rb +58 -0
- data/examples/og/run.rb +9 -5
- data/examples/tiny/root/include.xhtml +3 -0
- data/examples/tiny/root/index.xhtml +2 -1
- data/lib/glue/property.rb +166 -107
- data/lib/glue/property.rb.old +307 -0
- data/lib/nitro/builders/form.rb +26 -17
- data/lib/nitro/events.rb +1 -1
- data/lib/nitro/markup.rb +120 -0
- data/lib/nitro/server/cookie.rb +1 -1
- data/lib/nitro/server/dispatcher.rb +5 -6
- data/lib/nitro/server/filters.rb +1 -1
- data/lib/nitro/server/render.rb +33 -29
- data/lib/nitro/server/shaders.rb +32 -3
- data/lib/nitro/server/user.rb +1 -1
- data/lib/nitro/server/webrick.rb +9 -4
- data/lib/nitro/ui/popup.rb +1 -1
- data/lib/nitro/ui/select.rb +1 -1
- data/lib/nitro/ui/tabs.rb +1 -1
- data/lib/nitro/version.rb +2 -2
- data/lib/og.rb +17 -6
- data/lib/og/backend.rb +34 -4
- data/lib/og/backends/mysql.rb +3 -17
- data/lib/og/backends/psql.rb +5 -17
- data/lib/og/meta.rb +41 -26
- data/lib/og/mock.rb +223 -0
- data/lib/og/version.rb +2 -2
- data/lib/parts/content.rb +61 -0
- data/test/glue/{tc_properties.rb → tc_property.rb} +0 -1
- data/test/glue/tc_property_mixins.rb +62 -0
- data/test/og/tc_lifecycle.rb +107 -0
- data/test/tc_og.rb +31 -4
- data/vendor/README +6 -0
- data/vendor/binding_of_caller.rb +81 -0
- data/vendor/breakpoint.rb +526 -0
- data/vendor/breakpoint_client.rb +157 -0
- metadata +135 -95
    
        data/lib/nitro/server/cookie.rb
    CHANGED
    
    
| @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: dispatcher.rb  | 
| 5 | 
            +
            # $Id: dispatcher.rb 200 2004-12-27 11:24:41Z gmosx $
         | 
| 6 6 |  | 
| 7 7 | 
             
            require 'nitro/server/render'
         | 
| 8 8 |  | 
| @@ -15,6 +15,7 @@ module Dispatcher | |
| 15 15 |  | 
| 16 16 | 
             
            	def process(request, response)
         | 
| 17 17 | 
             
            		begin
         | 
| 18 | 
            +
            			# gmosx, INVESTIGATE: this is not really needed.
         | 
| 18 19 | 
             
            			$og.get_connection if $og
         | 
| 19 20 |  | 
| 20 21 | 
             
            			session = create_session(request, response)
         | 
| @@ -38,14 +39,12 @@ module Dispatcher | |
| 38 39 | 
             
            					<p>Click <a href="#{request.referer}">here</a> to return 
         | 
| 39 40 | 
             
            					to the previous page.</p>
         | 
| 40 41 | 
             
            				}
         | 
| 41 | 
            -
             | 
| 42 | 
            -
            				if request.error_log
         | 
| 42 | 
            +
            				if @rendering_errors
         | 
| 43 43 | 
             
            					body << %{
         | 
| 44 | 
            -
            						<h3> | 
| 45 | 
            -
            						<pre>#{ | 
| 44 | 
            +
            						<h3>Rendering errors</h3>
         | 
| 45 | 
            +
            						<pre>#{@rendering_errors.join("\n")}</pre>
         | 
| 46 46 | 
             
            					}
         | 
| 47 47 | 
             
            				end
         | 
| 48 | 
            -
            =end
         | 
| 49 48 | 
             
            				body << %{
         | 
| 50 49 | 
             
            					<h3>Exception</h3>
         | 
| 51 50 | 
             
            					<pre>#{pp_exception(e)}</pre>
         | 
    
        data/lib/nitro/server/filters.rb
    CHANGED
    
    
    
        data/lib/nitro/server/render.rb
    CHANGED
    
    | @@ -2,7 +2,9 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: render.rb  | 
| 5 | 
            +
            # $Id: render.rb 200 2004-12-27 11:24:41Z gmosx $
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            require 'cgi'
         | 
| 6 8 |  | 
| 7 9 | 
             
            module N
         | 
| 8 10 |  | 
| @@ -53,7 +55,7 @@ module RenderUtils | |
| 53 55 | 
             
            				meth = parts[2]
         | 
| 54 56 | 
             
            		end
         | 
| 55 57 |  | 
| 56 | 
            -
            #		p '--', api, base, render_class, meth, '--'
         | 
| 58 | 
            +
            		#		p '--', api, base, render_class, meth, '--'
         | 
| 57 59 |  | 
| 58 60 | 
             
            		return api, base, render_class, meth
         | 
| 59 61 | 
             
            	end
         | 
| @@ -125,7 +127,7 @@ module RenderUtils | |
| 125 127 | 
             
            		if klass.instance_methods.include?("#{meth}__xhtml")
         | 
| 126 128 | 
             
            			valid = true
         | 
| 127 129 | 
             
            			code << %{
         | 
| 128 | 
            -
            				#{meth}__xhtml();
         | 
| 130 | 
            +
            				return unless #{meth}__xhtml();
         | 
| 129 131 | 
             
            			}
         | 
| 130 132 | 
             
            		end
         | 
| 131 133 |  | 
| @@ -133,7 +135,7 @@ module RenderUtils | |
| 133 135 | 
             
            		if template = template_for_method(base, meth)
         | 
| 134 136 | 
             
            			valid = true
         | 
| 135 137 | 
             
            			code << %{
         | 
| 136 | 
            -
            				__#{meth}_xhtml();
         | 
| 138 | 
            +
            				return unless __#{meth}_xhtml();
         | 
| 137 139 | 
             
            			}
         | 
| 138 140 | 
             
            		end
         | 
| 139 141 |  | 
| @@ -158,9 +160,11 @@ module RenderUtils | |
| 158 160 | 
             
            				end
         | 
| 159 161 | 
             
            			}
         | 
| 160 162 | 
             
            		end
         | 
| 161 | 
            -
             | 
| 162 | 
            -
             | 
| 163 | 
            -
            		
         | 
| 163 | 
            +
            =begin	
         | 
| 164 | 
            +
            		puts '--'
         | 
| 165 | 
            +
            		puts dump(code)
         | 
| 166 | 
            +
            		puts '--'
         | 
| 167 | 
            +
            =end
         | 
| 164 168 | 
             
            		klass.class_eval(code)
         | 
| 165 169 |  | 
| 166 170 | 
             
            		return "__#{meth}"
         | 
| @@ -198,7 +202,7 @@ module RenderUtils | |
| 198 202 | 
             
            		if klass.instance_methods.include?("#{meth}__xml")
         | 
| 199 203 | 
             
            			valid = true
         | 
| 200 204 | 
             
            			code << %{
         | 
| 201 | 
            -
            				#{meth}__xml();
         | 
| 205 | 
            +
            				return unless #{meth}__xml();
         | 
| 202 206 | 
             
            			}
         | 
| 203 207 | 
             
            		end
         | 
| 204 208 |  | 
| @@ -206,7 +210,7 @@ module RenderUtils | |
| 206 210 | 
             
            		if template = template_for_method(base, meth, 'xml')
         | 
| 207 211 | 
             
            			valid = true
         | 
| 208 212 | 
             
            			code << %{
         | 
| 209 | 
            -
            				__#{meth}_xml();
         | 
| 213 | 
            +
            				return unless __#{meth}_xml();
         | 
| 210 214 | 
             
            			}
         | 
| 211 215 | 
             
            		end
         | 
| 212 216 |  | 
| @@ -236,20 +240,20 @@ module RenderUtils | |
| 236 240 | 
             
            		return "__rest_#{meth}"
         | 
| 237 241 | 
             
            	end
         | 
| 238 242 |  | 
| 239 | 
            -
            	 | 
| 240 | 
            -
             | 
| 241 | 
            -
             | 
| 242 | 
            -
            		 | 
| 243 | 
            -
            		
         | 
| 244 | 
            -
            		text = File.read(filename)
         | 
| 245 | 
            -
            		text.gsub!(/<\?xml.*\?>/, '')
         | 
| 246 | 
            -
            		text.gsub!(/<\/?root(.*?)>/m, ' ');
         | 
| 247 | 
            -
            		
         | 
| 248 | 
            -
            		return text
         | 
| 243 | 
            +
            	def self.dump(str)
         | 
| 244 | 
            +
            		str.split("\n").each_with_index do |line, idx|
         | 
| 245 | 
            +
            			puts "#{idx+1}: #{line}"
         | 
| 246 | 
            +
            		end
         | 
| 249 247 | 
             
            	end
         | 
| 250 | 
            -
            	
         | 
| 251 248 | 
             
            end
         | 
| 252 249 |  | 
| 250 | 
            +
            # = RenderExit
         | 
| 251 | 
            +
            #
         | 
| 252 | 
            +
            # Raise this exception to stop rendering.
         | 
| 253 | 
            +
            #
         | 
| 254 | 
            +
            class RenderExit < Exception
         | 
| 255 | 
            +
            end
         | 
| 256 | 
            +
            	
         | 
| 253 257 | 
             
            # = Render
         | 
| 254 258 | 
             
            #
         | 
| 255 259 | 
             
            module Render
         | 
| @@ -324,6 +328,9 @@ module Render | |
| 324 328 | 
             
            				r.send(meth)
         | 
| 325 329 | 
             
            				@out = r.out
         | 
| 326 330 | 
             
            			end
         | 
| 331 | 
            +
            		rescue N::RenderExit => e
         | 
| 332 | 
            +
            			# Just stop rendering.
         | 
| 333 | 
            +
            			# For example called by redirects.
         | 
| 327 334 | 
             
            		rescue Exception, StandardError => e
         | 
| 328 335 | 
             
            			log_error "error while handling '#{path}'."
         | 
| 329 336 | 
             
            			log_error pp_exception(e)
         | 
| @@ -345,15 +352,12 @@ module Render | |
| 345 352 | 
             
            	# Send a redirect response.
         | 
| 346 353 | 
             
            	#
         | 
| 347 354 | 
             
            	def redirect(url, status = 303)
         | 
| 348 | 
            -
            		 | 
| 349 | 
            -
             | 
| 350 | 
            -
             | 
| 351 | 
            -
             | 
| 352 | 
            -
             | 
| 353 | 
            -
            		 | 
| 354 | 
            -
            		
         | 
| 355 | 
            -
            		# stop the filter pipeline
         | 
| 356 | 
            -
            		return false
         | 
| 355 | 
            +
            		@response.status = status
         | 
| 356 | 
            +
            		@response.body = "<html><a href=\"#{url.to_s}\">#{url.to_s}</a>.</html>\n"
         | 
| 357 | 
            +
            		@response.header['location'] = url.to_s
         | 
| 358 | 
            +
             | 
| 359 | 
            +
            		# stop the rendering
         | 
| 360 | 
            +
            		raise N::RenderExit
         | 
| 357 361 | 
             
            	end
         | 
| 358 362 |  | 
| 359 363 | 
             
            	# Redirect to the referer of this method.
         | 
    
        data/lib/nitro/server/shaders.rb
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: shaders.rb  | 
| 5 | 
            +
            # $Id: shaders.rb 189 2004-12-13 21:38:05Z gmosx $
         | 
| 6 6 |  | 
| 7 7 | 
             
            module N
         | 
| 8 8 |  | 
| @@ -62,12 +62,28 @@ class RubyShader < N::Shader | |
| 62 62 | 
             
            	# Convert the xhtml script to actual Ruby code, ready to be 
         | 
| 63 63 | 
             
            	# evaluated.
         | 
| 64 64 | 
             
            	#
         | 
| 65 | 
            +
            	#--
         | 
| 66 | 
            +
            	# Investigate:
         | 
| 67 | 
            +
            	# perhaps xl:href should be used to be XLink compatible?
         | 
| 68 | 
            +
            	#++
         | 
| 69 | 
            +
            	#
         | 
| 65 70 | 
             
            	def process(hash, text)
         | 
| 66 71 | 
             
            		# strip the xml header! (interracts with the following gsub!)
         | 
| 67 72 | 
             
            		text.gsub!(/<\?xml.*\?>/, "")
         | 
| 68 73 |  | 
| 69 | 
            -
            		# statically include files.
         | 
| 70 | 
            -
            		#  | 
| 74 | 
            +
            		# statically include sub script files.
         | 
| 75 | 
            +
            		# The target file is included at compile time.
         | 
| 76 | 
            +
            		#
         | 
| 77 | 
            +
            		# gmosx: must be xformed before the <?r pi.
         | 
| 78 | 
            +
            		#
         | 
| 79 | 
            +
            		# Example:		
         | 
| 80 | 
            +
            		# <?include xl:href="root/myfile.sx" ?>
         | 
| 81 | 
            +
            		#
         | 
| 82 | 
            +
            		text.gsub!(/<\?include href="(.*?)"(.*)\?>/) { |match|
         | 
| 83 | 
            +
            			# gmosx: xmm match matches the whole string.
         | 
| 84 | 
            +
            			# match = overload_path($1)				
         | 
| 85 | 
            +
            			load_statically_included("#$root_dir/#$1")
         | 
| 86 | 
            +
            		}
         | 
| 71 87 |  | 
| 72 88 | 
             
            		# xform include instructions <include href="xxx" />
         | 
| 73 89 | 
             
            		# must be transformed before the processinc instructions.
         | 
| @@ -103,6 +119,19 @@ class RubyShader < N::Shader | |
| 103 119 | 
             
            		process_next(hash, text)
         | 
| 104 120 | 
             
            	end
         | 
| 105 121 |  | 
| 122 | 
            +
            	# Loads and statically includes a file.
         | 
| 123 | 
            +
            	#
         | 
| 124 | 
            +
            	def load_statically_included(filename)
         | 
| 125 | 
            +
            		$log.debug "Statically including '#{filename}'" if $DBG
         | 
| 126 | 
            +
            		
         | 
| 127 | 
            +
            		text = File.read(filename)
         | 
| 128 | 
            +
            		text.gsub!(/<\?xml.*\?>/, '')
         | 
| 129 | 
            +
            		text.gsub!(/<\/?root(.*?)>/m, ' ');
         | 
| 130 | 
            +
            		
         | 
| 131 | 
            +
            		return text
         | 
| 132 | 
            +
            	end
         | 
| 133 | 
            +
            	
         | 
| 134 | 
            +
            	
         | 
| 106 135 | 
             
            end
         | 
| 107 136 |  | 
| 108 137 | 
             
            # = XSLTShader
         | 
    
        data/lib/nitro/server/user.rb
    CHANGED
    
    
    
        data/lib/nitro/server/webrick.rb
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: webrick.rb  | 
| 5 | 
            +
            # $Id: webrick.rb 200 2004-12-27 11:24:41Z gmosx $
         | 
| 6 6 |  | 
| 7 7 | 
             
            require "webrick"
         | 
| 8 8 |  | 
| @@ -45,7 +45,7 @@ module WEBrick | |
| 45 45 | 
             
            		def fill(obj, name = nil)
         | 
| 46 46 | 
             
            			# if an object is passed create an instance.
         | 
| 47 47 | 
             
            			obj = obj.new if obj.is_a?(Class)
         | 
| 48 | 
            -
             | 
| 48 | 
            +
            		
         | 
| 49 49 | 
             
            			@query.each do |param, val|
         | 
| 50 50 | 
             
            				begin
         | 
| 51 51 | 
             
            					# gmosx: DO NOT escape by default !!!
         | 
| @@ -90,9 +90,14 @@ class WebrickServer < N::AppServer | |
| 90 90 | 
             
            	#
         | 
| 91 91 | 
             
            	def start
         | 
| 92 92 | 
             
                Socket.do_not_reverse_lookup = true # patch for OS X
         | 
| 93 | 
            +
             | 
| 94 | 
            +
            =begin
         | 
| 95 | 
            +
            		accesslog = WEBrick::BasicLog::new('/dev/null')
         | 
| 96 | 
            +
            		referer = WEBrick::BasicLog::new('/dev/null')	
         | 
| 97 | 
            +
            =end
         | 
| 93 98 |  | 
| 94 | 
            -
            		accesslog = WEBrick::BasicLog::new( | 
| 95 | 
            -
            		referer = WEBrick::BasicLog::new( | 
| 99 | 
            +
            		accesslog = WEBrick::BasicLog::new('log/access.log')
         | 
| 100 | 
            +
            		referer = WEBrick::BasicLog::new('log/referer.log')	
         | 
| 96 101 |  | 
| 97 102 | 
             
                @webrick = WEBrick::HTTPServer.new(
         | 
| 98 103 | 
             
            			:BindAddress => $appsrv_address, 
         | 
    
        data/lib/nitro/ui/popup.rb
    CHANGED
    
    
    
        data/lib/nitro/ui/select.rb
    CHANGED
    
    
    
        data/lib/nitro/ui/tabs.rb
    CHANGED
    
    
    
        data/lib/nitro/version.rb
    CHANGED
    
    | @@ -2,10 +2,10 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: version.rb  | 
| 5 | 
            +
            # $Id: version.rb 194 2004-12-20 20:23:57Z gmosx $
         | 
| 6 6 |  | 
| 7 7 | 
             
            # The name of the server.
         | 
| 8 8 | 
             
            $srv_name = 'Nitro'
         | 
| 9 9 |  | 
| 10 10 | 
             
            # The version of the server.
         | 
| 11 | 
            -
            $srv_version = '0. | 
| 11 | 
            +
            $srv_version = '0.7.0'
         | 
    
        data/lib/og.rb
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: og.rb  | 
| 5 | 
            +
            # $Id: og.rb 197 2004-12-21 13:50:17Z gmosx $
         | 
| 6 6 |  | 
| 7 7 | 
             
            require "glue/property"
         | 
| 8 8 | 
             
            require "glue/array"
         | 
| @@ -28,6 +28,11 @@ $og_auto_manage_classes = true | |
| 28 28 | 
             
            # If true, automatically include the Og meta-language into Module. 
         | 
| 29 29 | 
             
            $og_include_meta_language = true
         | 
| 30 30 |  | 
| 31 | 
            +
            # Attach the following prefix to all generated SQL table names.
         | 
| 32 | 
            +
            # Usefull on hosting scenarios where you have to run multiple
         | 
| 33 | 
            +
            # web applications/sites on a single database.
         | 
| 34 | 
            +
            $og_table_prefix = nil
         | 
| 35 | 
            +
             | 
| 31 36 | 
             
            require "og/meta"
         | 
| 32 37 |  | 
| 33 38 | 
             
            # = Og
         | 
| @@ -169,7 +174,10 @@ class Database | |
| 169 174 | 
             
            		@config[:connection_count].times do
         | 
| 170 175 | 
             
            			@connection_pool << Og::Connection.new(self)
         | 
| 171 176 | 
             
            		end
         | 
| 172 | 
            -
             | 
| 177 | 
            +
            	
         | 
| 178 | 
            +
            		# gmosx, FIXME: this automanage code is not elegant and slow
         | 
| 179 | 
            +
            		# should probably recode this, along with glue/property.rb
         | 
| 180 | 
            +
            		#
         | 
| 173 181 | 
             
            		if $og_auto_manage_classes
         | 
| 174 182 | 
             
            			# automatically manage classes with properties and metadata.
         | 
| 175 183 | 
             
            			# gmosx: Any idea how to optimize this?
         | 
| @@ -286,8 +294,6 @@ class Database | |
| 286 294 | 
             
            		Og::Utils.eval_og_oid(klass) unless klass.instance_methods.include?(:oid)
         | 
| 287 295 |  | 
| 288 296 | 
             
            		klass.class_eval %{
         | 
| 289 | 
            -
            			inherit_meta(superclass) if superclass
         | 
| 290 | 
            -
            			
         | 
| 291 297 | 
             
            			DBTABLE = "#{Og::Utils.table(klass)}"
         | 
| 292 298 | 
             
            			DBSEQ = "#{Og::Utils.table(klass)}_oids_seq" 
         | 
| 293 299 |  | 
| @@ -311,7 +317,12 @@ class Database | |
| 311 317 | 
             
            	# class and its instances. 
         | 
| 312 318 | 
             
            	#
         | 
| 313 319 | 
             
            	def enchant(klass)
         | 
| 314 | 
            -
            		klass. | 
| 320 | 
            +
            		klass.module_eval <<-"end_eval", __FILE__, __LINE__
         | 
| 321 | 
            +
            			def self.create(*params)
         | 
| 322 | 
            +
            				obj = #{klass}.new(*params)
         | 
| 323 | 
            +
            				obj.save!
         | 
| 324 | 
            +
            			end
         | 
| 325 | 
            +
            				
         | 
| 315 326 | 
             
            			def self.save(obj)
         | 
| 316 327 | 
             
            				$og << obj
         | 
| 317 328 | 
             
            			end
         | 
| @@ -362,7 +373,7 @@ class Database | |
| 362 373 | 
             
            			def delete!
         | 
| 363 374 | 
             
            				$og.delete(@oid, #{klass})
         | 
| 364 375 | 
             
            			end
         | 
| 365 | 
            -
            		 | 
| 376 | 
            +
            		end_eval
         | 
| 366 377 | 
             
            	end
         | 
| 367 378 |  | 
| 368 379 | 
             
            	# Automatically wrap connection methods.
         | 
    
        data/lib/og/backend.rb
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            # * George Moschovitis  <gm@navel.gr>
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            # (c) 2004 Navel, all rights reserved.
         | 
| 5 | 
            -
            # $Id: backend.rb  | 
| 5 | 
            +
            # $Id: backend.rb 197 2004-12-21 13:50:17Z gmosx $
         | 
| 6 6 |  | 
| 7 7 | 
             
            require "yaml"
         | 
| 8 8 |  | 
| @@ -28,13 +28,13 @@ module Utils | |
| 28 28 | 
             
            	# The name of the SQL table where objects of this class are stored.
         | 
| 29 29 | 
             
            	#
         | 
| 30 30 | 
             
            	def self.table(klass)
         | 
| 31 | 
            -
            		"_#{encode(klass)}"
         | 
| 31 | 
            +
            		"_#{$og_table_prefix}#{encode(klass)}"
         | 
| 32 32 | 
             
            	end
         | 
| 33 33 |  | 
| 34 34 | 
             
            	# The name of the join table for the two given classes.
         | 
| 35 35 | 
             
            	#
         | 
| 36 36 | 
             
            	def self.join_table(klass1, klass2)
         | 
| 37 | 
            -
            		" | 
| 37 | 
            +
            		"_#{$og_table_prefix}j_#{Og::Utils.encode(klass1)}_#{Og::Utils.encode(klass2)}"
         | 
| 38 38 | 
             
            	end
         | 
| 39 39 |  | 
| 40 40 | 
             
            	# Returns the props that will be included in the insert query.
         | 
| @@ -232,7 +232,37 @@ class Backend | |
| 232 232 | 
             
            	def rollback
         | 
| 233 233 | 
             
            		exec "ROLLBACK"
         | 
| 234 234 | 
             
            	end	
         | 
| 235 | 
            -
             | 
| 235 | 
            +
             | 
| 236 | 
            +
            	# Create the fields that correpsond to the klass properties.
         | 
| 237 | 
            +
            	# The generated fields array is used in create_table.
         | 
| 238 | 
            +
            	# If the property has an :sql metadata this overrides the default mapping.
         | 
| 239 | 
            +
            	# If the property has an :extra_sql metadata the extra sql is appended
         | 
| 240 | 
            +
            	# after the default mapping.
         | 
| 241 | 
            +
            	#
         | 
| 242 | 
            +
            	def create_fields(klass, typemap)
         | 
| 243 | 
            +
            		fields = []
         | 
| 244 | 
            +
            		
         | 
| 245 | 
            +
            		klass.__props.each do |p|
         | 
| 246 | 
            +
            			klass.sql_index(p.symbol) if p.meta[:sql_index]
         | 
| 247 | 
            +
            				
         | 
| 248 | 
            +
            			field = "#{p.symbol}"
         | 
| 249 | 
            +
            			
         | 
| 250 | 
            +
            			if p.meta and p.meta[:sql]
         | 
| 251 | 
            +
            				field << " #{p.meta[:sql]}"
         | 
| 252 | 
            +
            			else
         | 
| 253 | 
            +
            				field << " #{typemap[p.klass]}"
         | 
| 254 | 
            +
            				# attach extra sql
         | 
| 255 | 
            +
            				if p.meta and extra_sql = p.meta[:extra_sql]
         | 
| 256 | 
            +
            					field << " #{extra_sql}"
         | 
| 257 | 
            +
            				end
         | 
| 258 | 
            +
            			end
         | 
| 259 | 
            +
            			
         | 
| 260 | 
            +
            			fields << field 
         | 
| 261 | 
            +
            		end
         | 
| 262 | 
            +
             | 
| 263 | 
            +
            		return fields
         | 
| 264 | 
            +
            	end
         | 
| 265 | 
            +
             | 
| 236 266 | 
             
            	# Create the managed object table. The properties of the
         | 
| 237 267 | 
             
            	# object are mapped to the table columns. Additional sql relations
         | 
| 238 268 | 
             
            	# and constrains are created (indicices, sequences, etc).
         |