amrita2 2.0.1 → 2.0.2

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 (162) hide show
  1. data/README +5 -5
  2. data/Rakefile +85 -0
  3. data/lib/amrita2/gettext.rb +9 -4
  4. data/lib/amrita2/template.rb +20 -9
  5. data/lib/amrita2/testsupport.rb +25 -0
  6. data/lib/amrita2/version.rb +1 -1
  7. data/sample/depot/README +160 -0
  8. data/sample/depot/Rakefile +10 -0
  9. data/sample/depot/app/views/admin/_form.html.a2 +23 -0
  10. data/sample/depot/app/views/admin/_form.html.erb +14 -0
  11. data/sample/depot/app/views/admin/edit.html.a2 +22 -0
  12. data/sample/depot/app/views/admin/edit.html.erb +10 -0
  13. data/sample/depot/app/views/admin/list.html.a2 +34 -0
  14. data/sample/depot/app/views/admin/list.html.erb +37 -0
  15. data/sample/depot/app/views/admin/new.html.a2 +21 -0
  16. data/sample/depot/app/views/admin/new.html.erb +9 -0
  17. data/sample/depot/app/views/admin/show.html.a2 +12 -0
  18. data/sample/depot/app/views/admin/show.html.erb +13 -0
  19. data/sample/depot/app/views/info/who_bought.rhtml +14 -0
  20. data/sample/depot/app/views/info/who_bought.rxml +8 -0
  21. data/sample/depot/app/views/layouts/admin.a2html +32 -0
  22. data/sample/depot/app/views/layouts/admin.rhtml +40 -0
  23. data/sample/depot/app/views/layouts/store.a2html +37 -0
  24. data/sample/depot/app/views/layouts/store.rhtml +43 -0
  25. data/sample/depot/app/views/login/add_user.rhtml +33 -0
  26. data/sample/depot/app/views/login/index.rhtml +9 -0
  27. data/sample/depot/app/views/login/list_users.rhtml +20 -0
  28. data/sample/depot/app/views/login/login.rhtml +26 -0
  29. data/sample/depot/app/views/store/_cart.html.a2 +18 -0
  30. data/sample/depot/app/views/store/_cart.html.erb +17 -0
  31. data/sample/depot/app/views/store/_cart_item.html.a2 +16 -0
  32. data/sample/depot/app/views/store/_cart_item.html.erb +14 -0
  33. data/sample/depot/app/views/store/add_to_cart.rjs +11 -0
  34. data/sample/depot/app/views/store/checkout.html.a2 +45 -0
  35. data/sample/depot/app/views/store/checkout.html.a2.using_macro +32 -0
  36. data/sample/depot/app/views/store/checkout.html.a2.without_label +37 -0
  37. data/sample/depot/app/views/store/checkout.html.erb +41 -0
  38. data/sample/depot/app/views/store/index.html.a2 +19 -0
  39. data/sample/depot/app/views/store/index.html.erb +22 -0
  40. data/sample/depot/config/database.yml +24 -0
  41. data/sample/depot/db/create_database.sql +14 -0
  42. data/sample/depot/doc/README_FOR_APP +35 -0
  43. data/sample/depot/lib/tasks/db_schema_version.rake +6 -0
  44. data/sample/depot/log/development.log +116 -0
  45. data/sample/depot/log/test.log +347 -0
  46. data/sample/depot/public/404.html +13 -0
  47. data/sample/depot/public/500.html +13 -0
  48. data/sample/depot/public/dispatch.cgi +10 -0
  49. data/sample/depot/public/dispatch.fcgi +24 -0
  50. data/sample/depot/public/favicon.ico +0 -0
  51. data/sample/depot/public/images/auto.jpg +0 -0
  52. data/sample/depot/public/images/logo.png +0 -0
  53. data/sample/depot/public/images/rails.png +0 -0
  54. data/sample/depot/public/images/svn.jpg +0 -0
  55. data/sample/depot/public/images/utc.jpg +0 -0
  56. data/sample/depot/public/index.html +282 -0
  57. data/sample/depot/public/javascripts/application.js +2 -0
  58. data/sample/depot/public/javascripts/controls.js +832 -0
  59. data/sample/depot/public/javascripts/dragdrop.js +942 -0
  60. data/sample/depot/public/javascripts/effects.js +954 -0
  61. data/sample/depot/public/javascripts/prototype.js +2347 -0
  62. data/sample/depot/public/robots.txt +1 -0
  63. data/sample/depot/public/stylesheets/depot.css +227 -0
  64. data/sample/depot/public/stylesheets/scaffold.css +74 -0
  65. data/sample/depot/script/about +3 -0
  66. data/sample/depot/script/breakpointer +3 -0
  67. data/sample/depot/script/console +3 -0
  68. data/sample/depot/script/destroy +3 -0
  69. data/sample/depot/script/generate +3 -0
  70. data/sample/depot/script/performance/benchmarker +3 -0
  71. data/sample/depot/script/performance/profiler +3 -0
  72. data/sample/depot/script/plugin +3 -0
  73. data/sample/depot/script/process/inspector +3 -0
  74. data/sample/depot/script/process/reaper +3 -0
  75. data/sample/depot/script/process/spawner +3 -0
  76. data/sample/depot/script/runner +3 -0
  77. data/sample/depot/script/server +3 -0
  78. data/sample/depot/test/fixtures/line_items.yml +16 -0
  79. data/sample/depot/test/fixtures/orders.yml +4 -0
  80. data/sample/depot/test/fixtures/performance/products.yml +8 -0
  81. data/sample/depot/test/fixtures/products.yml +16 -0
  82. data/sample/depot/test/fixtures/users.yml +7 -0
  83. data/sample/depot/vendor/plugins/will_paginate/LICENSE +18 -0
  84. data/sample/depot/vendor/plugins/will_paginate/README +171 -0
  85. data/sample/depot/vendor/plugins/will_paginate/Rakefile +27 -0
  86. data/sample/depot/vendor/plugins/will_paginate/test/console +9 -0
  87. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/companies.yml +24 -0
  88. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +13 -0
  89. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/projects.yml +7 -0
  90. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/replies.yml +34 -0
  91. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/schema.sql +44 -0
  92. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/topics.yml +30 -0
  93. data/sample/depot/vendor/plugins/will_paginate/test/fixtures/users.yml +35 -0
  94. data/sample/login_engine/README +182 -0
  95. data/sample/login_engine/Rakefile +27 -0
  96. data/sample/login_engine/app/views/layouts/user.a2html +20 -0
  97. data/sample/login_engine/app/views/layouts/user.rhtml +16 -0
  98. data/sample/login_engine/app/views/user/_edit.a2html +16 -0
  99. data/sample/login_engine/app/views/user/_edit.rhtml +11 -0
  100. data/sample/login_engine/app/views/user/_password.a2html +18 -0
  101. data/sample/login_engine/app/views/user/_password.rhtml +9 -0
  102. data/sample/login_engine/app/views/user/change_password.a2html +17 -0
  103. data/sample/login_engine/app/views/user/change_password.rhtml +17 -0
  104. data/sample/login_engine/app/views/user/edit.a2html +22 -0
  105. data/sample/login_engine/app/views/user/edit.rhtml +23 -0
  106. data/sample/login_engine/app/views/user/forgot_password.rhtml +18 -0
  107. data/sample/login_engine/app/views/user/home.a2html +12 -0
  108. data/sample/login_engine/app/views/user/home.rhtml +7 -0
  109. data/sample/login_engine/app/views/user/login.a2html +16 -0
  110. data/sample/login_engine/app/views/user/login.rhtml +17 -0
  111. data/sample/login_engine/app/views/user/logout.rhtml +8 -0
  112. data/sample/login_engine/app/views/user/signup.a2html +14 -0
  113. data/sample/login_engine/app/views/user/signup.rhtml +17 -0
  114. data/sample/login_engine/app/views/user_notify/change_password.rhtml +10 -0
  115. data/sample/login_engine/app/views/user_notify/delete.rhtml +5 -0
  116. data/sample/login_engine/app/views/user_notify/forgot_password.rhtml +11 -0
  117. data/sample/login_engine/app/views/user_notify/pending_delete.rhtml +9 -0
  118. data/sample/login_engine/app/views/user_notify/signup.rhtml +12 -0
  119. data/sample/login_engine/config/database.yml +18 -0
  120. data/sample/login_engine/db/create_database.sql +14 -0
  121. data/sample/login_engine/db/dev.sqlite3 +0 -0
  122. data/sample/login_engine/db/test.sqlite3 +0 -0
  123. data/sample/login_engine/doc/README_FOR_APP +2 -0
  124. data/sample/login_engine/locale/ja/LC_MESSAGES/login_engine.mo +0 -0
  125. data/sample/login_engine/log/development.log +330 -0
  126. data/sample/login_engine/log/test.log +19026 -0
  127. data/sample/login_engine/po/ja/login_engine.po +248 -0
  128. data/sample/login_engine/po/login_engine.pot +245 -0
  129. data/sample/login_engine/public/404.html +30 -0
  130. data/sample/login_engine/public/500.html +30 -0
  131. data/sample/login_engine/public/dispatch.cgi +10 -0
  132. data/sample/login_engine/public/dispatch.fcgi +24 -0
  133. data/sample/login_engine/public/favicon.ico +0 -0
  134. data/sample/login_engine/public/images/rails.png +0 -0
  135. data/sample/login_engine/public/index.html +277 -0
  136. data/sample/login_engine/public/javascripts/application.js +2 -0
  137. data/sample/login_engine/public/javascripts/controls.js +833 -0
  138. data/sample/login_engine/public/javascripts/dragdrop.js +942 -0
  139. data/sample/login_engine/public/javascripts/effects.js +1088 -0
  140. data/sample/login_engine/public/javascripts/prototype.js +2385 -0
  141. data/sample/login_engine/public/robots.txt +1 -0
  142. data/sample/login_engine/public/stylesheets/login_engine.css +81 -0
  143. data/sample/login_engine/script/about +3 -0
  144. data/sample/login_engine/script/breakpointer +3 -0
  145. data/sample/login_engine/script/console +3 -0
  146. data/sample/login_engine/script/destroy +3 -0
  147. data/sample/login_engine/script/generate +3 -0
  148. data/sample/login_engine/script/performance/benchmarker +3 -0
  149. data/sample/login_engine/script/performance/profiler +3 -0
  150. data/sample/login_engine/script/plugin +3 -0
  151. data/sample/login_engine/script/process/inspector +3 -0
  152. data/sample/login_engine/script/process/reaper +3 -0
  153. data/sample/login_engine/script/process/spawner +3 -0
  154. data/sample/login_engine/script/runner +3 -0
  155. data/sample/login_engine/script/server +3 -0
  156. data/sample/login_engine/test/fixtures/users.yml +41 -0
  157. data/specs/erb_cdata.rb +11 -0
  158. data/specs/filters.rb +5 -4
  159. data/specs/gettext/static_text.rb +30 -13
  160. data/specs/impl/preprocess.rb +58 -54
  161. metadata +375 -120
  162. data/sample/hello/test1.rb +0 -23
