amrita2 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,227 @@
1
+ /* Global styles */
2
+
3
+ /* START:notice */
4
+ #notice {
5
+ border: 2px solid red;
6
+ padding: 1em;
7
+ margin-bottom: 2em;
8
+ background-color: #f0f0f0;
9
+ font: bold smaller sans-serif;
10
+ }
11
+ /* END:notice */
12
+
13
+ /* Styles for admin/list */
14
+
15
+ #product-list .list-title {
16
+ color: #244;
17
+ font-weight: bold;
18
+ font-size: larger;
19
+ }
20
+
21
+ #product-list .list-image {
22
+ width: 60px;
23
+ height: 70px;
24
+ }
25
+
26
+
27
+ #product-list .list-actions {
28
+ font-size: x-small;
29
+ text-align: right;
30
+ padding-left: 1em;
31
+ }
32
+
33
+ #product-list .list-line-even {
34
+ background: #e0f8f8;
35
+ }
36
+
37
+ #product-list .list-line-odd {
38
+ background: #f8b0f8;
39
+ }
40
+
41
+
42
+ /* Styles for main page */
43
+
44
+ #banner {
45
+ background: #9c9;
46
+ padding-top: 10px;
47
+ padding-bottom: 10px;
48
+ border-bottom: 2px solid;
49
+ font: small-caps 40px/40px "Times New Roman", serif;
50
+ color: #282;
51
+ text-align: center;
52
+ }
53
+
54
+ #banner img {
55
+ float: left;
56
+ }
57
+
58
+ #columns {
59
+ background: #141;
60
+ }
61
+
62
+ #main {
63
+ margin-left: 15em;
64
+ padding-top: 4ex;
65
+ padding-left: 2em;
66
+ background: white;
67
+ }
68
+
69
+ #side {
70
+ float: left;
71
+ padding-top: 1em;
72
+ padding-left: 1em;
73
+ padding-bottom: 1em;
74
+ width: 14em;
75
+ background: #141;
76
+ }
77
+
78
+ #side a {
79
+ color: #bfb;
80
+ font-size: small;
81
+ }
82
+
83
+ h1 {
84
+ font: 150% sans-serif;
85
+ color: #226;
86
+ border-bottom: 3px dotted #77d;
87
+ }
88
+
89
+ /* An entry in the store catalog */
90
+
91
+ #store .entry {
92
+ border-bottom: 1px dotted #77d;
93
+ }
94
+
95
+ #store .title {
96
+ font-size: 120%;
97
+ font-family: sans-serif;
98
+ }
99
+
100
+ #store .entry img {
101
+ width: 75px;
102
+ float: left;
103
+ }
104
+
105
+
106
+ #store .entry h3 {
107
+ margin-bottom: 2px;
108
+ color: #227;
109
+ }
110
+
111
+ #store .entry p {
112
+ margin-top: 0px;
113
+ margin-bottom: 0.8em;
114
+ }
115
+
116
+ #store .entry .price-line {
117
+ }
118
+
119
+ #store .entry .add-to-cart {
120
+ position: relative;
121
+ }
122
+
123
+ #store .entry .price {
124
+ color: #44a;
125
+ font-weight: bold;
126
+ margin-right: 2em;
127
+ }
128
+
129
+ /* START:inline */
130
+ #store .entry form, #store .entry form div {
131
+ display: inline;
132
+ }
133
+ /* END:inline */
134
+
135
+ /* START:cart */
136
+ /* Styles for the cart in the main page and the sidebar */
137
+
138
+ .cart-title {
139
+ font: 120% bold;
140
+ }
141
+
142
+ .item-price, .total-line {
143
+ text-align: right;
144
+ }
145
+
146
+ .total-line .total-cell {
147
+ font-weight: bold;
148
+ border-top: 1px solid #595;
149
+ }
150
+
151
+
152
+ /* Styles for the cart in the sidebar */
153
+
154
+ #cart, #cart table {
155
+ font-size: smaller;
156
+ color: white;
157
+ }
158
+
159
+ #cart table {
160
+ border-top: 1px dotted #595;
161
+ border-bottom: 1px dotted #595;
162
+ margin-bottom: 10px;
163
+ }
164
+ /* END:cart */
165
+
166
+ /* Styles for order form */
167
+
168
+ .depot-form fieldset {
169
+ background: #efe;
170
+ }
171
+
172
+ .depot-form legend {
173
+ color: #dfd;
174
+ background: #141;
175
+ font-family: sans-serif;
176
+ padding: 0.2em 1em;
177
+ }
178
+
179
+ .depot-form label {
180
+ width: 5em;
181
+ float: left;
182
+ text-align: right;
183
+ margin-right: 0.5em;
184
+ display: block;
185
+ }
186
+
187
+ .depot-form .submit {
188
+ margin-left: 5.5em;
189
+ }
190
+
191
+ /* The error box */
192
+
193
+ .fieldWithErrors {
194
+ padding: 2px;
195
+ background-color: red;
196
+ display: table;
197
+ }
198
+
199
+ #errorExplanation {
200
+ width: 400px;
201
+ border: 2px solid red;
202
+ padding: 7px;
203
+ padding-bottom: 12px;
204
+ margin-bottom: 20px;
205
+ background-color: #f0f0f0;
206
+ }
207
+
208
+ #errorExplanation h2 {
209
+ text-align: left;
210
+ font-weight: bold;
211
+ padding: 5px 5px 5px 15px;
212
+ font-size: 12px;
213
+ margin: -7px;
214
+ background-color: #c00;
215
+ color: #fff;
216
+ }
217
+
218
+ #errorExplanation p {
219
+ color: #333;
220
+ margin-bottom: 0;
221
+ padding: 5px;
222
+ }
223
+
224
+ #errorExplanation ul li {
225
+ font-size: 12px;
226
+ list-style: square;
227
+ }
@@ -0,0 +1,74 @@
1
+ body { background-color: #fff; color: #333; }
2
+
3
+ body, p, ol, ul, td {
4
+ font-family: verdana, arial, helvetica, sans-serif;
5
+ font-size: 13px;
6
+ line-height: 18px;
7
+ }
8
+
9
+ pre {
10
+ background-color: #eee;
11
+ padding: 10px;
12
+ font-size: 11px;
13
+ }
14
+
15
+ a { color: #000; }
16
+ a:visited { color: #666; }
17
+ a:hover { color: #fff; background-color:#000; }
18
+
19
+ .fieldWithErrors {
20
+ padding: 2px;
21
+ background-color: red;
22
+ display: table;
23
+ }
24
+
25
+ #errorExplanation {
26
+ width: 400px;
27
+ border: 2px solid red;
28
+ padding: 7px;
29
+ padding-bottom: 12px;
30
+ margin-bottom: 20px;
31
+ background-color: #f0f0f0;
32
+ }
33
+
34
+ #errorExplanation h2 {
35
+ text-align: left;
36
+ font-weight: bold;
37
+ padding: 5px 5px 5px 15px;
38
+ font-size: 12px;
39
+ margin: -7px;
40
+ background-color: #c00;
41
+ color: #fff;
42
+ }
43
+
44
+ #errorExplanation p {
45
+ color: #333;
46
+ margin-bottom: 0;
47
+ padding: 5px;
48
+ }
49
+
50
+ #errorExplanation ul li {
51
+ font-size: 12px;
52
+ list-style: square;
53
+ }
54
+
55
+ div.uploadStatus {
56
+ margin: 5px;
57
+ }
58
+
59
+ div.progressBar {
60
+ margin: 5px;
61
+ }
62
+
63
+ div.progressBar div.border {
64
+ background-color: #fff;
65
+ border: 1px solid grey;
66
+ width: 100%;
67
+ }
68
+
69
+ div.progressBar div.background {
70
+ background-color: #333;
71
+ height: 18px;
72
+ width: 0%;
73
+ }
74
+
@@ -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,16 @@
1
+ # Schema as of June 12, 2006 15:45 (schema version 7)
2
+ #
3
+ # Table name: line_items
4
+ #
5
+ # id :integer(11) not null, primary key
6
+ # product_id :integer(11) default(0), not null
7
+ # order_id :integer(11) default(0), not null
8
+ # quantity :integer(11) default(0), not null
9
+ # total_price :integer(11) default(0), not null
10
+ #
11
+
12
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
13
+ first:
14
+ id: 1
15
+ another:
16
+ id: 2
@@ -0,0 +1,4 @@
1
+ first:
2
+ id: 1
3
+ another:
4
+ id: 2
@@ -0,0 +1,8 @@
1
+ <% 1.upto(1000) do |i| %>
2
+ product_<%= i %>:
3
+ id: <%= i %>
4
+ title: Product Number <%= i %>
5
+ description: My description
6
+ image_url: product.gif
7
+ price: 1234
8
+ <% end %>
@@ -0,0 +1,16 @@
1
+ #START:ruby
2
+ ruby_book:
3
+ id: 1
4
+ title: Programming Ruby
5
+ description: Dummy description
6
+ price: 1234
7
+ image_url: ruby.png
8
+ #END:ruby
9
+
10
+ rails_book:
11
+ id: 2
12
+ title: Agile Web Development with Rails
13
+ description: Dummy description
14
+ price: 2345
15
+ image_url: rails.png
16
+
@@ -0,0 +1,7 @@
1
+ <% SALT = "NaCl" unless defined?(SALT) %>
2
+
3
+ dave:
4
+ id: 1
5
+ name: dave
6
+ salt: <%= SALT %>
7
+ hashed_password: <%= User.encrypted_password('secret', SALT) %>
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2007 PJ Hyett and Mislav Marohnić
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+ this software and associated documentation files (the "Software"), to deal in
5
+ the Software without restriction, including without limitation the rights to
6
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7
+ the Software, and to permit persons to whom the Software is furnished to do so,
8
+ subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all
11
+ copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.