ramaze 0.2.1 → 0.3.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 (304) hide show
  1. data/Rakefile +20 -3
  2. data/bin/ramaze +1 -4
  3. data/doc/AUTHORS +2 -1
  4. data/doc/CHANGELOG +539 -32
  5. data/doc/LEGAL +4 -0
  6. data/doc/meta/announcement.txt +79 -47
  7. data/examples/blog/README +2 -2
  8. data/examples/blog/spec/blog.rb +33 -48
  9. data/examples/blog/src/controller.rb +15 -13
  10. data/examples/blog/src/model.rb +28 -10
  11. data/examples/blog/start.rb +0 -10
  12. data/examples/blog/template/edit.xhtml +1 -1
  13. data/examples/blog/template/index.xhtml +2 -2
  14. data/examples/facebook.rb +152 -0
  15. data/examples/linking.rb +28 -0
  16. data/examples/ramaise.rb +4 -11
  17. data/examples/rammit/spec/rammit.rb +30 -0
  18. data/examples/rammit/src/controller/main.rb +3 -0
  19. data/examples/rammit/src/controller/page.rb +16 -0
  20. data/examples/rammit/src/model.rb +33 -0
  21. data/examples/rammit/start.rb +7 -0
  22. data/examples/rammit/template/index.xhtml +14 -0
  23. data/examples/rammit/template/page/view.xhtml +4 -0
  24. data/examples/rapaste/Rakefile +28 -0
  25. data/examples/rapaste/public/css/active4d.css +114 -0
  26. data/examples/rapaste/public/css/all_hallows_eve.css +72 -0
  27. data/examples/rapaste/public/css/amy.css +147 -0
  28. data/examples/rapaste/public/css/blackboard.css +88 -0
  29. data/examples/rapaste/public/css/brilliance_black.css +605 -0
  30. data/examples/rapaste/public/css/brilliance_dull.css +599 -0
  31. data/examples/rapaste/public/css/cobalt.css +149 -0
  32. data/examples/rapaste/public/css/dawn.css +121 -0
  33. data/examples/rapaste/public/css/display.css +179 -0
  34. data/examples/rapaste/public/css/eiffel.css +121 -0
  35. data/examples/rapaste/public/css/espresso_libre.css +109 -0
  36. data/examples/rapaste/public/css/idle.css +62 -0
  37. data/examples/rapaste/public/css/iplastic.css +80 -0
  38. data/examples/rapaste/public/css/lazy.css +73 -0
  39. data/examples/rapaste/public/css/mac_classic.css +123 -0
  40. data/examples/rapaste/public/css/magicwb_amiga.css +104 -0
  41. data/examples/rapaste/public/css/pastels_on_dark.css +188 -0
  42. data/examples/rapaste/public/css/slush_poppies.css +85 -0
  43. data/examples/rapaste/public/css/spacecadet.css +51 -0
  44. data/examples/rapaste/public/css/sunburst.css +180 -0
  45. data/examples/rapaste/public/css/twilight.css +137 -0
  46. data/examples/rapaste/public/css/zenburnesque.css +91 -0
  47. data/examples/rapaste/public/js/jquery.js +11 -0
  48. data/examples/rapaste/rapaste.sqlite +0 -0
  49. data/examples/rapaste/spec/rapaste.rb +49 -0
  50. data/examples/rapaste/src/controller.rb +69 -0
  51. data/examples/rapaste/src/model.rb +61 -0
  52. data/examples/rapaste/start.rb +20 -0
  53. data/examples/rapaste/template/copy.xhtml +10 -0
  54. data/examples/rapaste/template/index.xhtml +9 -0
  55. data/examples/rapaste/template/layout.xhtml +22 -0
  56. data/examples/rapaste/template/list.xhtml +28 -0
  57. data/examples/rapaste/template/view.xhtml +37 -0
  58. data/examples/sourceview/sourceview.rb +3 -3
  59. data/examples/templates/template_amrita2.rb +1 -3
  60. data/examples/todolist/spec/todolist.rb +15 -18
  61. data/examples/whywiki/spec/whywiki.rb +15 -20
  62. data/examples/whywiki/start.rb +0 -1
  63. data/examples/wikore/spec/wikore.rb +14 -19
  64. data/examples/wiktacular/spec/wiktacular.rb +8 -15
  65. data/lib/proto/{src/controller → controller}/main.rb +4 -4
  66. data/lib/proto/public/css/ramaze_error.css +39 -3
  67. data/lib/proto/public/js/jquery.js +2039 -1020
  68. data/lib/proto/spec/main.rb +27 -0
  69. data/lib/proto/start.rb +5 -5
  70. data/lib/proto/view/error.xhtml +62 -0
  71. data/lib/proto/view/index.xhtml +34 -0
  72. data/lib/proto/view/page.xhtml +15 -0
  73. data/lib/ramaze.rb +9 -7
  74. data/lib/ramaze/action.rb +7 -3
  75. data/lib/ramaze/action/render.rb +15 -5
  76. data/lib/ramaze/adapter.rb +5 -5
  77. data/lib/ramaze/adapter/base.rb +2 -2
  78. data/lib/ramaze/adapter/cgi.rb +1 -1
  79. data/lib/ramaze/adapter/evented_mongrel.rb +1 -1
  80. data/lib/ramaze/adapter/fcgi.rb +2 -2
  81. data/lib/ramaze/adapter/mongrel.rb +1 -1
  82. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +1 -1
  83. data/lib/ramaze/adapter/thin.rb +25 -0
  84. data/lib/ramaze/adapter/webrick.rb +1 -1
  85. data/lib/ramaze/cache.rb +3 -2
  86. data/lib/ramaze/cache/memcached.rb +1 -1
  87. data/lib/ramaze/cache/memory.rb +1 -1
  88. data/lib/ramaze/cache/yaml_store.rb +1 -1
  89. data/lib/ramaze/contrib.rb +1 -1
  90. data/lib/ramaze/contrib/auto_params.rb +12 -5
  91. data/lib/ramaze/contrib/auto_params/get_args.rb +1 -0
  92. data/lib/ramaze/contrib/facebook.rb +23 -0
  93. data/lib/ramaze/contrib/facebook/facebook.rb +168 -0
  94. data/lib/ramaze/contrib/gettext.rb +111 -0
  95. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  96. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  97. data/lib/ramaze/contrib/gzip_filter.rb +1 -1
  98. data/lib/ramaze/contrib/route.rb +15 -5
  99. data/lib/ramaze/contrib/sequel/fill.rb +1 -1
  100. data/lib/ramaze/controller.rb +10 -4
  101. data/lib/ramaze/controller/error.rb +5 -13
  102. data/lib/ramaze/controller/main.rb +2 -0
  103. data/lib/ramaze/controller/resolve.rb +18 -10
  104. data/lib/ramaze/dispatcher.rb +1 -1
  105. data/lib/ramaze/dispatcher/action.rb +1 -1
  106. data/lib/ramaze/dispatcher/directory.rb +3 -2
  107. data/lib/ramaze/dispatcher/error.rb +5 -5
  108. data/lib/ramaze/dispatcher/file.rb +13 -2
  109. data/lib/ramaze/error.rb +1 -1
  110. data/lib/ramaze/gestalt.rb +2 -2
  111. data/lib/ramaze/global.rb +5 -5
  112. data/lib/ramaze/global/dsl.rb +1 -1
  113. data/lib/ramaze/global/globalstruct.rb +11 -5
  114. data/lib/ramaze/helper.rb +1 -1
  115. data/lib/ramaze/helper/aspect.rb +1 -1
  116. data/lib/ramaze/helper/auth.rb +2 -2
  117. data/lib/ramaze/helper/cache.rb +1 -1
  118. data/lib/ramaze/helper/cgi.rb +1 -1
  119. data/lib/ramaze/helper/file.rb +1 -1
  120. data/lib/ramaze/helper/flash.rb +1 -1
  121. data/lib/ramaze/helper/formatting.rb +1 -1
  122. data/lib/ramaze/helper/identity.rb +1 -1
  123. data/lib/ramaze/helper/inform.rb +1 -1
  124. data/lib/ramaze/helper/link.rb +4 -4
  125. data/lib/ramaze/helper/markaby.rb +1 -1
  126. data/lib/ramaze/helper/nitroform.rb +1 -1
  127. data/lib/ramaze/helper/pager.rb +2 -1
  128. data/lib/ramaze/helper/partial.rb +1 -1
  129. data/lib/ramaze/helper/redirect.rb +6 -1
  130. data/lib/ramaze/helper/sequel.rb +54 -0
  131. data/lib/ramaze/helper/stack.rb +1 -1
  132. data/lib/ramaze/inform.rb +1 -1
  133. data/lib/ramaze/inform/analogger.rb +1 -1
  134. data/lib/ramaze/inform/growl.rb +1 -1
  135. data/lib/ramaze/inform/hub.rb +1 -1
  136. data/lib/ramaze/inform/informer.rb +1 -1
  137. data/lib/ramaze/inform/informing.rb +2 -2
  138. data/lib/ramaze/inform/knotify.rb +1 -1
  139. data/lib/ramaze/inform/syslog.rb +1 -1
  140. data/lib/ramaze/inform/xosd.rb +1 -1
  141. data/lib/ramaze/snippets.rb +1 -1
  142. data/lib/ramaze/snippets/array/put_within.rb +1 -1
  143. data/lib/ramaze/snippets/blankslate.rb +7 -0
  144. data/lib/ramaze/snippets/dictionary.rb +6 -1
  145. data/lib/ramaze/snippets/divide.rb +1 -1
  146. data/lib/ramaze/snippets/kernel/__dir__.rb +1 -1
  147. data/lib/ramaze/snippets/kernel/acquire.rb +39 -0
  148. data/lib/ramaze/snippets/kernel/aquire.rb +1 -34
  149. data/lib/ramaze/snippets/kernel/constant.rb +1 -1
  150. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +1 -1
  151. data/lib/ramaze/snippets/numeric/filesize_format.rb +1 -1
  152. data/lib/ramaze/snippets/object/traits.rb +1 -1
  153. data/lib/ramaze/snippets/ordered_set.rb +12 -7
  154. data/lib/ramaze/snippets/ramaze/caller_info.rb +1 -1
  155. data/lib/ramaze/snippets/ramaze/caller_lines.rb +1 -1
  156. data/lib/ramaze/snippets/string/camel_case.rb +1 -1
  157. data/lib/ramaze/snippets/string/color.rb +2 -4
  158. data/lib/ramaze/snippets/string/each.rb +1 -1
  159. data/lib/ramaze/snippets/string/ord.rb +15 -0
  160. data/lib/ramaze/snippets/string/snake_case.rb +1 -1
  161. data/lib/ramaze/snippets/struct/fill.rb +4 -2
  162. data/lib/ramaze/snippets/struct/values_at.rb +2 -2
  163. data/lib/ramaze/snippets/symbol/to_proc.rb +15 -8
  164. data/lib/ramaze/snippets/thread/into.rb +1 -1
  165. data/lib/ramaze/sourcereload.rb +4 -3
  166. data/lib/ramaze/spec/helper.rb +85 -32
  167. data/lib/ramaze/spec/helper/bacon.rb +7 -0
  168. data/lib/ramaze/spec/helper/browser.rb +1 -2
  169. data/lib/ramaze/spec/helper/mock_http.rb +1 -1
  170. data/lib/ramaze/spec/helper/pretty_output.rb +70 -0
  171. data/lib/ramaze/spec/helper/requester.rb +1 -1
  172. data/lib/ramaze/spec/helper/simple_http.rb +5 -4
  173. data/lib/ramaze/spec/helper/snippets.rb +6 -0
  174. data/lib/ramaze/store/default.rb +1 -1
  175. data/lib/ramaze/template.rb +1 -1
  176. data/lib/ramaze/template/amrita2.rb +6 -5
  177. data/lib/ramaze/template/erubis.rb +1 -1
  178. data/lib/ramaze/template/ezamar.rb +1 -1
  179. data/lib/ramaze/template/ezamar/element.rb +1 -1
  180. data/lib/ramaze/template/ezamar/engine.rb +1 -1
  181. data/lib/ramaze/template/ezamar/morpher.rb +1 -1
  182. data/lib/ramaze/template/ezamar/render_partial.rb +1 -1
  183. data/lib/ramaze/template/haml.rb +1 -1
  184. data/lib/ramaze/template/liquid.rb +1 -1
  185. data/lib/ramaze/template/markaby.rb +1 -1
  186. data/lib/ramaze/template/nagoro.rb +4 -6
  187. data/lib/ramaze/template/none.rb +1 -1
  188. data/lib/ramaze/template/remarkably.rb +1 -1
  189. data/lib/ramaze/template/sass.rb +1 -1
  190. data/lib/ramaze/tool.rb +1 -1
  191. data/lib/ramaze/tool/create.rb +7 -1
  192. data/lib/ramaze/tool/localize.rb +7 -14
  193. data/lib/ramaze/tool/mime.rb +1 -1
  194. data/lib/ramaze/tool/record.rb +1 -1
  195. data/lib/ramaze/trinity.rb +1 -1
  196. data/lib/ramaze/trinity/request.rb +4 -2
  197. data/lib/ramaze/trinity/response.rb +1 -1
  198. data/lib/ramaze/trinity/session.rb +7 -1
  199. data/lib/ramaze/version.rb +3 -3
  200. data/lib/vendor/bacon.rb +317 -0
  201. data/rake_tasks/conf.rake +1 -1
  202. data/rake_tasks/maintenance.rake +7 -5
  203. data/rake_tasks/spec.rake +54 -40
  204. data/spec/contrib/auto_params.rb +21 -4
  205. data/spec/contrib/route.rb +31 -4
  206. data/spec/contrib/sequel/fill.rb +3 -4
  207. data/spec/examples/caching.rb +5 -2
  208. data/spec/examples/css.rb +5 -2
  209. data/spec/examples/element.rb +5 -4
  210. data/spec/examples/hello.rb +1 -0
  211. data/spec/examples/linking.rb +18 -0
  212. data/spec/examples/simple.rb +13 -18
  213. data/spec/examples/templates/template_amrita2.rb +3 -2
  214. data/spec/examples/templates/template_erubis.rb +3 -2
  215. data/spec/examples/templates/template_ezamar.rb +2 -1
  216. data/spec/examples/templates/template_haml.rb +3 -2
  217. data/spec/examples/templates/template_liquid.rb +3 -2
  218. data/spec/examples/templates/template_markaby.rb +3 -2
  219. data/spec/examples/templates/template_remarkably.rb +3 -2
  220. data/spec/ramaze/action/basics.rb +4 -4
  221. data/spec/ramaze/action/cache.rb +11 -13
  222. data/spec/ramaze/action/layout.rb +47 -3
  223. data/spec/ramaze/action/render.rb +3 -3
  224. data/spec/ramaze/action/template/instancevars/layout.xhtml +1 -0
  225. data/spec/ramaze/adapter.rb +7 -7
  226. data/spec/ramaze/adapter/mongrel.rb +1 -1
  227. data/spec/ramaze/adapter/record.rb +7 -7
  228. data/spec/ramaze/adapter/webrick.rb +1 -1
  229. data/spec/ramaze/cache.rb +6 -8
  230. data/spec/ramaze/controller.rb +77 -65
  231. data/spec/ramaze/controller/resolve.rb +2 -1
  232. data/spec/ramaze/controller/template_resolving.rb +3 -4
  233. data/spec/ramaze/dispatcher.rb +3 -4
  234. data/spec/ramaze/dispatcher/directory.rb +35 -35
  235. data/spec/ramaze/dispatcher/file.rb +8 -5
  236. data/spec/ramaze/element.rb +4 -4
  237. data/spec/ramaze/error.rb +13 -11
  238. data/spec/ramaze/gestalt.rb +1 -1
  239. data/spec/ramaze/helper/aspect.rb +2 -1
  240. data/spec/ramaze/helper/auth.rb +4 -2
  241. data/spec/ramaze/helper/cache.rb +10 -9
  242. data/spec/ramaze/helper/cgi.rb +2 -2
  243. data/spec/ramaze/helper/file.rb +1 -0
  244. data/spec/ramaze/helper/flash.rb +5 -4
  245. data/spec/ramaze/helper/formatting.rb +1 -1
  246. data/spec/ramaze/helper/link.rb +3 -3
  247. data/spec/ramaze/helper/pager.rb +44 -80
  248. data/spec/ramaze/helper/partial.rb +2 -3
  249. data/spec/ramaze/helper/redirect.rb +10 -1
  250. data/spec/ramaze/helper/stack.rb +4 -3
  251. data/spec/ramaze/helper/template/loop.xhtml +2 -1
  252. data/spec/ramaze/inform/informer.rb +2 -2
  253. data/spec/ramaze/inform/syslog.rb +1 -1
  254. data/spec/ramaze/localize.rb +26 -26
  255. data/spec/ramaze/morpher.rb +6 -7
  256. data/spec/ramaze/params.rb +7 -8
  257. data/spec/ramaze/request.rb +27 -6
  258. data/spec/ramaze/request/mongrel.rb +1 -1
  259. data/spec/ramaze/request/thin.rb +9 -0
  260. data/spec/ramaze/session.rb +2 -1
  261. data/spec/ramaze/store/default.rb +14 -17
  262. data/spec/ramaze/template.rb +5 -7
  263. data/spec/ramaze/template/amrita2.rb +4 -1
  264. data/spec/ramaze/template/erubis.rb +2 -1
  265. data/spec/ramaze/template/ezamar.rb +2 -3
  266. data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
  267. data/spec/ramaze/template/haml.rb +2 -1
  268. data/spec/ramaze/template/liquid.rb +4 -2
  269. data/spec/ramaze/template/markaby.rb +4 -2
  270. data/spec/ramaze/template/nagoro.rb +3 -4
  271. data/spec/ramaze/template/remarkably.rb +4 -2
  272. data/spec/ramaze/template/sass.rb +3 -2
  273. data/spec/ramaze/template/xslt.rb +4 -7
  274. data/spec/ramaze/trinity/request.rb +4 -3
  275. data/spec/ramaze/trinity/session.rb +6 -4
  276. data/spec/snippets/array/put_within.rb +3 -2
  277. data/spec/snippets/divide.rb +1 -4
  278. data/spec/snippets/kernel/__dir__.rb +1 -1
  279. data/spec/snippets/kernel/acquire.rb +71 -0
  280. data/spec/snippets/kernel/constant.rb +4 -8
  281. data/spec/snippets/numeric/filesize_format.rb +1 -1
  282. data/spec/snippets/ordered_set.rb +9 -2
  283. data/spec/snippets/ramaze/caller_info.rb +3 -3
  284. data/spec/snippets/ramaze/caller_lines.rb +3 -3
  285. data/spec/snippets/string/camel_case.rb +1 -1
  286. data/spec/snippets/string/color.rb +2 -2
  287. data/spec/snippets/string/snake_case.rb +5 -1
  288. data/spec/snippets/string/unindent.rb +1 -1
  289. data/spec/snippets/struct/fill.rb +14 -15
  290. data/spec/snippets/struct/values_at.rb +15 -10
  291. data/spec/snippets/symbol/to_proc.rb +13 -0
  292. data/spec/snippets/thread/into.rb +3 -4
  293. metadata +458 -386
  294. data/doc/README.html +0 -729
  295. data/doc/changes.txt +0 -5044
  296. data/doc/changes.xml +0 -5046
  297. data/lib/proto/public/error.zmr +0 -61
  298. data/lib/proto/src/element/page.rb +0 -17
  299. data/lib/proto/src/model.rb +0 -6
  300. data/lib/proto/template/index.xhtml +0 -15
  301. data/lib/ramaze/spec/helper/layout.rb +0 -58
  302. data/lib/ramaze/spec/helper/minimal.rb +0 -23
  303. data/lib/ramaze/spec/helper/wrap.rb +0 -198
  304. data/spec/snippets/kernel/aquire.rb +0 -71
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Requester
@@ -62,7 +62,6 @@ require 'net/http'
62
62
  require 'net/https'