@@ -0,0 +1 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
@@ -0,0 +1,81 @@
1
+ /*
2
+
3
+ This CSS file is basically the scaffold.css file, and is only
4
+ included here to demonstrate using CSS files with Engines.
5
+
6
+ */
7
+
8
+ body { background-color: #fff; color: #333; }
9
+
10
+ body, p, ol, ul, td {
11
+ font-family: verdana, arial, helvetica, sans-serif;
12
+ font-size: 13px;
13
+ line-height: 18px;
14
+ }
15
+
16
+ pre {
17
+ background-color: #eee;
18
+ padding: 10px;
19
+ font-size: 11px;
20
+ }
21
+
22
+ a { color: #000; }
23
+ a:visited { color: #666; }
24
+ a:hover { color: #fff; background-color:#000; }
25
+
26
+ .fieldWithErrors {
27
+ padding: 2px;
28
+ background-color: red;
29
+ display: table;
30
+ }
31
+
32
+ #ErrorExplanation {
33
+ width: 400px;
34
+ border: 2px solid red;
35
+ padding: 7px;
36
+ padding-bottom: 12px;
37
+ margin-bottom: 20px;
38
+ background-color: #f0f0f0;
39
+ }
40
+
41
+ #ErrorExplanation h2 {
42
+ text-align: left;
43
+ font-weight: bold;
44
+ padding: 5px 5px 5px 15px;
45
+ font-size: 12px;
46
+ margin: -7px;
47
+ background-color: #c00;
48
+ color: #fff;
49
+ }
50
+
51
+ #ErrorExplanation p {
52
+ color: #333;
53
+ margin-bottom: 0;
54
+ padding: 5px;
55
+ }
56
+
57
+ #ErrorExplanation ul li {
58
+ font-size: 12px;
59
+ list-style: square;
60
+ }
61
+
62
+ div.uploadStatus {
63
+ margin: 5px;
64
+ }
65
+
66
+ div.progressBar {
67
+ margin: 5px;
68
+ }
69
+
70
+ div.progressBar div.border {
71
+ background-color: #fff;
72
+ border: 1px solid grey;
73
+ width: 100%;
74
+ }
75
+
76
+ div.progressBar div.background {
77
+ background-color: #333;
78
+ height: 18px;
79
+ width: 0%;
80
+ }
81
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/about'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/breakpointer'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/destroy'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/benchmarker'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/performance/profiler'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/plugin'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/inspector'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/reaper'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../../config/boot'
3
+ require 'commands/process/spawner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/runner'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/server'
@@ -0,0 +1,41 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ bob:
4
+ id: 1000001
5
+ login: bob
6
+ salted_password: b1de1d1d2aec05df2be6f02995537c1783f08490 # atest
7
+ salt: bf3c47e71c0bfeb6288c9b6b5e24e15256a0e407
8
+ email: bob@test.com
9
+ verified: 1
10
+
11
+ existingbob:
12
+ id: 1000002
13
+ login: existingbob
14
+ salted_password: b1de1d1d2aec05df2be6f02995537c1783f08490 # atest
15
+ salt: bf3c47e71c0bfeb6288c9b6b5e24e15256a0e407
16
+ email: existingbob@test.com
17
+ verified: 1
18
+
19
+ longbob:
20
+ id: 1000003
21
+ login: longbob
22
+ salted_password: 53427dca242488e885216a579e362ee888c3ebc1 # alongtest
23
+ salt: d35a9cc89af83799d9a938a74cb06a11d295aa9c
24
+ email: longbob@test.com
25
+ verified: 1
26
+
27
+ deletebob1:
28
+ id: 1000004
29
+ login: deletebob1
30
+ salted_password: 53427dca242488e885216a579e362ee888c3ebc1 # alongtest
31
+ salt: d35a9cc89af83799d9a938a74cb06a11d295aa9c
32
+ email: deletebob1@test.com
33
+ verified: 1
34
+
35
+ deletebob2:
36
+ id: 1000005
37
+ login: deletebob2
38
+ salted_password: 53427dca242488e885216a579e362ee888c3ebc1 # alongtest
39
+ salt: d35a9cc89af83799d9a938a74cb06a11d295aa9c
40
+ email: deletebob2@test.com
41
+ verified: 1
@@ -185,3 +185,14 @@ context "amxml cdata_erb block(keep cdata)" do
185
185
  end
