nitro 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. data/ChangeLog +284 -0
  2. data/{LICENCE → LICENSE} +1 -1
  3. data/README +13 -17
  4. data/RELEASES +13 -1
  5. data/Rakefile +1 -9
  6. data/bin/cluster.rb +5 -5
  7. data/examples/blog/README +45 -0
  8. data/examples/blog/apache.conf +0 -0
  9. data/examples/blog/app.rb +21 -0
  10. data/examples/blog/config.rb +88 -0
  11. data/examples/blog/lib/blog.rb +104 -0
  12. data/examples/blog/log/app.log +117 -0
  13. data/examples/blog/root/comments.xhtml +38 -0
  14. data/examples/blog/root/entry_form.xhtml +18 -0
  15. data/examples/blog/root/index.xhtml +43 -0
  16. data/examples/blog/root/login.xhtml +24 -0
  17. data/examples/blog/root/m/bubbles.gif +0 -0
  18. data/examples/blog/root/m/comments_curve.gif +0 -0
  19. data/examples/blog/root/m/down.gif +0 -0
  20. data/examples/blog/root/m/footer_bg.gif +0 -0
  21. data/examples/blog/root/m/garrow.gif +0 -0
  22. data/examples/blog/root/m/gbull.gif +0 -0
  23. data/examples/blog/root/m/grbull.gif +0 -0
  24. data/examples/blog/root/m/h1_bg.gif +0 -0
  25. data/examples/blog/root/m/header_bg.gif +0 -0
  26. data/examples/blog/root/m/obull.gif +0 -0
  27. data/examples/blog/root/m/page_bg.gif +0 -0
  28. data/examples/blog/root/m/side_title_bg.gif +0 -0
  29. data/examples/blog/root/m/sidebar_bg.gif +0 -0
  30. data/examples/blog/root/recent_posts.xhtml +14 -0
  31. data/examples/blog/root/style.css +201 -0
  32. data/examples/blog/root/style.xsl +118 -0
  33. data/examples/blog/root/view_entry.xhtml +29 -0
  34. data/examples/og/run.rb +27 -29
  35. data/examples/tiny/README +3 -4
  36. data/examples/tiny/app.rb +6 -16
  37. data/examples/tiny/config.rb +30 -0
  38. data/examples/tiny/log/app.log +23 -0
  39. data/examples/tiny/root/{index.sx → index.xhtml} +3 -6
  40. data/lib/{n/std.rb → nitro.rb} +9 -4
  41. data/lib/{n → nitro}/application.rb +13 -7
  42. data/lib/{n → nitro}/config.rb +38 -8
  43. data/lib/{n → nitro}/events.rb +1 -1
  44. data/lib/{n → nitro}/l10n.rb +1 -1
  45. data/lib/{n → nitro}/logger.rb +8 -8
  46. data/lib/{n → nitro}/macros.rb +3 -3
  47. data/lib/{n → nitro}/mixins.rb +1 -1
  48. data/lib/nitro/properties.rb +301 -0
  49. data/lib/{n → nitro}/server.rb +2 -2
  50. data/lib/{n → nitro}/server/appserver.rb +14 -5
  51. data/lib/{n → nitro}/server/cluster.rb +5 -5
  52. data/lib/{n → nitro}/server/cookie.rb +1 -1
  53. data/lib/nitro/server/dispatcher.rb +66 -0
  54. data/lib/{n → nitro}/server/filters.rb +7 -7
  55. data/lib/{n → nitro}/server/filters/autologin.rb +3 -3
  56. data/lib/{n → nitro}/server/fragment.rb +3 -3
  57. data/lib/{n → nitro}/server/handlers.rb +3 -3
  58. data/lib/nitro/server/render.rb +200 -0
  59. data/lib/{n → nitro}/server/request.rb +6 -6
  60. data/lib/{n → nitro}/server/requestpart.rb +5 -5
  61. data/lib/{n → nitro}/server/script.rb +3 -3
  62. data/lib/{n → nitro}/server/server.rb +4 -4
  63. data/lib/{n → nitro}/server/session.rb +3 -3
  64. data/lib/nitro/server/shaders.rb +165 -0
  65. data/lib/{n → nitro}/server/user.rb +1 -1
  66. data/lib/nitro/server/webrick.rb +175 -0
  67. data/lib/nitro/service.rb +25 -0
  68. data/lib/{n → nitro}/sitemap.rb +2 -2
  69. data/lib/{n → nitro}/ui/date-select.rb +0 -0
  70. data/lib/{n → nitro}/ui/pager.rb +1 -1
  71. data/lib/{n → nitro}/ui/popup.rb +1 -1
  72. data/lib/{n → nitro}/ui/select.rb +1 -1
  73. data/lib/{n → nitro}/ui/tabs.rb +1 -1
  74. data/lib/{n → nitro}/utils/array.rb +1 -1
  75. data/lib/{n → nitro}/utils/cache.rb +1 -1
  76. data/lib/{n → nitro}/utils/gfx.rb +1 -1
  77. data/lib/{n → nitro}/utils/hash.rb +1 -1
  78. data/lib/{n → nitro}/utils/html.rb +1 -1
  79. data/lib/{n → nitro}/utils/http.rb +1 -1
  80. data/lib/{n → nitro}/utils/mail.rb +1 -1
  81. data/lib/{n → nitro}/utils/number.rb +1 -1
  82. data/lib/{n → nitro}/utils/pool.rb +1 -1
  83. data/lib/{n → nitro}/utils/string.rb +19 -95
  84. data/lib/{n → nitro}/utils/template.rb +0 -0
  85. data/lib/{n → nitro}/utils/time.rb +1 -1
  86. data/lib/{n → nitro}/utils/uri.rb +3 -3
  87. data/lib/nitro/version.rb +11 -0
  88. data/lib/{n/og.rb → og.rb} +61 -31
  89. data/lib/{n/og → og}/backend.rb +13 -7
  90. data/lib/{n/og → og}/backends/mysql.rb +43 -39
  91. data/lib/{n/og → og}/backends/psql.rb +42 -38
  92. data/lib/{n/og → og}/connection.rb +21 -9
  93. data/lib/{n/og → og}/meta.rb +18 -12
  94. data/lib/xsl/base.xsl +11 -88
  95. data/test/n/server/tc_cookie.rb +1 -1
  96. data/test/n/server/tc_filters.rb +1 -1
  97. data/test/n/server/tc_request.rb +3 -3
  98. data/test/n/server/tc_requestpart.rb +2 -2
  99. data/test/n/server/tc_session.rb +1 -1
  100. data/test/n/tc_events.rb +1 -1
  101. data/test/n/tc_og.rb +16 -18
  102. data/test/n/tc_properties.rb +22 -18
  103. data/test/n/tc_sitemap.rb +2 -2
  104. data/test/n/ui/tc_pager.rb +4 -4
  105. data/test/n/utils/tc_cache.rb +1 -1
  106. data/test/n/utils/tc_hash.rb +1 -1
  107. data/test/n/utils/tc_html.rb +1 -1
  108. data/test/n/utils/tc_http.rb +1 -1
  109. data/test/n/utils/tc_number.rb +1 -1
  110. data/test/n/utils/tc_strings.rb +1 -46
  111. data/test/n/utils/tc_uri.rb +1 -1
  112. metadata +101 -108
  113. data/examples/simple/README +0 -42
  114. data/examples/simple/app.rb +0 -31
  115. data/examples/simple/conf/apache.conf +0 -100
  116. data/examples/simple/conf/config.rb +0 -72
  117. data/examples/simple/conf/debug-config.rb +0 -26
  118. data/examples/simple/conf/live-config.rb +0 -26
  119. data/examples/simple/conf/requires.rb +0 -43
  120. data/examples/simple/ctl +0 -32
  121. data/examples/simple/env.rb +0 -32
  122. data/examples/simple/install.rb +0 -12
  123. data/examples/simple/lib/articles/entities.rb +0 -37
  124. data/examples/simple/lib/articles/lc-en.rb +0 -36
  125. data/examples/simple/lib/articles/methods.rb +0 -55
  126. data/examples/simple/lib/articles/part.rb +0 -57
  127. data/examples/simple/root/add-article.sx +0 -15
  128. data/examples/simple/root/article-form.ss +0 -20
  129. data/examples/simple/root/comments-form.ss +0 -16
  130. data/examples/simple/root/comments.si +0 -30
  131. data/examples/simple/root/index.sx +0 -44
  132. data/examples/simple/root/shader/shader.xsl +0 -100
  133. data/examples/simple/root/shader/style.css +0 -9
  134. data/examples/simple/root/view-article.sx +0 -29
  135. data/examples/tiny/conf/config.rb +0 -62
  136. data/examples/tiny/conf/requires.rb +0 -33
  137. data/examples/tiny/ctl +0 -16
  138. data/lib/n/parts.rb +0 -157
  139. data/lib/n/properties.rb +0 -199
  140. data/lib/n/server/dispatcher.rb +0 -55
  141. data/lib/n/server/handlers/code-handler.rb +0 -182
  142. data/lib/n/server/handlers/page-handler.rb +0 -612
  143. data/lib/n/server/webrick.rb +0 -283
  144. data/lib/n/shaders.rb +0 -166
  145. data/lib/n/sync/clc.rb +0 -110
  146. data/lib/n/sync/handler.rb +0 -229
  147. data/lib/n/sync/server.rb +0 -176
  148. data/lib/p/README +0 -1