63
63
  require 'uri'
64
64
  require 'cgi'
65
- require 'base64'
66
65
 
67
66
 
68
67
  # Wrapper around ruby's standard net/http classes. Currently, only GET
@@ -146,8 +145,10 @@ class SimpleHttp
146
145
  # anything other than GET, for that matter.)
147
146
 
148
147
  case request
149
- when Net::HTTP::Get : sh.get
150
- when Net::HTTP::Post : sh.post
148
+ when Net::HTTP::Get
149
+ sh.get
150
+ when Net::HTTP::Post
151
+ sh.post
151
152
  else
152
153
  raise "Not a valid HTTP method for redirection: #{request.class}"
153
154
  end
@@ -201,7 +202,7 @@ class SimpleHttp
201
202
  #
202
203
 
203
204
  def basic_authentication usr, pwd
204
- str = Base64.encode64("#{usr}:#{pwd}")
205
+ str = ["#{usr}:#{pwd}"].pack("*m")
205
206
  str = "Basic #{str}"
206
207
  @request_headers["Authorization"]=str
207
208
  end
@@ -0,0 +1,6 @@
1
+ if caller
2
+ snippet = caller.grep(%r!spec/snippets/!).first.split(':').first
3
+ require File.expand_path(snippet).gsub('/spec/', '/lib/ramaze/')
4
+ end
5
+
6
+ require 'lib/ramaze/spec/helper/bacon'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'yaml/store'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  # This module serves as a namespace for all templates, it will autoload
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'amrita2/template'
@@ -22,13 +22,14 @@ module Ramaze
22
22
  # The parameters are set to @params in the controller before expansion.