186
186
  end
187
187
  end
188
+
189
+ context "erb in amxml " do
190
+ include Amrita2::Runtime
191
+ specify " " do
192
+ text = "<<p %= 1+2 >>"
193
+ t = Amrita2::Template.new(text, :inline_ruby)
194
+ t.test_with(binding) do |result|
195
+ result.should == "<p>3</p>"
196
+ end
197
+ end
198
+ end
@@ -2,6 +2,7 @@
2
2
  require 'rexml/document'
3
3
  require 'amrita2'
4
4
  require 'amrita2/testsupport'
5
+ require 'time'
5
6
 
6
7
  include Amrita2
7
8
  include Amrita2::Runtime
@@ -13,7 +14,7 @@ context "Repeat Filter" do
13
14
 
14
15
  specify "with string" do
15
16
  #t = Amrita2::Template.new('<div><span am:src="aaa|Repeat[5]" /></div>')
16
-
17
+
17
18
  t = Amrita2::Template.new('<div><<:aaa | Repeat[5] >></div>')
18
19
  t.render_with(:aaa => "A").should_be_samexml_as '<div>AAAAA</div>'
19
20
  end
@@ -27,7 +28,7 @@ context "Default Filter" do
27
28
  specify "with not nil data" do
28
29
  begin
29
30
  #t = Amrita2::Template.new('<div><span am:src="aaa|Default[123]">aaa</span></div>')
