nitro 0.20.0 → 0.21.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 (115) hide show
  1. data/CHANGELOG +752 -543
  2. data/INSTALL +38 -38
  3. data/README +264 -225
  4. data/Rakefile +48 -49
  5. data/bin/nitro +3 -3
  6. data/bin/nitrogen +6 -6
  7. data/doc/AUTHORS +10 -10
  8. data/doc/CHANGELOG.1 +1939 -1939
  9. data/doc/CHANGELOG.2 +954 -954
  10. data/doc/LICENSE +3 -3
  11. data/doc/MIGRATION +28 -0
  12. data/doc/RELEASES +814 -643
  13. data/doc/config.txt +5 -5
  14. data/install.rb +7 -17
  15. data/lib/nitro.rb +38 -9
  16. data/lib/nitro/adapter/cgi.rb +311 -312
  17. data/lib/nitro/adapter/fastcgi.rb +18 -25
  18. data/lib/nitro/adapter/webrick.rb +128 -137
  19. data/lib/nitro/adapter/wee.rb +51 -0
  20. data/lib/nitro/caching.rb +20 -20
  21. data/lib/nitro/caching/actions.rb +43 -43
  22. data/lib/nitro/caching/fragments.rb +46 -46
  23. data/lib/nitro/caching/invalidation.rb +11 -11
  24. data/lib/nitro/caching/output.rb +65 -65
  25. data/lib/nitro/caching/stores.rb +67 -67
  26. data/lib/nitro/compiler.rb +262 -0
  27. data/lib/nitro/compiler/elements.rb +0 -0
  28. data/lib/nitro/compiler/errors.rb +65 -0
  29. data/lib/nitro/compiler/localization.rb +25 -0
  30. data/lib/nitro/compiler/markup.rb +19 -0
  31. data/lib/nitro/compiler/shaders.rb +206 -0
  32. data/lib/nitro/compiler/squeeze.rb +20 -0
  33. data/lib/nitro/compiler/xslt.rb +61 -0
  34. data/lib/nitro/context.rb +87 -88
  35. data/lib/nitro/controller.rb +151 -158
  36. data/lib/nitro/cookie.rb +34 -34
  37. data/lib/nitro/dispatcher.rb +195 -186
  38. data/lib/nitro/element.rb +132 -126
  39. data/lib/nitro/element/java_script.rb +6 -6
  40. data/lib/nitro/flash.rb +66 -66
  41. data/lib/nitro/mail.rb +192 -192
  42. data/lib/nitro/mixin/buffer.rb +66 -0
  43. data/lib/nitro/mixin/debug.rb +16 -16
  44. data/lib/nitro/mixin/form.rb +88 -0
  45. data/lib/nitro/mixin/helper.rb +2 -2
  46. data/lib/nitro/mixin/javascript.rb +108 -108
  47. data/lib/nitro/mixin/markup.rb +144 -0
  48. data/lib/nitro/mixin/pager.rb +202 -202
  49. data/lib/nitro/mixin/rss.rb +67 -0
  50. data/lib/nitro/mixin/table.rb +63 -0
  51. data/lib/nitro/mixin/xhtml.rb +75 -0
  52. data/lib/nitro/mixin/xml.rb +124 -0
  53. data/lib/nitro/render.rb +183 -359
  54. data/lib/nitro/request.rb +140 -140
  55. data/lib/nitro/response.rb +27 -27
  56. data/lib/nitro/routing.rb +21 -21
  57. data/lib/nitro/scaffold.rb +124 -118
  58. data/lib/nitro/server.rb +117 -80
  59. data/lib/nitro/server/runner.rb +341 -0
  60. data/lib/nitro/service.rb +12 -12
  61. data/lib/nitro/service/xmlrpc.rb +22 -22
  62. data/lib/nitro/session.rb +122 -120
  63. data/lib/nitro/session/drb.rb +9 -9
  64. data/lib/nitro/session/drbserver.rb +34 -34
  65. data/lib/nitro/template.rb +171 -155
  66. data/lib/nitro/testing/assertions.rb +90 -90
  67. data/lib/nitro/testing/context.rb +16 -16
  68. data/lib/nitro/testing/testcase.rb +34 -34
  69. data/proto/conf/lhttpd.conf +9 -9
  70. data/proto/public/error.xhtml +75 -75
  71. data/proto/public/index.xhtml +18 -18
  72. data/proto/public/js/behaviour.js +65 -65
  73. data/proto/public/js/controls.js +1 -1
  74. data/proto/public/js/prototype.js +3 -3
  75. data/proto/public/settings.xhtml +61 -61
  76. data/proto/run.rb +1 -5
  77. data/test/nitro/adapter/raw_post1.bin +0 -0
  78. data/test/nitro/adapter/tc_cgi.rb +57 -57
  79. data/test/nitro/adapter/tc_webrick.rb +4 -4
  80. data/test/nitro/mixin/tc_pager.rb +25 -25
  81. data/test/nitro/mixin/tc_rss.rb +24 -0
  82. data/test/nitro/mixin/tc_table.rb +31 -0
  83. data/test/nitro/mixin/tc_xhtml.rb +13 -0
  84. data/test/nitro/tc_caching.rb +10 -10
  85. data/test/nitro/tc_context.rb +8 -8
  86. data/test/nitro/tc_controller.rb +48 -48
  87. data/test/nitro/tc_cookie.rb +6 -6
  88. data/test/nitro/tc_dispatcher.rb +64 -64
  89. data/test/nitro/tc_element.rb +27 -27
  90. data/test/nitro/tc_flash.rb +31 -31
  91. data/test/nitro/tc_mail.rb +63 -63
  92. data/test/nitro/tc_server.rb +26 -26
  93. data/test/nitro/tc_session.rb +9 -9
  94. data/test/nitro/tc_template.rb +19 -19
  95. data/test/public/blog/list.xhtml +1 -1
  96. metadata +31 -37
  97. data/lib/nitro/buffering.rb +0 -45
  98. data/lib/nitro/builder/form.rb +0 -104
  99. data/lib/nitro/builder/rss.rb +0 -104
  100. data/lib/nitro/builder/table.rb +0 -80
  101. data/lib/nitro/builder/xhtml.rb +0 -132
  102. data/lib/nitro/builder/xml.rb +0 -131
  103. data/lib/nitro/conf.rb +0 -36
  104. data/lib/nitro/environment.rb +0 -21
  105. data/lib/nitro/errors.rb +0 -69
  106. data/lib/nitro/localization.rb +0 -153
  107. data/lib/nitro/markup.rb +0 -147
  108. data/lib/nitro/output.rb +0 -24
  109. data/lib/nitro/runner.rb +0 -348
  110. data/lib/nitro/shaders.rb +0 -206
  111. data/test/nitro/builder/tc_rss.rb +0 -23
  112. data/test/nitro/builder/tc_table.rb +0 -30
  113. data/test/nitro/builder/tc_xhtml.rb +0 -39
  114. data/test/nitro/builder/tc_xml.rb +0 -56
  115. data/test/nitro/tc_localization.rb +0 -49