23
23
 
24
24
  def transform action
25
- instance, params, file =
26
- action.instance, action.params, action.template
27
- raise_no_action(action) unless file
25
+ instance, file = action.instance, action.template
26
+
27
+ raise Ramaze::Error::NoAction,
28
+ "No Amrita2 template found for `#{action.path}' on #{action.controller}" unless file
28
29
 
29
30
  template = ::Amrita2::TemplateFile.new(file)
30
31
  out = ''
31
- instance.instance_variable_set('@params', params)
32
+ instance.instance_variable_set('@params', action.params)
32
33
  template.expand(out, instance)
33
34
  out
34
35
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'erubis'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/template/ezamar/engine'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  # an Element is almost like an Controller, however, instead
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'digest/sha1'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/template/ezamar/engine'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/template/ezamar/engine'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'haml/engine'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'liquid'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'markaby'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'nagoro'
@@ -12,9 +12,7 @@ module Ramaze
12
12
 
13
13
  ENGINES[self] = %w[ xhtml nag ]
14
14
 
15
- LISTENERS = [ :Element, :Morpher, :Include, :Instruction ]
16
-
17
- TEMPLATE = ::Nagoro::Template[LISTENERS]
15
+ PIPES = ::Nagoro::DEFAULT_PIPES.dup
18
16
 