@@ -1,44 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <!--
4
- A very simple page.
5
- All comments are removed from the output.
6
- This page uses XSLT because it is the prefered styling method
7
- for Nitro applications. XSLT is used in a very trivial way in
8
- this example. If you dont need the extra capabilities
9
- of XSLT use a NilShader for your app.
10
- -->
11
-
12
- <root
13
- xmlns:x="http://www.navel.gr/xml/shader.xsd"
14
- xmlns:xl="http://www.w3.org/1999/xlink">
15
-
16
- <?r
17
- # methods:
18
- P::Articles.del_article(request)
19
-
20
- articles = N::Article.all
21
- ?>
22
-
23
- <!-- x:page is a trivial template, used as an example -->
24
- <x:page>
25
-
26
- <?r if articles ?>
27
- <ul>
28
- <?r for article in articles ?>
29
- <li>
30
- <a href="articles/#{article.oid}">#{article.title}</a>
31
- <!-- @?... is a macro that creates a postback uri -->
32
- [<a href="@?del_article_oid=#{article.oid}">del</a>]
33
- </li>
34
- <?r end ?>
35
- </ul>
36
- <?r end ?>
37
-
38
- <p>
39
- <a href="add-article.sx">Add article</a>
40
- </p>
41
-
42
- </x:page>
43
-
44
- </root>
@@ -1,100 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <!--
4
- A Simple Shader
5
-
6
- code:
7
- George Moschovitis <gm@navel.gr>
8
-
9
- (c) 2004 Navel, all rights reserved.
10
- $Id: shader.xsl 89 2004-10-20 12:55:58Z gmosx $
11
- -->
12
-
13
- <!DOCTYPE shader
14
- [
15
- <!ENTITY nbsp "<![CDATA[&nbsp;]]>">
16
- <!ENTITY copy "<![CDATA[&copy;]]>">
17
- <!ENTITY euro "<![CDATA[&euro;]]>">
18
- <!ENTITY laquo "<![CDATA[&laquo;]]>">
19
- <!ENTITY raquo "<![CDATA[&raquo;]]>">
20
- ]>
21
-
22
- <xsl:stylesheet
23
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
24
- xmlns:xl="http://www.w3.org/1999/xlink"
25
- xmlns:x="http://www.navel.gr/xml/shader.xsd" version="1.0"
26
- exclude-result-prefixes="x xl">
27
-
28
- <xsl:include href="../lib/xsl/base.xsl" />
29
-
30
- <xsl:output method="xml" indent="no" encoding="iso-8859-1" />
31
- <xsl:strip-space elements="*" />
32
-
33
- <!-- application templates -->
34
-
35
- <xsl:template name="x:head">
36
- <head>
37
- <title>Simple #{$sitemap.str_path(request.translated_uri, lc, request[:NAVARGS])}</title>
38
- <meta name="title" content="Simple" />
39
- <meta name="description" content="Example" />
40
- <meta name="keywords" content="nitro, example" />
41
- <meta name="category" content="example" />
42
- <meta name="robots" content="index, follow" />
43
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
44
-
45
- <xsl:apply-templates select="x:block[@id='meta']"/>
46
-
47
- <base href="#$srv_url/" />
48
- <link href="/shader/style.css" rel="stylesheet" type="text/css" media="screen" />
49
-
50
- <xsl:apply-templates select="x:cell[@id='head']"/>
51
-
52
- <script type="text/javascript">
53
- <xsl:comment>
54
- <xsl:if test="x:cell[@id='script']">
55
- <xsl:apply-templates select="x:cell[@id='script']"/>
56
- </xsl:if>
57
- </xsl:comment>
58
- </script>
59
-
60
- </head>
61
- </xsl:template>
62
-
63
- <xsl:template name="x:header">
64
- #{$sitemap.linked_path(request.translated_uri, lc, request[:NAVARGS])}
65
- </xsl:template>
66
-
67
- <xsl:template name="x:footer">
68
- <div id="footer">
69
- powered by <b>Nitro</b>.
70
- </div>
71
- </xsl:template>
72
-
73
- <!--
74
- can only include x:blocks, all other templates are ignored
75
- -->
76
- <xsl:template match="x:page">
77
- <html>
78
- <xsl:call-template name="x:head" />
79
- <body>
80
- <h1>Simple</h1>
81
-
82
- <div class="page">
83
-
84
- <xsl:call-template name="x:header" />
85
-
86
- <xsl:apply-templates select="x:cell[@id='top']" />
87
-
88
- <div class="block main">
89
- <xsl:apply-templates/>
90
- </div>
91
-
92
- <xsl:apply-templates select="x:cell[@id='bottom']" />
93
-
94
- <xsl:call-template name="x:footer" />
95
- </div>
96
- </body>
97
- </html>
98
- </xsl:template>
99
-
100
- </xsl:stylesheet>
@@ -1,9 +0,0 @@
1
- blockquote {
2
- margin: 0px;
3
- padding: 10px;
4
- border: 1px solid red;
5
- }
6
-
7
- #footer {
8
- margin-top: 20px;
9
- }
@@ -1,29 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <root
4
- xmlns:x="http://www.navel.gr/xml/shader.xsd"
5
- xmlns:xl="http://www.w3.org/1999/xlink">
6
-
7
- <?r
8
- article = Article[request["oid"]]
9
- ?>
10
-
11
- <x:page>
12
-
13
- <?r if article ?>
14
- <h4>#{article.title}</h4>
15
- <i>#{N::TimeUtils.date_time(article.create_time)}</i>
16
- <p>
17
- #{article.body}
18
- </p>
19
- <?r end ?>
20
-
21
- <h3>Comments</h3>
22
-
23
- <!-- include at run time (dynamic include) -->
24
- <?r request[:comments_parent] = article ?>
25
- <x:include xl:href="comments.si" />
26
-
27
- </x:page>
28
-
29
- </root>
@@ -1,62 +0,0 @@
1
- # = Configuration
2
- #
3
- # Use a separate file for configuration, makes the
4
- # main file more readable, and allows for reconfiguring
5
- # (reload) the webapp without restarting the server.
6
- #
7
- # code:
8
- # * George Moschovitis <gm@navel.gr>
9
- #
10
- # (c) 2004 Navel, all rights reserved.
11
- # $Id: config.rb 112 2004-10-27 10:59:55Z gmosx $
12
-
13
- require "n/logger"
14
- require "n/config"
15
-
16
- $name = "Tiny"
17
- $root_dir = "tiny/root"
18
-
19
- # Main logger
20
- $log = Logger.new(STDERR, 10);
21
-
22
- $reload_scripts = $DBG
23
-
24
- require "n/std"
25
- require "n/properties"
26
- require "tiny/conf/requires"
27
-
28
- $srv_extension_map = {
29
- "sx" => ["text/html",
30
- N::PageHandler.new
31
- ],
32
- "si" => ["text/html",
33
- N::PageHandler.new
34
- ],
35
- "rx" => ["text/html",
36
- N::CodeHandler.new
37
- ]
38
- }
39
-
40
- $srv_address = $appsrv_address = "127.0.0.1"
41
- $srv_port = $appsrv_port = 8080
42
- $srv_url = "http://#$srv_address:#$srv_port"
43
-
44
- module App
45
-
46
- # Config
47
- #
48
- module Config
49
-
50
- def initialize_sitemap
51
- end
52
-
53
- def initialize_shaders
54
- $default_shader = N::NilShader.new
55
- end
56
-
57
- def initialize_events
58
- end
59
-
60
- end
61
-
62
- end # module
@@ -1,33 +0,0 @@
1
- # = Requires all needed files
2
- #
3
- # Collect all requires in one file includable
4
- # in multiple executable scripts. Moreover, it
5
- # makes the main script file more readable.
6
- #
7
- # code:
8
- # * George Moschovitis <gm@navel.gr>
9
- #
10
- # (c) 2004 Navel, all rights reserved.
11
- # $Id: requires.rb 124 2004-11-01 12:34:17Z gmosx $
12
-
13
- require "n/std"
14
- require "n/properties"
15
-
16
- require "n/l10n"
17
- require "n/logger"
18
- require "n/parts"
19
- require "n/events"
20
- require "n/shaders"
21
- require "n/mixins"
22
- require "n/sitemap"
23
-
24
- require "n/utils/number"
25
- require "n/utils/string"
26
- require "n/utils/gfx"
27
- require "n/utils/html"
28
- require "n/utils/hash"
29
- require "n/utils/array"
30
-
31
- require "n/server/handlers/page-handler"
32
- require "n/server/handlers/code-handler"
33
-
@@ -1,16 +0,0 @@
1
- #! /bin/sh
2
-
3
- ARGV="$@"
4
-
5
- case $ARGV in
6
- stop)
7
- killall -9 ruby
8
- ERROR=$?
9
- ;;
10
- *)
11
- ruby -C.. tiny/app.rb --start # --daemon
12
- ERROR=$?
13
- esac
14
-
15
- exit $ERROR
16
-
@@ -1,157 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: parts.rb 99 2004-10-22 09:50:28Z gmosx $
6
-
7
- require "singleton"
8
-
9
- require "n/l10n"
10
-
11
- # gmosx, FIXME: safe is probably NOT needed!
12
- $parts = N::SafeHash.new
13
- $rewrites = N::SafeHash.new
14
- $roles = N::SafeArray.new
15
-
16
- module Kernel
17
-
18
- # Special require for part definitions.
19
- #
20
- def require_part(path)
21
- require("p/#{path}/part")
22
- for lc in $lc_use
23
- begin
24
- require("p/#{path}/#{lc}")
25
- rescue LoadError => e
26
- # Drink it!
27
- # $log.debug "No localization files for part '#{path}'" if $DBG
28
- end
29
- end
30
- end
31
-
32
- # Register a part
33
- #
34
- def register_part(part_class)
35
- part = part_class.instance()
36
- $parts[part.name] = part
37
-
38
- # gmosx: DOESNT work yet, we have to manage
39
- # the require order, perhaps DI/Copland can help
40
- # here?
41
- # auto require the parts this one depends
42
- # on.
43
- #
44
- #for dep_part in part.dependencies
45
- # require_part(dep_part)
46
- #end
47
-
48
- part.start()
49
- end
50
-
51
- end
52
-
53
- # ----------------------------------------------------------------------
54
-
55
- module N
56
-
57
- # = Part
58
- #
59
- # A module of functionality in the framework
60
- #
61
- # = Design:
62
- #
63
- # Q: Part should include Entity to allow optional runtime
64
- # administration/customization ??
65
- #
66
- class Part
67
- include Singleton
68
-
69
- # the (internal) name of this part
70
- attr_accessor :name
71
- # the tile of this part (intended for humans)
72
- attr_accessor :title
73
- # a description of the part
74
- attr_accessor :body
75
- # the version of this part
76
- attr_accessor :version
77
- # the vendor
78
- attr_accessor :vendor
79
- # url of the vendor's homepage.
80
- attr_accessor :vendor_url
81
- # an array of part names this part depends on. The named
82
- # parts are automatically required when requiring this part.
83
- attr_accessor :dependencies
84
-
85
- prop_accessor String, :path
86
-
87
- def initialize
88
- sitemap()
89
- rewrites()
90
- roles()
91
- prepared_statements()
92
- end
93
-
94
- # Install this part to the application. Called
95
- # by the application installation scripts. Typically
96
- # inserts bootstrap data in the database
97
- #
98
- def install
99
- end
100
-
101
- # Uninstall this part. Typically cleans up the
102
- # database.
103
- #
104
- def unistall
105
- end
106
-
107
- # This method is called when the application
108
- # is started.
109
- #
110
- def start
111
- end
112
-
113
- # This method is called when the application
114
- # is stopped.
115
- #
116
- def stop
117
- end
118
-
119
- # Define the pages this part introduces.
120
- #
121
- def sitemap
122
- end
123
-
124
- # Define the rewrite rules for this part.
125
- #
126
- def rewrites
127
- end
128
-
129
- # Define the roles this part introduces.
130
- #
131
- def roles
132
- end
133
-
134
- # Define usefull prepared statements for this
135
- # part
136
- #
137
- def prepared_statements
138
- end
139
-
140
- # Dump this part as s String.
141
- #
142
- def to_s
143
- @name
144
- end
145
- end
146
-
147
- end # module
148
-
149
- # = P
150
- #
151
- # This module is used as a namespace that encapsulates
152
- # the Application Parts defined on top of the engine.
153
- #
154
- module P
155
- end # module
156
-
157
-