waves 0.7.6 → 0.7.7

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 (291) hide show
  1. data/app/Rakefile +64 -6
  2. data/app/configurations/development.rb.erb +2 -1
  3. data/app/configurations/mapping.rb.erb +1 -0
  4. data/app/configurations/production.rb.erb +1 -0
  5. data/app/lib/application.rb.erb +2 -2
  6. data/bin/waves +36 -1
  7. data/doc/HISTORY +44 -0
  8. data/doc/LICENSE +22 -0
  9. data/doc/rdoc/classes/Erubis/Context.html +218 -0
  10. data/doc/rdoc/classes/Kernel.html +145 -0
  11. data/doc/rdoc/classes/Symbol.html +154 -0
  12. data/doc/rdoc/classes/Tempfile.html +161 -0
  13. data/doc/rdoc/classes/Waves.html +455 -0
  14. data/doc/rdoc/classes/Waves/Application.html +371 -0
  15. data/doc/rdoc/classes/Waves/Blackboard.html +296 -0
  16. data/doc/rdoc/classes/Waves/Configurations.html +283 -0
  17. data/doc/rdoc/classes/Waves/Configurations/Base.html +209 -0
  18. data/doc/rdoc/classes/Waves/Configurations/Default.html +237 -0
  19. data/doc/rdoc/classes/Waves/Console.html +187 -0
  20. data/doc/rdoc/classes/Waves/Controllers.html +203 -0
  21. data/doc/rdoc/classes/Waves/Controllers/Base.html +151 -0
  22. data/doc/rdoc/classes/Waves/Controllers/Mixin.html +312 -0
  23. data/doc/rdoc/classes/Waves/Dispatchers.html +118 -0
  24. data/doc/rdoc/classes/Waves/Dispatchers/Base.html +198 -0
  25. data/doc/rdoc/classes/Waves/Dispatchers/Default.html +224 -0
  26. data/doc/rdoc/classes/Waves/Dispatchers/NotFoundError.html +122 -0
  27. data/doc/rdoc/classes/Waves/Dispatchers/Redirect.html +173 -0
  28. data/doc/rdoc/classes/Waves/Foundations.html +131 -0
  29. data/doc/rdoc/classes/Waves/Foundations/Default.html +179 -0
  30. data/doc/rdoc/classes/Waves/Foundations/Simple.html +167 -0
  31. data/doc/rdoc/classes/Waves/Helpers.html +176 -0
  32. data/doc/rdoc/classes/Waves/Helpers/AssetHelper.html +212 -0
  33. data/doc/rdoc/classes/Waves/Helpers/Common.html +213 -0
  34. data/doc/rdoc/classes/Waves/Helpers/Default.html +135 -0
  35. data/doc/rdoc/classes/Waves/Helpers/Form.html +201 -0
  36. data/doc/rdoc/classes/Waves/Helpers/Formatting.html +232 -0
  37. data/doc/rdoc/classes/Waves/Helpers/Model.html +194 -0
  38. data/doc/rdoc/classes/Waves/Helpers/NumberHelper.html +165 -0
  39. data/doc/rdoc/classes/Waves/Helpers/TagHelper.html +226 -0
  40. data/doc/rdoc/classes/Waves/Helpers/UrlHelper.html +242 -0
  41. data/doc/rdoc/classes/Waves/Helpers/View.html +163 -0
  42. data/doc/rdoc/classes/Waves/Inflect/InflectorMethods.html +475 -0
  43. data/doc/rdoc/classes/Waves/Layers.html +175 -0
  44. data/doc/rdoc/classes/Waves/Layers/DefaultErrors.html +161 -0
  45. data/doc/rdoc/classes/Waves/Layers/Inflect.html +119 -0
  46. data/doc/rdoc/classes/Waves/Layers/Inflect/English.html +168 -0
  47. data/doc/rdoc/classes/Waves/Layers/Inflect/English/Rules.html +112 -0
  48. data/doc/rdoc/classes/Waves/Layers/Inflect/English/StringMethods.html +194 -0
  49. data/doc/rdoc/classes/Waves/Layers/MVC.html +204 -0
  50. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord.html +239 -0
  51. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/ControllerMethods.html +246 -0
  52. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/Symbol.html +132 -0
  53. data/doc/rdoc/classes/Waves/Layers/ORM/DataMapper.html +166 -0
  54. data/doc/rdoc/classes/Waves/Layers/ORM/Filebase.html +157 -0
  55. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel.html +232 -0
  56. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel/ControllerMethods.html +246 -0
  57. data/doc/rdoc/classes/Waves/Layers/Simple.html +169 -0
  58. data/doc/rdoc/classes/Waves/Layers/SimpleErrors.html +159 -0
  59. data/doc/rdoc/classes/Waves/Logger.html +288 -0
  60. data/doc/rdoc/classes/Waves/Mapping.html +760 -0
  61. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls.html +129 -0
  62. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/GetRules.html +174 -0
  63. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/RestRules.html +180 -0
  64. data/doc/rdoc/classes/Waves/MimeTypes.html +200 -0
  65. data/doc/rdoc/classes/Waves/Renderers/Erubis.html +162 -0
  66. data/doc/rdoc/classes/Waves/Renderers/Haml.html +160 -0
  67. data/doc/rdoc/classes/Waves/Renderers/Markaby.html +167 -0
  68. data/doc/rdoc/classes/Waves/Renderers/Mixin.html +191 -0
  69. data/doc/rdoc/classes/Waves/Renderers/Scope.html +181 -0
  70. data/doc/rdoc/classes/Waves/Request.html +441 -0
  71. data/doc/rdoc/classes/Waves/Request/ParseError.html +111 -0
  72. data/doc/rdoc/classes/Waves/Response.html +283 -0
  73. data/doc/rdoc/classes/Waves/ResponseMixin.html +460 -0
  74. data/doc/rdoc/classes/Waves/ResponseProxy.html +269 -0
  75. data/doc/rdoc/classes/Waves/Server.html +488 -0
  76. data/doc/rdoc/classes/Waves/Session.html +330 -0
  77. data/doc/rdoc/classes/Waves/Utilities/Hash.html +185 -0
  78. data/doc/rdoc/classes/Waves/Utilities/Integer.html +424 -0
  79. data/doc/rdoc/classes/Waves/Utilities/Module.html +174 -0
  80. data/doc/rdoc/classes/Waves/Utilities/Object.html +155 -0
  81. data/doc/rdoc/classes/Waves/Utilities/Proc.html +145 -0
  82. data/doc/rdoc/classes/Waves/Utilities/String.html +290 -0
  83. data/doc/rdoc/classes/Waves/Views.html +278 -0
  84. data/doc/rdoc/classes/Waves/Views/Base.html +118 -0
  85. data/doc/rdoc/classes/Waves/Views/Mixin.html +279 -0
  86. data/doc/rdoc/classes/Waves/Views/NoTemplateError.html +111 -0
  87. data/doc/rdoc/created.rid +1 -0
  88. data/doc/rdoc/files/README_rdoc.html +415 -0
  89. data/doc/rdoc/files/bin/waves.html +135 -0
  90. data/doc/rdoc/files/doc/HISTORY.html +265 -0
  91. data/doc/rdoc/files/lib/commands/waves-console_rb.html +110 -0
  92. data/doc/rdoc/files/lib/commands/waves-server_rb.html +108 -0
  93. data/doc/rdoc/files/lib/controllers/base_rb.html +101 -0
  94. data/doc/rdoc/files/lib/controllers/mixin_rb.html +101 -0
  95. data/doc/rdoc/files/lib/dispatchers/base_rb.html +101 -0
  96. data/doc/rdoc/files/lib/dispatchers/default_rb.html +101 -0
  97. data/doc/rdoc/files/lib/foundations/default_rb.html +101 -0
  98. data/doc/rdoc/files/lib/foundations/simple_rb.html +101 -0
  99. data/doc/rdoc/files/lib/helpers/asset_helper_rb.html +101 -0
  100. data/doc/rdoc/files/lib/helpers/common_rb.html +101 -0
  101. data/doc/rdoc/files/lib/helpers/default_rb.html +101 -0
  102. data/doc/rdoc/files/lib/helpers/form_rb.html +101 -0
  103. data/doc/rdoc/files/lib/helpers/formatting_rb.html +108 -0
  104. data/doc/rdoc/files/lib/helpers/model_rb.html +101 -0
  105. data/doc/rdoc/files/lib/helpers/number_helper_rb.html +101 -0
  106. data/doc/rdoc/files/lib/helpers/tag_helper_rb.html +101 -0
  107. data/doc/rdoc/files/lib/helpers/url_helper_rb.html +101 -0
  108. data/doc/rdoc/files/lib/helpers/view_rb.html +101 -0
  109. data/doc/rdoc/files/lib/layers/default_errors_rb.html +101 -0
  110. data/doc/rdoc/files/lib/layers/inflect/english/rules_rb.html +101 -0
  111. data/doc/rdoc/files/lib/layers/inflect/english/string_rb.html +101 -0
  112. data/doc/rdoc/files/lib/layers/inflect/english_rb.html +109 -0
  113. data/doc/rdoc/files/lib/layers/mvc_rb.html +101 -0
  114. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/generate_rb.html +101 -0
  115. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/schema_rb.html +101 -0
  116. data/doc/rdoc/files/lib/layers/orm/active_record_rb.html +108 -0
  117. data/doc/rdoc/files/lib/layers/orm/data_mapper_rb.html +108 -0
  118. data/doc/rdoc/files/lib/layers/orm/filebase_rb.html +101 -0
  119. data/doc/rdoc/files/lib/layers/orm/migration_rb.html +101 -0
  120. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/generate_rb.html +101 -0
  121. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/schema_rb.html +101 -0
  122. data/doc/rdoc/files/lib/layers/orm/sequel_rb.html +108 -0
  123. data/doc/rdoc/files/lib/layers/simple_errors_rb.html +101 -0
  124. data/doc/rdoc/files/lib/layers/simple_rb.html +101 -0
  125. data/doc/rdoc/files/lib/mapping/mapping_rb.html +101 -0
  126. data/doc/rdoc/files/lib/mapping/pretty_urls_rb.html +101 -0
  127. data/doc/rdoc/files/lib/renderers/erubis_rb.html +108 -0
  128. data/doc/rdoc/files/lib/renderers/haml_rb.html +108 -0
  129. data/doc/rdoc/files/lib/renderers/markaby_rb.html +108 -0
  130. data/doc/rdoc/files/lib/renderers/mixin_rb.html +101 -0
  131. data/doc/rdoc/files/lib/runtime/application_rb.html +107 -0
  132. data/doc/rdoc/files/lib/runtime/blackboard_rb.html +101 -0
  133. data/doc/rdoc/files/lib/runtime/configuration_rb.html +101 -0
  134. data/doc/rdoc/files/lib/runtime/console_rb.html +101 -0
  135. data/doc/rdoc/files/lib/runtime/debugger_rb.html +101 -0
  136. data/doc/rdoc/files/lib/runtime/logger_rb.html +108 -0
  137. data/doc/rdoc/files/lib/runtime/mime_types_rb.html +101 -0
  138. data/doc/rdoc/files/lib/runtime/request_rb.html +101 -0
  139. data/doc/rdoc/files/lib/runtime/response_mixin_rb.html +101 -0
  140. data/doc/rdoc/files/lib/runtime/response_proxy_rb.html +101 -0
  141. data/doc/rdoc/files/lib/runtime/response_rb.html +101 -0
  142. data/doc/rdoc/files/lib/runtime/server_rb.html +108 -0
  143. data/doc/rdoc/files/lib/runtime/session_rb.html +101 -0
  144. data/doc/rdoc/files/lib/tasks/cluster_rb.html +101 -0
  145. data/doc/rdoc/files/lib/tasks/gem_rb.html +108 -0
  146. data/doc/rdoc/files/lib/tasks/generate_rb.html +101 -0
  147. data/doc/rdoc/files/lib/utilities/hash_rb.html +101 -0
  148. data/doc/rdoc/files/lib/utilities/inflect_rb.html +111 -0
  149. data/doc/rdoc/files/lib/utilities/integer_rb.html +101 -0
  150. data/doc/rdoc/files/lib/utilities/module_rb.html +101 -0
  151. data/doc/rdoc/files/lib/utilities/object_rb.html +101 -0
  152. data/doc/rdoc/files/lib/utilities/proc_rb.html +101 -0
  153. data/doc/rdoc/files/lib/utilities/string_rb.html +101 -0
  154. data/doc/rdoc/files/lib/utilities/symbol_rb.html +101 -0
  155. data/doc/rdoc/files/lib/utilities/tempfile_rb.html +115 -0
  156. data/doc/rdoc/files/lib/views/base_rb.html +101 -0
  157. data/doc/rdoc/files/lib/views/mixin_rb.html +101 -0
  158. data/doc/rdoc/files/lib/waves_rb.html +195 -0
  159. data/doc/rdoc/fr_class_index.html +104 -0
  160. data/doc/rdoc/fr_file_index.html +97 -0
  161. data/doc/rdoc/fr_method_index.html +233 -0
  162. data/doc/rdoc/index.html +24 -0
  163. data/doc/rdoc/rdoc-style.css +208 -0
  164. data/lib/foundations/default.rb +1 -0
  165. data/lib/layers/default_errors.rb +10 -13
  166. data/lib/layers/inflect/english.rb +24 -0
  167. data/lib/layers/inflect/english/rules.rb +88 -0
  168. data/lib/layers/inflect/english/string.rb +24 -0
  169. data/lib/layers/mvc.rb +31 -35
  170. data/lib/layers/orm/active_record.rb +83 -32
  171. data/lib/layers/orm/active_record/tasks/generate.rb +28 -0
  172. data/lib/layers/orm/active_record/tasks/schema.rb +7 -15
  173. data/lib/layers/orm/data_mapper.rb +12 -16
  174. data/lib/layers/orm/migration.rb +20 -11
  175. data/lib/layers/orm/sequel.rb +53 -49
  176. data/lib/layers/orm/sequel/tasks/generate.rb +28 -0
  177. data/lib/layers/orm/sequel/tasks/schema.rb +6 -14
  178. data/lib/layers/simple.rb +6 -13
  179. data/lib/layers/simple_errors.rb +5 -8
  180. data/lib/renderers/haml.rb +45 -0
  181. data/lib/runtime/application.rb +0 -2
  182. data/lib/tasks/cluster.rb +1 -1
  183. data/lib/utilities/inflect.rb +86 -168
  184. data/lib/utilities/integer.rb +23 -16
  185. data/lib/utilities/module.rb +19 -15
  186. data/lib/utilities/object.rb +22 -14
  187. data/lib/utilities/proc.rb +13 -7
  188. data/lib/utilities/string.rb +0 -12
  189. data/lib/utilities/symbol.rb +4 -1
  190. data/lib/utilities/tempfile.rb +9 -0
  191. data/lib/waves.rb +3 -1
  192. data/samples/blog/Rakefile +14 -0
  193. data/samples/blog/bin/waves-console +3 -0
  194. data/samples/blog/bin/waves-server +3 -0
  195. data/samples/blog/blog.db +0 -0
  196. data/samples/blog/configurations/development.rb +31 -0
  197. data/samples/blog/configurations/mapping.rb +23 -0
  198. data/samples/blog/configurations/production.rb +30 -0
  199. data/samples/blog/doc/EMTPY +0 -0
  200. data/samples/blog/lib/application.rb +5 -0
  201. data/samples/blog/models/comment.rb +14 -0
  202. data/samples/blog/models/entry.rb +14 -0
  203. data/samples/blog/public/css/site.css +2 -0
  204. data/samples/blog/public/javascript/site.js +13 -0
  205. data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
  206. data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
  207. data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
  208. data/samples/blog/startup.rb +6 -0
  209. data/samples/blog/templates/comment/add.mab +10 -0
  210. data/samples/blog/templates/comment/list.mab +6 -0
  211. data/samples/blog/templates/entry/editor.mab +13 -0
  212. data/samples/blog/templates/entry/list.mab +11 -0
  213. data/samples/blog/templates/entry/show.mab +9 -0
  214. data/samples/blog/templates/entry/summary.mab +5 -0
  215. data/samples/blog/templates/errors/not_found_404.mab +2 -0
  216. data/samples/blog/templates/errors/server_error_500.mab +2 -0
  217. data/samples/blog/templates/layouts/default.mab +17 -0
  218. data/samples/jub/Rakefile +72 -0
  219. data/samples/jub/bin/waves-console +4 -0
  220. data/samples/jub/bin/waves-server +4 -0
  221. data/samples/jub/configurations/development.rb +31 -0
  222. data/samples/jub/configurations/mapping.rb +18 -0
  223. data/samples/jub/configurations/production.rb +31 -0
  224. data/samples/jub/lib/application.rb +5 -0
  225. data/samples/jub/startup.rb +6 -0
  226. data/samples/jub/templates/errors/not_found_404.mab +2 -0
  227. data/samples/jub/templates/errors/server_error_500.mab +2 -0
  228. data/samples/jub/templates/layouts/default.mab +14 -0
  229. data/verify/app_generation/helpers.rb +24 -0
  230. data/verify/app_generation/startup.rb +39 -0
  231. data/verify/blackboard/blackboard_verify.rb +92 -0
  232. data/verify/blackboard/helpers.rb +5 -0
  233. data/verify/configurations/attributes.rb +37 -0
  234. data/verify/configurations/helpers.rb +1 -0
  235. data/verify/configurations/rack_integration.rb +29 -0
  236. data/verify/controllers/base.rb +37 -0
  237. data/verify/controllers/helpers.rb +13 -0
  238. data/verify/controllers/interface.rb +51 -0
  239. data/verify/core/helpers.rb +3 -0
  240. data/verify/core/utilities.rb +177 -0
  241. data/verify/foundations/default.rb +86 -0
  242. data/verify/foundations/default_application/Rakefile +14 -0
  243. data/verify/foundations/default_application/bin/waves-console +3 -0
  244. data/verify/foundations/default_application/bin/waves-server +3 -0
  245. data/verify/foundations/default_application/configurations/development.rb +26 -0
  246. data/verify/foundations/default_application/configurations/mapping.rb +14 -0
  247. data/verify/foundations/default_application/configurations/production.rb +30 -0
  248. data/verify/foundations/default_application/controllers/default.rb +15 -0
  249. data/verify/foundations/default_application/controllers/loaded.rb +15 -0
  250. data/verify/foundations/default_application/defaultapplication.db +0 -0
  251. data/verify/foundations/default_application/helpers/loaded.rb +10 -0
  252. data/verify/foundations/default_application/lib/application.rb +5 -0
  253. data/verify/foundations/default_application/models/default.rb +13 -0
  254. data/verify/foundations/default_application/models/loaded.rb +13 -0
  255. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +9 -0
  256. data/verify/foundations/default_application/startup.rb +7 -0
  257. data/verify/foundations/default_application/templates/errors/not_found_404.mab +2 -0
  258. data/verify/foundations/default_application/templates/errors/server_error_500.mab +2 -0
  259. data/verify/foundations/default_application/templates/layouts/default.mab +14 -0
  260. data/verify/foundations/default_application/views/default.rb +7 -0
  261. data/verify/foundations/default_application/views/loaded.rb +15 -0
  262. data/verify/foundations/helpers.rb +1 -0
  263. data/verify/foundations/simple.rb +25 -0
  264. data/verify/helpers.rb +76 -0
  265. data/verify/layers/data_mapper/association_verify.rb +87 -0
  266. data/verify/layers/default_errors.rb +29 -0
  267. data/verify/layers/helpers.rb +1 -0
  268. data/verify/layers/migration.rb +33 -0
  269. data/verify/layers/sequel/model.rb +41 -0
  270. data/verify/layers/sequeltest.db +0 -0
  271. data/verify/mapping/always.rb +19 -0
  272. data/verify/mapping/filters.rb +65 -0
  273. data/verify/mapping/handle.rb +24 -0
  274. data/verify/mapping/helpers.rb +7 -0
  275. data/verify/mapping/matches.rb +27 -0
  276. data/verify/mapping/named.rb +29 -0
  277. data/verify/mapping/options.rb +17 -0
  278. data/verify/mapping/path.rb +40 -0
  279. data/verify/mapping/response_proxy.rb +50 -0
  280. data/verify/mapping/threaded.rb +25 -0
  281. data/verify/requests/helpers.rb +16 -0
  282. data/verify/requests/request.rb +73 -0
  283. data/verify/requests/response.rb +59 -0
  284. data/verify/requests/session.rb +54 -0
  285. data/verify/views/helpers.rb +1 -0
  286. data/verify/views/rendering.rb +34 -0
  287. data/verify/views/templates/foo.erb +0 -0
  288. data/verify/views/templates/moo.erb +0 -0
  289. data/verify/views/templates/moo.mab +0 -0
  290. metadata +597 -224
  291. data/lib/utilities/kernel.rb +0 -34