19
17
  class << self
20
18
 
@@ -23,7 +21,7 @@ module Ramaze
23
21
  def transform action
24
22
  nagoro = wrap_compile(action)
25
23
  file = action.template || action.method
26
- nagoro.result(action.binding, file.to_s)
24
+ nagoro.result(:file => file, :binding => action.binding)
27
25
  end
28
26
 
29
27
  def wrap_compile(action, template = nil)
@@ -45,7 +43,7 @@ module Ramaze
45
43
  # and returning an instance of ::Nagoro::Template
46
44
 
47
45
  def compile(action, template)
48
- TEMPLATE.render(template)
46
+ ::Nagoro.compile(template)
49
47
  end
50
48
  end
51
49
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'remarkably/engines/html'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'sass/engine'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze::Tool
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'fileutils'
@@ -29,6 +29,11 @@ module Ramaze
29
29
  @basedir = ::Ramaze::BASEDIR / 'proto'
30
30
  @destdir = Dir.pwd / project
31
31
 
32
+ if File.directory?(@destdir)
33
+ puts "Error: #{project}/ already exists. Rename or delete directory and try again."
34
+ return
35
+ end
36
+
32
37
  puts "Creating project #{project}"
33
38
 
34
39
  FileUtils.mkdir_p(project)
@@ -41,6 +46,7 @@ module Ramaze
41
46
  create_dirs(*directories)