30
-
31
+
31
32
  t = Amrita2::Template.new('<div><<:aaa | Default[123] >></div>')
32
33
  t.test_with(:aaa => "xyz") do |result|
33
34
  result.should_be_samexml_as '<div>xyz</div>'
@@ -82,7 +83,7 @@ context "Format Filter" do
82
83
 
83
84
  specify "Integer" do
84
85
  #t = Amrita2::Template.new(%q[<span><span am:src="aaa|Format['(%s)']">aaa</span></span>])
85
-
86
+
86
87
  t = Amrita2::Template.new(%q[<span><<:aaa | Format['(%s)']>></span>])
87
88
  t.test_with(:aaa => 123) do |result|
88
89
  result.should_be_samexml_as '(123)'
@@ -499,7 +500,7 @@ context "ToHash Filter" do
499
500
 
500
501
  t.render_with(:a => "A").should_be_samexml_as 'A'
501
502
  end
502
-
503
+
503
504
  specify "many keys" do
504
505
  t = Amrita2::Template.new <<-END
505
506
  <<:time | ToHash[:h=>:hour, :m=>:min, :s=>:sec] <
@@ -22,15 +22,15 @@ context "gettext static element" do
22
22
  Locale.set_current("ja", "JP", "utf8")
23
23
  test_gettext("test1",
24
24
  TEMPFILE,
25
- "<span>test message</span>",
25
+ "<span>test message</span>",
26
26
  [
27
27
  %r[#: /tmp/test.a2html:-],
28
28
  %r[msgid "test message"],
29
29
  ],
30
- {},
30
+ {},
31
31
  "テストメッセージ"
32
32
  ) do |l|
33
- l.sub!(%r[msgid "test message"\nmsgstr ""]m,
33
+ l.sub!(%r[msgid "test message"\nmsgstr ""]m,
34
34
  %[msgid "test message"\nmsgstr "テストメッセージ"])
35
35
  l
36
36
  end
@@ -40,15 +40,15 @@ context "gettext static element" do
40
40
  Locale.set_current("ja", "JP", "utf8")
41
41
  test_gettext("test1",
42
42
  TEMPFILE,
43
- "<span> test message </span>",
43
+ "<span> test message </span>",
44
44
  [
45
45
  %r[#: /tmp/test.a2html:-],
46
46
  %r[msgid "test message"],
47
47
  ],
48
- {},
48
+ {},
49
49
  "テストメッセージ"
50
50
  ) do |l|
51
- l.sub!(%r[msgid "test message"\nmsgstr ""]m,
51
+ l.sub!(%r[msgid "test message"\nmsgstr ""]m,
52
52
  %[msgid "test message"\nmsgstr "テストメッセージ"])
53
53
  l
54
54
  end
@@ -57,23 +57,40 @@ context "gettext static element" do
57
57
  specify "two messages" do
58
58
  test_gettext("test3",
59
59
  TEMPFILE,
60
- "<div><span> test message1 </span><span>test message2</span></div>",
60
+ "<div><span> test message1 </span><span>test message2</span></div>",
61
61
  [
62
62
  %r[#: /tmp/test.a2html:-],
63
63
  %r[msgid "test message1"],
64
64
  %r[msgid "test message2"],
65
65
  ],
66
- {},
66
+ {},
67
67
  "<div>あああいいい</div>"
68
68
  ) do |l|
69
- l.sub!(%r[msgid "test message1"\nmsgstr ""]m,
69
+ l.sub!(%r[msgid "test message1"\nmsgstr ""]m,
70
70
  %[msgid "test message1"\nmsgstr "あああ"])
71
- l.sub!(%r[msgid "test message2"\nmsgstr ""]m,
71
+ l.sub!(%r[msgid "test message2"\nmsgstr ""]m,
72
72
  %[msgid "test message2"\nmsgstr "いいい"])
73
73
  l
74
74
  end
75
75
  end
76
76
 
77
+ specify "text with html comment" do
78
+ Locale.set_current("ja", "JP", "utf8")
79
+ test_gettext("test1",
80
+ TEMPFILE,
81
+ "<!-- comment --><span>test message</span>",
82
+ [
83
+ %r[#: /tmp/test.a2html:-],
84
+ %r[msgid "test message"],
85
+ ],
86
+ {},
87
+ "<!-- comment -->\nテストメッセージ"
88
+ ) do |l|
89
+ l.sub!(%r[msgid "test message"\nmsgstr ""]m,
90
+ %[msgid "test message"\nmsgstr "テストメッセージ"])
91
+ l
92
+ end
93
+ end
77
94
  end
78
95
 
79
96
  context "format with gettext" do
@@ -84,18 +101,18 @@ context "format with gettext" do
84
101
  test_gettext(
85
102
  "format1",
86
103
  TEMPFILE,
87
- "<span>%{filename} is %{filesize} byte</span>",
104
+ "<span>%{filename} is %{filesize} byte</span>",
88
105
  [
89
106
  %r[#: #{TEMPFILE}:-],
90
107
  %r[msgid "%\{filename\} is %\{filesize\} byte"],
91
108
  ],
92
109
  {
93
- :filename => "foo.rb",
110
+ :filename => "foo.rb",
94
111
  :filesize => 100
95
112
  },
96
113
  "foo.rbの大きさは100バイトです"
97
114
  ) do |l|
98
- l.sub!(%r[msgid "%\{filename\} is %\{filesize\} byte"\nmsgstr ""]m,
115
+ l.sub!(%r[msgid "%\{filename\} is %\{filesize\} byte"\nmsgstr ""]m,
99
116
  %[msgid "%\{filename\} is %\{filesize\} byte"\nmsgstr "%{filename}の大きさは%{filesize}バイトです"])
100
117
  l
101
118
  end
@@ -1,11 +1,9 @@
1
-
2
- require 'rexml/element'
3
1
  require 'amrita2'
4
2
  require 'amrita2/testsupport'
5
3
 
6
4
  context "amxml parser" do
7
5
  include Amrita2
8
-
6
+
9
7
  it "tag only" do
10
8
  amxml = Amrita2::Core::PreProcessor::AmXml
11
9
  a = amxml.parse(%[a])
@@ -13,26 +11,26 @@ context "amxml parser" do
13
11
  a.attr.should == ""
14
12
  a.should_not be_has_amxml_attrs
15
13
  end
16
-
14
+
17
15
  specify "tag with namespace only" do
18
16
  amxml = Amrita2::Core::PreProcessor::AmXml
19
17
  a = amxml.parse(%[xx:a/])
20
18
  a.tag.should == "xx:a"
21
19
  a.attr.should == ""
22
20
  a.should_not be_has_amxml_attrs
23
-
21
+
24
22
  a = amxml.parse(%[xx:a])
25
23
  a.tag.should == "xx"
26
24
  a.attr.should == ""
27
25
  a.should be_has_amxml_attrs
28
26
  a.src_name.should == "a"
29
-
27
+
30
28
  a = amxml.parse(%[xx:a b="c"])
31
29
  a.tag.should == "xx:a"
32
30
  a.attr.should == ' b="c"'
33
31
  a.should_not be_has_amxml_attrs
34
32
  end
35
-
33
+
36
34
  specify "tag and attrs" do
37
35
  amxml = Amrita2::Core::PreProcessor::AmXml
38
36
  a = amxml.parse(%[a href="http://amrita2.rubyforge.org/"])
@@ -59,7 +57,7 @@ context "amxml parser" do
59
57
  a.attr.should == %[ y:href='http://amrita2.rubyforge.org/' zz:class="xxx"]
60
58
  a.should_not be_has_amxml_attrs
61
59
  end
62
-
60
+
63
61
  specify "src" do
64
62
  amxml = Amrita2::Core::PreProcessor::AmXml
65
63
  a = amxml.parse(%[:xxx])
@@ -67,14 +65,14 @@ context "amxml parser" do
67
65
  a.attr.should == ""
68
66
  a.should be_has_amxml_attrs
69
67
  a.src_name.should == "xxx"
70
-
68
+
71
69
  a = amxml.parse(%[a:xxx])
72
70
  a.tag.should == "a"
73
71
  a.attr.should == ""
74
72
  a.should be_has_amxml_attrs
75
73
  a.src_name.should == "xxx"
76
74
  end
77
-
75
+
78
76
  specify "src and filters" do
79
77
  amxml = Amrita2::Core::PreProcessor::AmXml
80
78
  a = amxml.parse(%[a:xxx|Attr])
@@ -83,7 +81,7 @@ context "amxml parser" do
83
81
  a.should be_has_amxml_attrs
84
82
  a.src_name.should == "xxx"
85
83
  a.filters.should == "Attr"
86
-
84
+
87
85
  a = amxml.parse(%[a:xxx| \n Attr])
88
86
  a.tag.should == "a"
89
87
  a.attr.should == ""
@@ -91,7 +89,7 @@ context "amxml parser" do
91
89
  a.src_name.should == "xxx"
92
90
  a.filters.should == "Attr"
93
91
  end
94
-
92
+
95
93
  specify "loop" do
96
94
  amxml = Amrita2::Core::PreProcessor::AmXml
97
95
  a = amxml.parse(%[ [1..5] ])
@@ -110,7 +108,7 @@ context "amxml parser" do
110
108
  a.filters.should == nil
111
109
  a.for.should == %[1..5]
112
110
  end
113
-
111
+
114
112
  specify "cond" do
115
113
  amxml = Amrita2::Core::PreProcessor::AmXml
116
114
  '?![a == 1]'.should match(%r[#{ amxml::S_AMVARS}])
@@ -121,7 +119,7 @@ context "amxml parser" do
121
119
  a.src_name.should == nil
122
120
  a.filters.should == nil
123
121
  a.skipif.should == "a == 1"
124
-
122
+
125
123
  a = amxml.parse(%[a ?[ b == 1 ] ])
126
124
  a.tag.should == "a"
127
125
  a.attr.should == ""
@@ -131,7 +129,7 @@ context "amxml parser" do
131
129
  a.skipif.should == nil
132
130
  a.skipunless.should == "b == 1"
133
131
  end
134
-
132
+
135
133
  specify "value" do
136
134
  amxml = Amrita2::Core::PreProcessor::AmXml
137
135
  a = amxml.parse(%[a { :xxx=>1 }])
@@ -176,7 +174,7 @@ context "preprocessor" do
176
174
  $3.should == "bbb"
177
175
  end
178
176
 
179
- specify "check regexp"do
177
+ specify "check regexp"do
180
178
  tag = %r[\w*]
181
179
  attr = %r[(?:\s*\w+=(?:".*?"|'.*?'))*] #"
182
180
  src_start = %r[(?::| \[|\?\[|\{)]
@@ -208,7 +206,7 @@ context "preprocessor" do
208
206
  ret = p.process("aaa<![CDATA[bbb]]>cccAAA<![CDATA[BBB]]>CCC")
209
207
  ret.should == "aaa<![CDATA[bbb]]>cccAAA<![CDATA[BBB]]>CCC"
210
208
  end
211
-
209
+
212
210
  specify "replace <% %>" do
213
211
  p = Amrita2::Core::PreProcessor.new
214
212
  ret = p.process("<%aaa%>")
@@ -216,7 +214,7 @@ context "preprocessor" do
216
214
  ret = p.process("a<%b%>c<%d%>e")
217
215
  ret.should == "a<![CDATA[<%b%>]]>c<![CDATA[<%d%>]]>e"
218
216
  end
219
-
217
+
220
218
  specify "replace <%= %>" do
221
219
  p = Amrita2::Core::PreProcessor.new
222
220
  ret = p.process("<%=aaa%>")
@@ -224,14 +222,14 @@ context "preprocessor" do
224
222
  ret = p.process("a<%b%>c<%=d%>e")
225
223
  ret.should == "a<![CDATA[<%b%>]]>c<![CDATA[<%=d%>]]>e"
226
224
  end
227
-
225
+
228
226
  specify "don't replace <%= %> in cdata" do
229
227
  p = Amrita2::Core::PreProcessor.new
230
228
  ret = p.process("<![CDATA[<%=aaa%>]]>")
231
229
  ret.should == "<![CDATA[<%=aaa%>]]>"
232
230
  ret = p.process("a<%=b%>c<![CDATA[<%d%>]]>e")
233
231
  ret.should == "a<![CDATA[<%=b%>]]>c<![CDATA[<%d%>]]>e"
234
-
232
+
235
233
  s = <<-END
236
234
  <![CDATA[
237
235
  <% a = 1 %>
@@ -240,7 +238,7 @@ context "preprocessor" do
240
238
  END
241
239
  p.process(s).should == s
242
240
  end
243
-
241
+
244
242
  specify "not replace <%= %> in cdata in real" do
245
243
  text = <<-'END'
246
244
  <ul>
@@ -259,21 +257,21 @@ context "preprocessor" do
259
257
 
260
258
  text.should == ret
261
259
  end
262
-
260
+
263
261
  specify "section" do
264
262
  pp = Amrita2::Core::PreProcessor.new
265
263
  ret = pp.process("aaa<%(Section1)xxx%>bbb")
266
264
  ret.should == "aaabbb"
267
265
  pp.sections[:Section1].should == "xxx"
268
266
  end
269
-
267
+
270
268
  specify "section and cdata" do
271
269
  pp = Amrita2::Core::PreProcessor.new
272
270
  ret = pp.process("aaa<%(Section1)xxx%>bbb<%ccc%>ddd")
273
271
  ret.should == "aaabbb<![CDATA[<%ccc%>]]>ddd"
274
272
  pp.sections[:Section1].should == "xxx"
275
273
  end
276
-
274
+
277
275
  specify "two sections and cdata" do
278
276
  pp = Amrita2::Core::PreProcessor.new
279
277
  ret = pp.process("aaa<%(Section1)xxx%>bbb<%ccc%>ddd<%(Section2)yyy%>eee")
@@ -281,7 +279,7 @@ context "preprocessor" do
281
279
  pp.sections[:Section1].should == "xxx"
282
280
  pp.sections[:Section2].should == "yyy"
283
281
  end
284
-
282
+
285
283
  specify "two sections and cdata with nest" do
286
284
  pp = Amrita2::Core::PreProcessor.new
287
285
  ret = pp.process("aaa<%(Section1)<%=1%>xxx%>bbb<%%<%=2%>ccc%>ddd<%(Section2)<%=3%>yyy%>eee")
@@ -289,7 +287,7 @@ context "preprocessor" do
289
287
  pp.sections[:Section1].should == "<%=1%>xxx"
290
288
  pp.sections[:Section2].should == "<%=3%>yyy"
291
289
  end
292
-
290
+
293
291
  specify "nbsp" do
294
292
  pp = Amrita2::Core::PreProcessor.new
295
293
  ret = pp.process("&nbsp; &amp;")
@@ -300,11 +298,11 @@ end
300
298
 
301
299
  context "amxml inline" do
302
300
  include Amrita2
303
-
301
+
304
302
  specify "inline" do
305
303
  p = Amrita2::Core::PreProcessor.new
306
304
  ret = p.process("<<a>>") #"
307
- ret.should == "<a />"
305
+ ret.should == "<a />"
308
306
  ret = p.process("<<a:xxx>>")
309
307
  ret.should == "<a am:src='xxx' />"
310
308
  ret = p.process("<<p class='text':aaa>>")
@@ -317,21 +315,21 @@ context "amxml inline" do
317
315
  p.process("<<h3:title>>").should == "<h3 am:src='title' />"
318
316
  p.process("<<h3 class='title':title>>").should == "<h3 am:src='title' class='title' />"
319
317
  end
320
-
318
+
321
319
  specify "inline skipif" do
322
320
  p = Amrita2::Core::PreProcessor.new
323
- ret = p.process("<<a ?[a == 1]>>")
321
+ ret = p.process("<<a ?[a == 1]>>")
324
322
  ret.should == "<a am:skipif='not(a == 1)' />"
325
- ret = p.process("<<a ?![a == 1]>>")
323
+ ret = p.process("<<a ?![a == 1]>>")
326
324
  ret.should == "<a am:skipif='a == 1' />"
327
325
  end
328
-
326
+
329
327
  specify "inline anonymous tag" do
330
328
  p = Amrita2::Core::PreProcessor.new
331
329
  ret = p.process("<<:xxx>>")
332
330
  ret.should == "<_ am:src='xxx' />"
333
331
  end
334
-
332
+
335
333
  specify "inline filter" do
336
334
  r = %r[#{Amrita2::Core::PreProcessor::AmXml::S_SRC_AND_FILTERS }]
337
335
  ":a|A|B".should match(r)
@@ -347,15 +345,15 @@ context "amxml inline" do
347
345
 
348
346
  ret = p.process(%[<<a:|Attr[:href=>:url, :body=>:description]>>])
349
347
  ret.should == %[<a am:filter='Attr[:href=>:url, :body=>:description]' />]
350
-
348
+
351
349
  ret = p.process(%[<<:|Each[:class=>[:odd, :even]]|Attr[:class,:body=>:no]>>])
352
350
  ret.should == %[<_ am:filter='Each[:class=>[:odd, :even]]|Attr[:class,:body=>:no]' />]
353
351
  ret = p.process(%[<<:|Each[:class=>[:odd, :even]]|\nAttr[:class,:body=>:no]>>])
354
352
  ret.should == %[<_ am:filter='Each[:class=>[:odd, :even]]|\nAttr[:class,:body=>:no]' />]
355
353
  ret = p.process(%[<<a:website\|Attr>>])
356
354
  ret.should == %[<a am:src='website|Attr' />]
357
- end
358
-
355
+ end
356
+
359
357
  specify "css selecter like" do
360
358
  p = Amrita2::Core::PreProcessor.new
361
359
 
@@ -372,24 +370,30 @@ context "amxml inline" do
372
370
  ret = p.process("<<div.cart-title>>")
373
371
  ret.should == '<div class="cart-title" />'
374
372
  end
373
+ specify "css selecter like" do
374
+ p = Amrita2::Core::PreProcessor.new
375
+
376
+ ret = p.process("<<p %= 1+2 >>")
377
+ ret.should == '<p><![CDATA[<%= 1+2 %>]]></p>'
378
+ end
375
379
  end
376
380
 
377
381
  context "amxml block" do
378
382
  include Amrita2
379
-
383
+
380
384
  specify "simple" do
381
385
 
382
386
  p = Amrita2::Core::PreProcessor.new
383
387
  p.process(<<-END).should_be_samexml_as("<_ am:src='title' /> ")
384
388
  <<:title>>
385
389
  END
386
-
390
+
387
391
  p = Amrita2::Core::PreProcessor.new
388
392
  p.process(<<-END).should_be_samexml_as("<html>test</html>")
389
393
  <<html<
390
394
  test
391
395
  END
392
-
396
+
393
397
  p = Amrita2::Core::PreProcessor.new
394
398
  p.process(<<-END).should_be_samexml_as('<div class="cart-title">test</div>')
395
399
  <<div.cart-title<
@@ -497,7 +501,7 @@ context "amxml block" do
497
501
  :style => @cart.items.empty? ? "display: none" : nil
498
502
  } <
499
503
  %= render(:partial => "cart", :object => @cart)
500
-
504
+
501
505
  END
502
506
  <div am:v='HashDelegator.new($_) { {:style => @cart.items.empty? ? "display: none" : nil} }' id="cart">
503
507
  <![CDATA[<%
@@ -512,7 +516,7 @@ END
512
516
 
513
517
  p.process(<<-END).should_be_samexml_as(<<-END)
514
518
  <<table<
515
- <<tr:clients
519
+ <<tr:clients
516
520
  |NVar[:surname, :firstname, :email]<
517
521
  <td>$1, $2</td>
518
522
  <td><a href="mailto:$3">$3</a></td>
@@ -558,16 +562,16 @@ END
558
562
  END
559
563
 
560
564
  a = p.process(<<-END)
561
- <<
562
- [1..5] <
565
+ <<
566
+ [1..5] <
563
567
  <<?[ ($_%2) == 0
564
-
568
+
565
569
  ] <
566
570
  << {
567
571
  :no => $_,
568
572
  :square=> $_*$_
569
573
  } <
570
-
574
+
571
575
  <<li<
572
576
  <<:no>> * <<:no>> = <<:square>>
573
577
  END
@@ -585,25 +589,25 @@ end
585
589
 
586
590
  context "amxml erb" do
587
591
  include Amrita2
588
-
592
+
589
593
  specify "simple" do
590
594
  p = Amrita2::Core::PreProcessor.new
591
595
 
592
- p.process(<<-END).should == (<<-END).strip
596
+ p.process(<<-END).gsub("% ", '%').should == (<<-END).strip
593
597
  <<div<
594
598
  % a = 1
595
599
  END
596
- <div ><![CDATA[<%
600
+ <div ><![CDATA[<%
597
601
  a = 1
598
602
  %>]]>
599
603
  </div>
600
604
  END
601
- p.process(<<-END).should == (<<-END).strip
605
+ p.process(<<-END).gsub("% ", '%').gsub(" \n", "\n").should == (<<-END).strip
602
606
  <<div<
603
607
  %= a + 1
604
608
  END
605
- <div ><![CDATA[<%
606
- _erbout.concat(eval(%{ a + 1}).to_s)
609
+ <div ><![CDATA[<%
610
+ _erbout.concat(eval(%{ a + 1}).to_s)
607
611
  %>]]>
608
612
  </div>
609
613
  END
@@ -611,12 +615,12 @@ a = 1
611
615
  p.process(<<-END).should_be_samexml_as(<<-END)
612
616
  <<div<
613
617
  % form_remote_tag :url => { :action => :add_to_cart, :id => $_ } do
614
- %= submit_tag "Add to Cart"
618
+ %= submit_tag "Add to Cart"
615
619
  % end
616
620
  END
617
621
  <div>
618
622
  <% form_remote_tag :url => { :action => :add_to_cart, :id => $_ } do
619
- _erbout.concat(eval(%{ submit_tag "Add to Cart" }).to_s)
623
+ _erbout.concat(eval(%{ submit_tag "Add to Cart"}).to_s)
620
624
  end %>
621
625
  </div>
622
626
  END
@@ -625,7 +629,7 @@ end
625
629
 
626
630
  context "cell processor" do
627
631
  include Amrita2
628
-
632
+
629
633
  specify "not cell" do
630
634
  l = Amrita2::Core::PreProcessor::LineProcessor.new do |s|
631
635
  s