nitro 0.3.0 → 0.4.1

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 (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
-