42
47
  copy_files(*files)
43
48
 
49
+ puts "\nStart your new ramaze app: ruby #{project}/start.rb"
44
50
  end
45
51
 
46
52
  # create the directories recursivly
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  $KCODE = 'UTF-8'
@@ -74,23 +74,16 @@ class Ramaze::Tool::Localize
74
74
  # not available, it falls back to the default language.
75
75
 
76
76
  def localize(str, locale)
77
- trans = nil
78
77
  default_language = trait[:default_language]
79
78
  dict = dictionary
79
+ dict[locale] ||= {}
80
+ dict[default_language] ||= {}
80
81
 
81
- if dict[locale] && trans = dict[locale][str]
82
- #
83
- elsif dict[default_language] && trans = dict[default_language][str]
84
- dict[locale] ||= {}
85
- dict[locale][str] = str
86
- else
87
- dict[locale] ||= {}
88
- dict[default_language] ||= {}
89
- dict[locale][str] = str
90
- dict[default_language][str] = str
91
- end
82
+ trans = dict[locale].fetch(str, dict[default_language][str])
83
+ dict[locale][str] ||= trans
84
+ dict[default_language][str] ||= trans
92
85
 
93
- trans || str
86
+ trans
94
87
  rescue Object => ex
95
88
  Ramaze::Inform.error(ex)