@@ -0,0 +1,6 @@
1
+ WAVES = File.join(File.dirname(__FILE__), "..", "..")
2
+ lambda {
3
+ waves = ( ( WAVES if defined? WAVES ) || ENV['WAVES'] || File.join(File.dirname(__FILE__), 'waves') )
4
+ $:.unshift(File.join( waves, "lib" )) if File.exist? waves
5
+ }.call
6
+ require 'waves'
@@ -0,0 +1,10 @@
1
+ form :action => "/comments", :method => 'POST' do
2
+ input :type => :hidden, :name => 'comment.entry_id', :value => @entry.id
3
+ label 'Name'; br
4
+ input :type => :text, :name => 'comment.name'; br
5
+ label 'Email'; br
6
+ input :type => :text, :name => 'comment.email'; br
7
+ label 'Comment'; br
8
+ textarea :name => 'comment.content', :rows => 10, :cols => 80; br
9
+ input :type => :submit, :value => 'Save'
10
+ end
@@ -0,0 +1,6 @@
1
+ @comments.each do |comment|
2
+ p "Posted on #{comment.updated_on.strftime('%b %d, %Y') if comment.updated_on} by
3
+ #{( ( comment.name.nil? or comment.name.empty? ) ?
4
+ 'anonymous coward' : comment.name )}"
5
+ textile comment.content
6
+ end
@@ -0,0 +1,13 @@
1
+ layout :default, :title => 'Edit Entry' do
2
+ form :action => "/entry/#{@entry.name}/", :method => 'POST' do
3
+ input :name => '_method', :type => 'hidden', :value => 'put'
4
+ label 'Title'; br
5
+ input :type => :text, :value => @entry.title, :name => 'entry.title'; br
6
+ label 'Summary'; br
7
+ textarea @entry.summary, :name => 'entry.summary', :rows => 10, :cols => 80; br
8
+ label 'Content'; br
9
+ textarea @entry.content, :name => 'entry.content', :rows => 20, :cols => 80; br
10
+ input :type => :submit, :value => 'Save'
11
+ a.delete 'Delete', :href => "/entry/#{@entry.name}"
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ layout :default, :title => 'Blog Entries' do
2
+ h1 'My Blog'
3
+ form :action => '/entries', :method => 'post' do
4
+ label 'Name'
5
+ input :type => :text, :name => 'entry.name'
6
+ input :type => :submit, :value => 'Add'
7
+ end
8
+ @entries.each do |entry|
9
+ view :entry, :summary, :entry => entry
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ layout :default, :title => @entry.title do
2
+ a 'Show All Entries', :href => '/entries'
3
+ a 'Edit This Entry', :href => "/entry/#{@entry.name}/editor"
4
+ h1 @entry.title
5
+ textile @entry.content
6
+ h1 'Comments'
7
+ view :comment, :add, :entry => @entry
8
+ view :comment, :list, :comments => @entry.comments
9
+ end
@@ -0,0 +1,5 @@
1
+ h2 do
2
+ a @entry.title, :href => "/entry/#{@entry.name}"
3
+ end
4
+ textile @entry.summary
5
+ a 'Read more ...', :href => "/entry/#{@entry.name}"
@@ -0,0 +1,2 @@
1
+ h1 '404'
2
+ p %q( That URL does not exist on this server. )
@@ -0,0 +1,2 @@
1
+ h1 '500'
2
+ p %q( Internal server error. Sorry, but your request could not be processed. )
@@ -0,0 +1,17 @@
1
+ doctype :html4_strict
2
+
3
+ html do
4
+
5
+ head do
6
+ title @title
7
+ script :src => 'http://jqueryjs.googlecode.com/files/jquery-1.2.2.min.js',
8
+ :type => 'text/javascript'
9
+ script :src => '/javascript/site.js', :type => 'text/javascript'
10
+ link :href => '/css/site.css', :rel => 'stylesheet', :type => 'text/css'
11
+ end
12
+
13
+ body do
14
+ layout_content
15
+ end
16
+
17
+ end
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Warning: This file is clobbered when you update your
4
+ # application with the waves script. Accordingly, you may
5
+ # wish to keep your tasks in .rb or .rake files in lib/tasks
6
+
7
+ begin
8
+ require 'startup'
9
+ Waves::Console.load(:mode => ENV['mode'])
10
+
11
+ # load tasks from waves framework
12
+ %w( cluster generate gem ).each { |task| require "tasks/#{task}.rb" }
13
+
14
+ # load tasks from this app's lib/tasks
15
+ Dir["lib/tasks/*.{rb,rake}"].each { |task| require task }
16
+
17
+ rescue LoadError => e
18
+ if e.message == 'no such file to load -- waves'
19
+ puts "Can't find Waves source. Install gem, freeze Waves, or define WAVES in startup.rb"
20
+ puts
21
+ else
22
+ raise e
23
+ end
24
+ end
25
+
26
+ namespace :waves do
27
+
28
+ desc "freeze src=<wherever> to ./waves"
29
+ task :freeze do
30
+
31
+ target = "#{Dir.pwd}/waves"
32
+ src = ENV['src']
33
+ raise "Please specify the location of waves using src=wherever" unless src
34
+ raise "No directory found at '#{src}'" unless File.directory?(src)
35
+
36
+ items = FileList["#{src}/*"]
37
+ puts "Freezing from: #{src}"
38
+ items.each do |item|
39
+ puts "copying #{item}"
40
+ cp_r item, target
41
+ end
42
+
43
+ end
44
+
45
+ desc "unfreeze (i.e. delete) the waves source at ./waves"
46
+ task :unfreeze do
47
+ frozen = "#{Dir.pwd}/waves"
48
+ rm_r frozen if File.exist?(frozen)
49
+ end
50
+
51
+ # Convenience task to allow you to freeze the current Waves
52
+ # source without knowing where it is. This task only gets
53
+ # defined when the Rakefile successfully loaded Waves and if
54
+ # there's nothing in the way at ./waves
55
+ if defined?(WAVES) && !File.exist?("#{Dir.pwd}/waves")
56
+ namespace :freeze do
57
+ desc "freeze current Waves source to ./waves"
58
+ task :current do
59
+ target = "#{Dir.pwd}/waves"
60
+ current = File.expand_path( WAVES )
61
+ items = FileList["#{current}/*"]
62
+ puts "Freezing from: #{current}"
63
+ items.each do |item|
64
+ puts "copying #{item}"
65
+ cp_r item, target
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'startup'
4
+ require 'commands/waves-console'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'startup'
4
+ require 'commands/waves-server'
@@ -0,0 +1,31 @@
1
+ module Jub
2
+
3
+ module Configurations
4
+
5
+ class Development < Default
6
+
7
+ database :adapter => 'sqlite', :database => 'jub'
8
+
9
+ reloadable [ Jub ]
10
+
11
+ log :level => :debug
12
+
13
+ host '127.0.0.1'
14
+
15
+ port 3000
16
+
17
+ handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
18
+ # handler ::Rack::Handler::WEBrick, :BindAddress => host, :Port => port
19
+ # handler ::Rack::Handler::Thin, :Host => host, :Port => port
20
+
21
+ application do
22
+ use ::Rack::ShowExceptions
23
+ use ::Rack::Static, :urls => [ '/css/', '/javascript/', '/images/' ], :root => 'public'
24
+ run ::Waves::Dispatchers::Default.new
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,18 @@
1
+ module Jub
2
+
3
+ module Configurations
4
+
5
+ module Mapping
6
+ # your custom rules go here
7
+
8
+ path "/" do
9
+ "hello"
10
+ end
11
+
12
+ include Waves::Mapping::PrettyUrls::RestRules
13
+ include Waves::Mapping::PrettyUrls::GetRules
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,31 @@
1
+ module Jub
2
+
3
+ module Configurations
4
+
5
+ class Production < Default
6
+
7
+ database :host => 'localhost', :adapter => 'mysql', :database => 'jub',
8
+ :user => 'root', :password => ''
9
+
10
+ reloadable []
11
+
12
+ log :level => :error,
13
+ :output => ( :log / "waves.#{$$}" ),
14
+ :rotation => :weekly
15
+
16
+ host '0.0.0.0'
17
+
18
+ port 80
19
+
20
+ handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
21
+ # handler ::Rack::Handler::WEBrick, :BindAddress => host, :Port => port
22
+ # handler ::Rack::Handler::Thin, :Host => host, :Port => port
23
+
24
+ application do
25
+ use ::Rack::Static, :urls => [ '/css/', '/javascript/', '/images/' ], :root => 'public'
26
+ run ::Waves::Dispatchers::Default.new
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ require 'layers/orm/sequel'
2
+ module Jub
3
+ include Waves::Foundations::Default
4
+ include Waves::Layers::ORM::Sequel
5
+ end
@@ -0,0 +1,6 @@
1
+ WAVES = File.join(File.dirname(__FILE__), "..", "..")
2
+ lambda {
3
+ waves = ( ( WAVES if defined? WAVES ) || ENV['WAVES'] || File.join(File.dirname(__FILE__), 'waves') )
4
+ $:.unshift(File.join( waves, "lib" )) if File.exist? waves
5
+ }.call
6
+ require 'waves'
@@ -0,0 +1,2 @@
1
+ h1 '404'
2
+ p %q( That URL does not exist on this server. )
@@ -0,0 +1,2 @@
1
+ h1 '500'
2
+ p %q( Internal server error. Sorry, but your request could not be processed. )
@@ -0,0 +1,14 @@
1
+ doctype :html4_strict
2
+
3
+ html do
4
+
5
+ head do
6
+ title @title
7
+ end
8
+
9
+ body do
10
+ layout_content
11
+ end
12
+
13
+ end
14
+
@@ -0,0 +1,24 @@
1
+ %w( rubygems bacon open3 extensions/all).each { |f| require f }
2
+
3
+ Bacon.extend Bacon::TestUnitOutput
4
+ Bacon.summary_on_exit
5
+
6
+ require File.join(File.dirname(__FILE__), "..", "..", "lib", "utilities", "string")
7
+
8
+
9
+ AppPath = File.expand_path(File.dirname(__FILE__) / "sandbox")
10
+ FrameworkPath = File.expand_path(File.dirname(__FILE__) / ".." / "..")
11
+
12
+ def generate_test_app(path)
13
+ command = File.dirname(__FILE__) / ".." / ".." / :bin / "waves"
14
+ system "#{command} #{path}"
15
+ end
16
+
17
+ def clobber_test_app(path)
18
+ FileUtils.rm_rf(path) if File.exist?(path)
19
+ end
20
+
21
+ def set_framework_path(path)
22
+ text = File.read(path / 'startup.rb').split("\n").unshift("WAVES = '#{FrameworkPath}'").join("\n")
23
+ File.write(path / 'startup.rb', text)
24
+ end
@@ -0,0 +1,39 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+
3
+ require File.join(File.dirname(__FILE__) , "helpers")
4
+
5
+ clobber_test_app(AppPath)
6
+ generate_test_app(AppPath)
7
+
8
+ describe "A generated application" do
9
+
10
+ it "has executable script files" do
11
+ File.executable?(File.join(AppPath, "bin", "waves-console")).should.be.true
12
+ end
13
+
14
+ it "will fail to find waves framework, if the gem is not available" do
15
+ Dir.chdir(AppPath) do
16
+ stdin, stdout, stderr = Open3.popen3("ruby startup.rb")
17
+ stderr.gets.should =~ %r{no such file to load -- waves \(LoadError\)}
18
+ end
19
+ end
20
+
21
+ it "will find and use waves framework source when WAVES is defined" do
22
+ set_framework_path(AppPath)
23
+ Dir.chdir(AppPath) do
24
+ stdin, stdout, stderr = Open3.popen3("ruby startup.rb")
25
+ stderr.gets.should == nil
26
+ end
27
+ end
28
+
29
+ it "has the directories we expect it to have" do
30
+ dirs = %w{ bin/ configurations/ controllers/ doc/ helpers/ lib/
31
+ log/ models/ public/ schema/ templates/ tmp/ views/ }
32
+ Dir.chdir(AppPath) do
33
+ Dir.glob("*/").should == dirs
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ clobber_test_app(AppPath)
@@ -0,0 +1,92 @@
1
+ require File.join(File.dirname(__FILE__), "helpers")
2
+
3
+ specification "Blackboard" do
4
+
5
+ it 'should create a blackboard' do
6
+ request = mock(:request)
7
+ Waves::Blackboard.new(request).should.not == nil
8
+ end
9
+
10
+ it 'should allow adding a value, and reading from it' do
11
+ request = mock(:request)
12
+ bb = Waves::Blackboard.new(request)
13
+ bb.test = 2
14
+ bb.test.should == 2
15
+
16
+ bb["test"].should == 2
17
+
18
+ bb["test2"] = 3
19
+ bb["test2"].should == 3
20
+ bb.test2.should == 3
21
+ end
22
+
23
+ it 'should not have a value if never set' do
24
+ request = mock(:request)
25
+ bb = Waves::Blackboard.new(request)
26
+ bb.never_set.should == nil
27
+ bb["never_set"].should == nil
28
+ end
29
+
30
+ it 'should iterate over all defined values' do
31
+ request = mock(:request)
32
+ bb = Waves::Blackboard.new(request)
33
+ bb.value1 = 1
34
+ bb.value2 = 2
35
+ a = []
36
+ bb.each do |value|
37
+ a << value
38
+ end
39
+ a.should == [["value1", 1], ["value2", 2]]
40
+ end
41
+
42
+ end
43
+
44
+ module BlackBoardVerify
45
+ module Controllers
46
+ class Test
47
+ include Waves::Controllers::Mixin
48
+ end
49
+ end
50
+ end
51
+
52
+ module BlackBoardVerify
53
+ module Configurations
54
+ module Mapping
55
+ extend Waves::Mapping
56
+ end
57
+ end
58
+ end
59
+
60
+ module BlackBoardVerify
61
+ module Helpers
62
+ module Test
63
+ extend Waves::Helpers::Default
64
+ end
65
+ end
66
+ end
67
+
68
+ module BlackBoardVerify
69
+ module Views
70
+ module Test
71
+ extend Waves::Views::Mixin
72
+ end
73
+ end
74
+ end
75
+
76
+ specification "Blackboard included in other classes" do
77
+
78
+ before do
79
+ end
80
+
81
+ after do
82
+ end
83
+
84
+ it 'should be included in other classes' do
85
+ request = mock(:request)
86
+ BlackBoardVerify::Controllers::Test.instance_methods.should.include "blackboard"
87
+ Waves::Helpers::Default.instance_methods.should.include "blackboard"
88
+ Waves::ResponseProxy.instance_methods.should.include "blackboard"
89
+ BlackBoardVerify::Views::Test.methods.should.include "blackboard"
90
+ end
91
+
92
+ end