@@ -1,23 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
- require 'nitro/builder/rss'
5
-
6
- class TC_BuildersRss < Test::Unit::TestCase # :nodoc: all
7
- include Nitro
8
-
9
- Blog = Struct.new(:title, :body, :to_href)
10
-
11
- def test_render
12
- blogs = []
13
- blogs << Blog.new('Hello1', 'World1', 'uri1');
14
- blogs << Blog.new('Hello2', 'World2', 'uri2');
15
- blogs << Blog.new('Hello3', 'World3', 'uri3');
16
-
17
- rss = RssBuilder.build(blogs, :link => 'http://www.navel.gr')
18
-
19
- assert_match %r{<link>http://www.navel.gr/uri1</link>}, rss
20
- assert_match %r{<link>http://www.navel.gr/uri2</link>}, rss
21
- end
22
-
23
- end
@@ -1,30 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
- require 'nitro/builder/table'
5
-
6
- class TC_BuildersTable < Test::Unit::TestCase # :nodoc: all
7
- include Nitro
8
-
9
- User = Struct.new(:name, :password, :email)
10
-
11
- def setup
12
- @headers = %w{Name Password Email}
13
- @users = [
14
- User.new('gmosx', 'huh?', 'gm@nowhere.com'),
15
- User.new('renos', 'nah', 'renos@nowhere.com'),
16
- User.new('stella', 'hoh', 'stella@love.com')
17
- ]
18
- end
19
-
20
- def teardown
21
- @users = nil
22
- end
23
-
24
- def test_table
25
- values = @users.collect { |u| [u.name, u.password, u.email] }
26
- table = TableBuilder.build(:id => 'test', :headers => @headers, :values => values)
27
- res = %|<table id="test"><tr><th>Name</th><th>Password</th><th>Email</th></tr><tr><td>gmosx</td><td>huh?</td><td>gm@nowhere.com</td></tr><tr><td>renos</td><td>nah</td><td>renos@nowhere.com</td></tr><tr><td>stella</td><td>hoh</td><td>stella@love.com</td></tr></table>|
28
- assert_equal res, table
29
- end
30
- end
@@ -1,39 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
- require 'nitro/builder/xhtml'
5
-
6
- class TC_BuildersXhtml < Test::Unit::TestCase # :nodoc: all
7
- include Nitro
8
-
9
- def test_options
10
- x = XhtmlString.new
11
- options = ['Male', 'Female']
12
- x.select(:name => 'sex') do
13
- x.options(options, 1)
14
- end
15
- res = '<select name="sex"><option value="0">Male</option>' +
16
- '<option value="1" selected="1">Female</option></select>'
17
- assert_equal res, x
18
-
19
- x = XhtmlString.new
20
- options = ['Male', 'Female']
21
- x.select('-- Select sex --', :name => 'sex') do
22
- x.options(options, 1)
23
- end
24
- res = '<select name="sex"><option>-- Select sex --</option>' +
25
- '<option value="0">Male</option>' +
26
- '<option value="1" selected="1">Female</option></select>'
27
- assert_equal res, x
28
-
29
- x = XhtmlString.new
30
- options = {'Male' => 'm', 'Female' => 'f'}
31
- x.select(:name => 'sex') do
32
- x.options(options, 'm')
33
- end
34
- res = '<select name="sex"><option value="m" selected="1">Male</option>' +
35
- '<option value="f">Female</option></select>'
36
- assert_equal res, x
37
- end
38
-
39
- end
@@ -1,56 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
- require 'nitro/builder/xml'
5
-
6
- class TC_BuildersXml < Test::Unit::TestCase # :nodoc: all
7
- include Nitro
8
-
9
- def test_string
10
- x = XmlString.new
11
-
12
- x.start_tag!('html').
13
- start_tag!('title').text!('hello').end_tag!('title').
14
- end_tag!('html')
15
-
16
- assert_equal '<html><title>hello</title></html>', x
17
- end
18
-
19
- def test_missing
20
- x = XmlString.new
21
- x.b('This is bold')
22
- assert_equal '<b>This is bold</b>', x
23
-
24
- x = XmlString.new
25
- x.a('Navel', :href => 'http://www.navel.gr')
26
- assert_equal '<a href="http://www.navel.gr">Navel</a>', x
27
-
28
-
29
- x = XmlString.new
30
- x.b {
31
- x.i 'Hello', :class =>'new'
32
- x.p 'Paragraph'
33
- }
34
- assert_equal '<b><i class="new">Hello</i><p>Paragraph</p></b>', x
35
-
36
- x = XmlString.new
37
- x.hr
38
- assert_equal '<hr />', x
39
-
40
- x = XmlString.new
41
- x.hr(:style => 'height: 1px')
42
- assert_equal '<hr style="height: 1px" />', x
43
- end
44
-
45
- def test_xml_builder
46
- buffer = ''
47
- x = XmlBuilder.new(buffer)
48
-
49
- x.start_tag!('html').
50
- start_tag!('title').text!('hello').end_tag!('title').
51
- end_tag!('html')
52
-
53
- assert_equal '<html><title>hello</title></html>', buffer
54
- end
55
-
56
- end
@@ -1,49 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2
-
3
- require 'test/unit'
4
- require 'ostruct'
5
-
6
- require 'nitro/localization'
7
-
8
- class TestCaseLocalization < Test::Unit::TestCase # :nodoc: all
9
- include Nitro
10
-
11
- def setup
12
- locale_en = {
13
- 'See you' => 'See you',
14
- :long_paragraph => 'The best new books, up to 30% reduced price',
15
- :price => 'Price: %d %s',
16
- :proc_price => proc { |value, cur| "Price: #{value} #{cur}" }
17
- }
18
-
19
- locale_de = {
20
- 'See you' => 'Auf wieder sehen',
21
- :long_paragraph => 'Die besten neuer buecher, bis zu 30% reduziert',
22
- :price => 'Preis: %d %s',
23
- :proc_price => proc { |value, cur| "Preis: #{value} #{cur}" }
24
- }
25
-
26
- Localization.add(
27
- :en => locale_en,
28
- :de => locale_de
29
- )
30
- end
31
-
32
- def test_all
33
- lc = Localization.get
34
- assert_equal 'See you', lc['See you']
35
- assert_equal 'The best new books, up to 30% reduced price', lc[:long_paragraph]
36
-
37
- lc = Localization.get(:en)
38
- assert_equal 'See you', lc['See you']
39
- assert_equal 'The best new books, up to 30% reduced price', lc[:long_paragraph]
40
- assert_equal 'Price: 100 euro', lc[:price, 100, 'euro']
41
- assert_equal 'Price: 100 euro', lc[:proc_price, 100, 'euro']
42
-
43
- lc = Localization.get(:de)
44
- assert_equal 'Auf wieder sehen', lc['See you']
45
- assert_equal 'Die besten neuer buecher, bis zu 30% reduziert', lc[:long_paragraph]
46
- assert_equal 'Preis: 100 euro', lc.translate(:price, 100, 'euro')
47
- assert_equal 'Preis: 100 euro', lc[:proc_price, 100, 'euro']
48
- end
49
- end