96
89
  str
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'yaml'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/trinity/request'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'cgi'
@@ -29,7 +29,7 @@ module Ramaze
29
29
  # first it tries to match your method with any of the HTTP parameters
30
30
  # then, in case that fails, it will relay to @request
31
31
 
32
- def method_missing meth, *args, &block
32
+ def method_missing meth, *args
33
33
  key = meth.to_s.upcase
34
34
  return env[key] if env.has_key?(key)
35
35
  super
@@ -58,6 +58,8 @@ module Ramaze
58
58
  address = address.to_s.split(',').first
59
59
  addr = IPAddr.new(address)
60
60
  LOCAL.find{|range| range.include?(addr) }
61
+ rescue ArgumentError => ex
62
+ raise ArgumentError, ex unless ex.message == 'invalid address'
61
63
  end
62
64
 
63
65
  def [](key, *rest)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  if RUBY_VERSION >= "1.9.0"
@@ -211,6 +211,12 @@ module Ramaze
211
211
  combined.inspect
212
212
  end
213
213
 
214
+ # Delete a key
215
+
216
+ def delete(key)
217
+ session[:FLASH].delete(key)
218
+ end
219
+
214
220
  private
215
221
 
216
222
  # Session.current or {}
@@ -1,11 +1,11 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze #:nodoc:
5
5
  module Version #:nodoc:
6
6
  MAJOR = 0
7
- MINOR = 2
8
- TINY = 1
7
+ MINOR = 3
8
+ TINY = 0
9
9
 
10
10
  STRING = [MAJOR, MINOR, TINY].join('.')
11
11
  end
