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,26 +0,0 @@
1
- # = Debug Configuration
2
- #
3
- # Configuration to use while debugging, this is slow.
4
- #
5
- # code:
6
- # * George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2004 Navel, all rights reserved.
9
- # $Id: debug-config.rb 118 2004-11-01 10:13:42Z gmosx $
10
-
11
- require "simple/conf/config"
12
-
13
- # Database
14
-
15
- $og = N::Og.new(
16
- :address => "localhost",
17
- :database => "simple",
18
- :user => "postgres",
19
- :password => "navelrulez",
20
- :connection_count => 2
21
- )
22
-
23
- $og.get_connection
24
- $og.manage(N::Article)
25
- $og.manage(N::Comment)
26
-
@@ -1,26 +0,0 @@
1
- # = Live Configuration
2
- #
3
- # Configuration to use in the live server, optimized for speed.
4
- #
5
- # code:
6
- # * George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2004 Navel, all rights reserved.
9
- # $Id: live-config.rb 118 2004-11-01 10:13:42Z gmosx $
10
-
11
- require "simple/conf/config"
12
-
13
- # Logger
14
-
15
- $log = Logger.new("simple/logs/app.log", 10);
16
- $log.level = Logger::INFO
17
-
18
- # Database
19
-
20
- $og = N::Og.new(
21
- :address => "localhost",
22
- :database => "simple",
23
- :user => "postgres",
24
- :password => "navelrulez",
25
- :connection_count => 20
26
- )
@@ -1,43 +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 118 2004-11-01 10:13:42Z gmosx $
12
-
13
- require "n/std"
14
- require "n/properties"
15
-
16
- require "n/og"
17
- require "n/l10n"
18
- require "n/logger"
19
- require "n/parts"
20
- require "n/events"
21
- require "n/shaders"
22
- require "n/mixins"
23
- require "n/sitemap"
24
-
25
- require "n/utils/number"
26
- require "n/utils/string"
27
- require "n/utils/gfx"
28
- require "n/utils/html"
29
- require "n/utils/hash"
30
- require "n/utils/array"
31
-
32
- require "n/ui/popup"
33
- require "n/ui/select"
34
- require "n/ui/pager"
35
- require "n/ui/tabs"
36
- require "n/ui/date-select"
37
-
38
- require "n/server/cluster"
39
- require "n/server/handlers/page-handler"
40
- require "n/server/handlers/code-handler"
41
-
42
- require "articles/part"
43
-
@@ -1,32 +0,0 @@
1
- #! /bin/sh
2
-
3
- ARGV="$@"
4
-
5
- case $ARGV in
6
- start)
7
- /usr/sbin/httpd -d `pwd` -f conf/apache.conf
8
- ruby -C../.. bin/cluster.rb --daemon
9
- ruby -C.. simple/app.rb --start # --daemon
10
- ERROR=$?
11
- ;;
12
- restart)
13
- # restart appserver only!
14
- export ASPID= `ps ax | grep app.rb | grep ruby | cut -d" " -f1`
15
- if [ -n "$ASPID" ]; then
16
- echo $ASPID
17
- kill -9 $ASPID
18
- fi
19
- ruby -C.. simple/app.rb --restart # --daemon
20
- ERROR=$?
21
- ;;
22
- stop)
23
- killall -9 ruby httpd
24
- ERROR=$?
25
- ;;
26
- *)
27
- echo "NOP"
28
- ERROR=$?
29
- esac
30
-
31
- exit $ERROR
32
-
@@ -1,32 +0,0 @@
1
- # = Environment
2
- #
3
- # Require this file in your script to gain access to the full
4
- # AppServer environment.
5
- #
6
- # code:
7
- # * George Moschovitis <gm@navel.gr>
8
- #
9
- # (c) 2004 Navel, all rights reserved.
10
- # $Id: env.rb 124 2004-11-01 12:34:17Z gmosx $
11
-
12
- $:.unshift ".."
13
- $:.unshift "simple/lib"
14
- $:.unshift "../lib"
15
-
16
- $DBG = true
17
- $DBG ? (require "simple/conf/debug-config") : (require "simple/conf/live-config")
18
-
19
- require "n/server/server"
20
-
21
- $drb_lm_server = "druby://:10000"
22
-
23
- module App
24
-
25
- class Server < N::AppServer
26
- include App::Config
27
- end
28
-
29
- end # module
30
-
31
- $app = App::Server.new.exec()
32
-
@@ -1,12 +0,0 @@
1
- # = Install
2
- #
3
- #--
4
- # code:
5
- # George Moschovitis <gm@navel.gr>
6
- #
7
- # (c) 2004 Navel, all rights reserved.
8
- # $Id: install.rb 84 2004-10-19 13:57:01Z gmosx $
9
- #++
10
-
11
- `createdb simple -U postgres`
12
-
@@ -1,37 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: entities.rb 118 2004-11-01 10:13:42Z gmosx $
6
-
7
- module N
8
-
9
- # gmosx: forward declaration, can we avoid this?
10
- class Comment; end
11
-
12
- # = Article
13
- #
14
- class Article
15
- prop_accessor String, :title
16
- prop_accessor String, :body
17
- prop_accessor Time, :create_time
18
- has_many N::Comment, :comments
19
-
20
- def initialize
21
- @create_time = Time.now
22
- end
23
- end
24
-
25
- # = Comment
26
- #
27
- class Comment
28
- prop_accessor String, :body
29
- prop_accessor Time, :create_time
30
- belongs_to N::Article, :article
31
-
32
- def initialize
33
- @create_time = Time.now
34
- end
35
- end
36
-
37
- end # module
@@ -1,36 +0,0 @@
1
- # = Base English Localization Dictionary
2
- #
3
- #--
4
- # code:
5
- # George Moschovitis <gm@navel.gr>
6
- #
7
- # (c) 2004 Navel, all rights reserved.
8
- # $Id: lc-en.rb 84 2004-10-19 13:57:01Z gmosx $
9
- #++
10
-
11
- $lc_en.update({
12
-
13
- :general => "General",
14
- :edit => "Edit",
15
- :add => "Add",
16
- :del => "Delete",
17
- :cancel => "Cancel",
18
- :preview => "Preview",
19
- :store => "Store",
20
- :update => "Update",
21
- :submit => "Submit",
22
- :title => "Title",
23
- :body => "Body",
24
- :description => "Description",
25
- :answer => "Answer",
26
- :refresh => "Refresh",
27
- :select_all => "Select all",
28
- :clear_all => "Clear all",
29
-
30
- # search
31
-
32
- :search => "Search",
33
- :search_results => "Search results",
34
- :results_found => proc { |count| "#{count} results found" }
35
-
36
- })
@@ -1,55 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: methods.rb 118 2004-11-01 10:13:42Z gmosx $
6
-
7
- module P
8
-
9
- # = ArticlesMethods
10
- #
11
- # Methods for the Articles part.
12
- #
13
- module ArticlesMethods
14
-
15
- # Add an article
16
- #
17
- def add_article(request)
18
- if request["add_article"]
19
- article = N::Article.new
20
- request.update_entity(article)
21
- article.save!
22
- request.redirect("index.sx")
23
- end
24
- end
25
-
26
- # Delete an article
27
- #
28
- def del_article(request)
29
- if oid = request["del_article_oid"]
30
- N::Article.delete(oid)
31
- end
32
- end
33
-
34
- # Add a comment
35
- #
36
- def add_comment(request)
37
- if pid = request["add_comment_pid"]
38
- comment = N::Comment.new
39
- comment.article = pid
40
- request.update_entity(comment)
41
- comment.save!
42
- end
43
- end
44
-
45
- # Delete a comment
46
- #
47
- def del_comment(request)
48
- if oid = request["del_comment_oid"]
49
- N::Comment.delete(oid)
50
- end
51
- end
52
-
53
- end
54
-
55
- end # module
@@ -1,57 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: part.rb 118 2004-11-01 10:13:42Z gmosx $
6
-
7
- require "articles/lc-en"
8
- require "articles/entities"
9
- require "articles/methods"
10
-
11
- module P
12
-
13
- # = Articles
14
- #
15
- # A simple articles part.
16
- #
17
- class Articles < N::Part
18
- extend P::ArticlesMethods
19
-
20
- #
21
- #
22
- def initialize
23
- @name = "articles"
24
- @title = "Articles"
25
- @body = "Simple articles management"
26
- @version = "$Id: part.rb 118 2004-11-01 10:13:42Z gmosx $"
27
- @path = ""
28
- super
29
- end
30
-
31
- # Updates the sitemap by attaching site specific nodes.
32
- #
33
- def sitemap
34
- n1 = N::SitePage.new "#@path/index.sx", "Articles"
35
- n2 = N::SitePage.new "#@path/add-article.sx", "Add", n1
36
- n2 = N::SitePage.new "#@path/view-article.sx", "View", n1
37
- end
38
-
39
- #
40
- #
41
- def rewrites
42
- $rewrites["articles"] = {
43
- /\/articles\/(.*?)\/index.sx/ => '/view-article.sx?oid=\1'
44
- }
45
- end
46
-
47
- #
48
- #
49
- def roles
50
- $roles.concat %w{articles.moderator}
51
- end
52
-
53
- end
54
-
55
- end # module
56
-
57
- a = P::Articles.instance
@@ -1,15 +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
-
8
- <x:page>
9
-
10
- <!-- include the form at compile time -->
11
- <?include xl:href="article-form.ss" ?>
12
-
13
- </x:page>
14
-
15
- </root>
@@ -1,20 +0,0 @@
1
- <?r
2
- # methods:
3
- P::Articles.add_article(request)
4
- ?>
5
-
6
- <form id="add_article" method="post">
7
- <input type="hidden" name="add_article" value="*" />
8
-
9
- <p>
10
- <label for="title">|:title|</label><br />
11
- <input type="text" name="title" style="width: 250px" />
12
- </p>
13
- <p>
14
- <label for="body">|:body|</label><br />
15
- <textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
16
- </p>
17
-
18
- <input type="submit" value="|:store|" />
19
- </form>
20
-
@@ -1,16 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <!-- the <?xml declaration is optional, but lets be strict. -->
4
-
5
- <form id="comments_form" method="post">
6
- <input type="hidden" name="add_comment_pid" value="#{request[:comments_parent].oid}" />
7
- <input type="hidden" name="oid" value="#{request[:comments_parent].oid}" />
8
-
9
- <p>
10
- <!-- the |:...| construct is a localization macro. -->
11
- <label for="body">|:body|</label><br />
12
- <textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
13
- </p>
14
-
15
- <input type="submit" value="|:store|" />
16
- </form>
@@ -1,30 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <!-- the <?xml declaration is optional, but lets be strict. -->
4
-
5
- <p>
6
-
7
- <?r
8
- # methods:
9
- P::Articles.add_comment(request)
10
- P::Articles.del_comment(request)
11
-
12
- parent = request[:comments_parent]
13
- comments = parent.comments
14
- ?>
15
-
16
- <?r if comments ?>
17
- <ul>
18
- <?r for comment in comments ?>
19
- <li>
20
- <b>#{N::TimeUtils.date_time(comment.create_time)}:</b> #{comment.body}
21
- [<a href="@?del_comment_oid=#{comment.oid}">del</a>]
22
- </li>
23
- <?r end ?>
24
- </ul>
25
- <?r end ?>
26
-
27
- <!-- include at compile time (static include) -->
28
- <?include xl:href="comments-form.ss" ?>
29
-
30
- </p>