@@ -0,0 +1,317 @@
1
+ # Bacon -- small RSpec clone.
2
+ #
3
+ # "Truth will sooner come out from error than from confusion." ---Francis Bacon
4
+
5
+ # Copyright (C) 2007 Christian Neukirchen <purl.org/net/chneukirchen>
6
+ #
7
+ # Bacon is freely distributable under the terms of an MIT-style license.
8
+ # See COPYING or http://www.opensource.org/licenses/mit-license.php.
9
+
10
+ module Bacon
11
+ VERSION = "0.2"
12
+
13
+ Counter = Hash.new(0)
14
+ ErrorLog = ""
15
+ Shared = Hash.new { |_, name|
16
+ raise NameError, "no such context: #{name.inspect}"
17
+ }
18
+
19
+ RestrictName = // unless defined? RestrictName
20
+ RestrictContext = // unless defined? RestrictContext
21
+
22
+ def self.summary_on_exit
23
+ return if Counter[:installed_summary] > 0
24
+ at_exit {
25
+ handle_summary
26
+ if $!
27
+ raise $!
28
+ elsif Counter[:errors] + Counter[:failed] > 0
29
+ exit 1
30
+ end
31
+ }
32
+ Counter[:installed_summary] += 1
33
+ end
34
+
35
+ module SpecDoxOutput
36
+ def handle_specification(name)
37
+ puts name
38
+ yield
39
+ puts
40
+ end
41
+
42
+ def handle_requirement(description)
43
+ print "- #{description}"
44
+ error = yield
45
+ puts error.empty? ? "" : " [#{error}]"
46
+ end
47
+
48
+ def handle_summary
49
+ print ErrorLog
50
+ puts "%d specifications (%d requirements), %d failures, %d errors" %
51
+ Counter.values_at(:specifications, :requirements, :failed, :errors)
52
+ end
53
+ end
54
+
55
+ module TestUnitOutput
56
+ def handle_specification(name)
57
+ yield
58
+ end
59
+
60
+ def handle_requirement(description)
61
+ error = yield
62
+ if error.empty?
63
+ print "."
64
+ else
65
+ print error[0..0]
66
+ end
67
+ end
68
+
69
+ def handle_summary
70
+ puts "", ErrorLog
71
+ puts "%d tests, %d assertions, %d failures, %d errors" %
72
+ Counter.values_at(:specifications, :requirements, :failed, :errors)
73
+ end
74
+ end
75
+
76
+ module TapOutput
77
+ def handle_specification(name)
78
+ yield
79
+ end
80
+
81
+ def handle_requirement(description)
82
+ ErrorLog.replace ""
83
+ error = yield
84
+ if error.empty?
85
+ printf "ok %-8d # %s\n" % [Counter[:specifications], description]
86
+ else
87
+ printf "not ok %-4d # %s: %s\n" %
88
+ [Counter[:specifications], description, error]
89
+ puts ErrorLog.strip.gsub(/^/, '# ')
90
+ end
91
+ end
92
+
93
+ def handle_summary
94
+ puts "1..#{Counter[:specifications]}"
95
+ puts "# %d tests, %d assertions, %d failures, %d errors" %
96
+ Counter.values_at(:specifications, :requirements, :failed, :errors)
97
+ end
98
+ end
99
+
100
+ extend SpecDoxOutput # default
101
+
102
+ class Error < RuntimeError
103
+ attr_accessor :count_as
104
+
105
+ def initialize(count_as, message)
106
+ @count_as = count_as
107
+ super message
108
+ end
109
+ end
110
+
111
+ class Context
112
+ def initialize(name, &block)
113
+ @before = []
114
+ @after = []
115
+ @name = name
116
+
117
+ return unless name =~ RestrictContext
118
+ Bacon.handle_specification(name) do
119
+ instance_eval(&block)
120
+ end
121
+ end
122
+
123
+ def before(&block); @before << block; end
124
+ def after(&block); @after << block; end
125
+
126
+ def behaves_like(*names)
127
+ names.each do |name|
128
+ instance_eval(&Shared[name])
129
+ end
130
+ end
131
+
132
+ def it(description, &block)
133
+ return unless description =~ RestrictName
134
+ Counter[:specifications] += 1
135
+ run_requirement description, block
136
+ end
137
+
138
+ def run_requirement(description, spec)
139
+ Bacon.handle_requirement description do
140
+ begin
141
+ Counter[:depth] += 1
142
+ @before.each { |block| instance_eval(&block) }
143
+ instance_eval(&spec)
144
+ @after.each { |block| instance_eval(&block) }
145
+ rescue Object => e
146
+ ErrorLog << "#{e.class}: #{e.message}\n"
147
+ e.backtrace.find_all { |line| line !~ /bin\/bacon|\/bacon\.rb:\d+/ }.
148
+ each_with_index { |line, i|
149
+ ErrorLog << "\t#{line}#{i==0 ? ": #@name - #{description}" : ""}\n"
150
+ }
151
+ ErrorLog << "\n"
152
+
153
+ if e.kind_of? Error
154
+ Counter[e.count_as] += 1
155
+ e.count_as.to_s.upcase
156
+ else
157
+ Counter[:errors] += 1
158
+ "ERROR: #{e.class}"
159
+ end
160
+ else
161
+ ""
162
+ ensure
163
+ Counter[:depth] -= 1
164
+ end
165
+ end
166
+ end
167
+
168
+ def raise?(*args, &block); block.raise?(*args); end
169
+ def throw?(*args, &block); block.throw?(*args); end
170
+ def change?(*args, &block); block.change?(*args); end
171
+ end
172
+ end
173
+
174
+
175
+ class Object
176
+ def true?; false; end
177
+ def false?; false; end
178
+ end
179
+
180
+ class TrueClass
181
+ def true?; true; end
182
+ end
183
+
184
+ class FalseClass
185
+ def false?; true; end
186
+ end
187
+
188
+ class Proc
189
+ def raise?(*exceptions)
190
+ exceptions << RuntimeError if exceptions.empty?
191
+ call
192
+
193
+ # Only to work in 1.9.0, rescue with splat doesn't work there right now
194
+ rescue Object => e
195
+ case e
196
+ when *exceptions
197
+ e
198
+ else
199
+ raise e
200
+ end
201
+ else
202
+ false
203
+ end
204
+
205
+ def throw?(sym)
206
+ catch(sym) {
207
+ call
208
+ return false
209
+ }
210
+ return true
211
+ end
212
+
213
+ def change?
214
+ pre_result = yield
215
+ called = call
216
+ post_result = yield
217
+ pre_result != post_result
218
+ end
219
+ end
220
+
221
+ class Numeric
222
+ def close?(to, delta)
223
+ (to.to_f - self).abs <= delta.to_f rescue false
224
+ end
225
+ end
226
+
227
+
228
+ class Object
229
+ def should(*args, &block)
230
+ Should.new(self).be(*args, &block)
231
+ end
232
+ end
233
+
234
+ module Kernel
235
+ private
236
+
237
+ def describe(name, &block)
238
+ Bacon::Context.new(name.to_s, &block)
239
+ end
240
+
241
+ def shared(name, &block)
242
+ Bacon::Shared[name] = block
243
+ end
244
+ end
245
+
246
+
247
+ class Should
248
+ # Kills ==, ===, =~, eql?, equal?, frozen?, instance_of?, is_a?,
249
+ # kind_of?, nil?, respond_to?, tainted?
250
+ instance_methods.each { |method|
251
+ undef_method method if method =~ /\?|^\W+$/
252
+ }
253
+
254
+ def initialize(object)
255
+ @object = object
256
+ @negated = false
257
+ end
258
+
259
+ def not(*args, &block)
260
+ @negated = !@negated
261
+
262
+ if args.empty?
263
+ self
264
+ else
265
+ be(*args, &block)
266
+ end
267
+ end
268
+
269
+ def be(*args, &block)
270
+ if args.empty?
271
+ self
272
+ else
273
+ block = args.shift unless block_given?
274
+ satisfy(*args, &block)
275
+ end
276
+ end
277
+
278
+ alias a be
279
+ alias an be
280
+
281
+ def satisfy(*args, &block)
282
+ if args.size == 1 && String === args.first
283
+ description = args.shift
284
+ else
285
+ description = ""
286
+ end
287
+
288
+ r = yield(@object, *args)
289
+ if Bacon::Counter[:depth] > 0
290
+ raise Bacon::Error.new(:failed, description) unless @negated ^ r
291
+ Bacon::Counter[:requirements] += 1
292
+ end
293
+ @negated ^ r ? r : false
294
+ end
295
+
296
+ def method_missing(name, *args, &block)
297
+ name = "#{name}?" if name.to_s =~ /\w[^?]\z/
298
+
299
+ desc = @negated ? "not " : ""
300
+ desc << @object.inspect << "." << name.to_s
301
+ desc << "(" << args.map{|x|x.inspect}.join(", ") << ") failed"
302
+
303
+ satisfy(desc) { |x|
304
+ x.__send__(name, *args, &block)
305
+ }
306
+ end
307
+
308
+ def equal(value); self == value; end
309
+ def match(value); self =~ value; end
310
+
311
+ def identical_to(value); self.equal? value; end
312
+ alias same_as identical_to
313
+
314
+ def flunk(reason="Flunked")
315
+ raise Bacon::Error.new(:failed, reason)
316
+ end
317
+ end