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
  # Extensions for Kernel
@@ -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 'pp'
@@ -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
  class Numeric
@@ -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
  Traits = Hash.new{|h,k| h[k] = {}} unless defined?(Traits)
@@ -1,13 +1,18 @@
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
- class OrderedSet
5
- instance_methods.each { |m| undef_method m unless m =~ /^__/ }
4
+ require File.join(File.dirname(__FILE__), 'blankslate')
6
5
 
6
+ class OrderedSet < BlankSlate
7
7
  def initialize(*args)
8
- @set = *args
8
+ if args.size == 1
9
+ @set = args.shift
10
+ else
11
+ @set = *args
12
+ end
13
+
9
14
  @set ||= []
10
- @set = [@set] unless Array === @set
15
+ @set = [@set] unless ::Array === @set
11
16
  @set.uniq!
12
17
  end
13
18
 
@@ -17,7 +22,7 @@ class OrderedSet
17
22
  @set.delete *args
18
23
  when '[]='
19
24
  @set.map! do |e|
20
- if Array === args.last
25
+ if ::Array === args.last
21
26
  args.last.include?(e) ? nil : e
22
27
  else
23
28
  args.last == e ? nil : e
@@ -26,6 +31,6 @@ class OrderedSet
26
31
  end
27
32
  @set.__send__(meth, *args, &block)
28
33
  ensure
29
- @set.delete nil
34
+ @set.compact! if meth == :[]=
30
35
  end
31
36
  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
  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
  # Extensions for String
@@ -1,12 +1,10 @@
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
  # Extensions for String
5
5
 
6
6
  class String
7
-
8
- {
9
- :reset => 0,
7
+ { :reset => 0,
10
8
  :bold => 1,
11
9
  :dark => 2,
12
10
  :underline => 4,
@@ -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
  # Extensions for String
@@ -0,0 +1,15 @@
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ # Extensions for String
5
+
6
+ class String
7
+ unless method_defined?(:ord)
8
+
9
+ # compatibility with Ruby 1.9
10
+
11
+ def ord
12
+ self[0]
13
+ end
14
+ end
15
+ 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
  # Extensions for String
@@ -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
  # Extensions for Struct
@@ -12,8 +12,10 @@ class Struct
12
12
 
13
13
  def self.fill(hash = {})
14
14
  instance = new
15
+ to_s = members.first.respond_to?(:to_str)
15
16
  hash.each do |key, value|
16
- next unless members.include?(key.to_s)
17
+ key = to_s ? key.to_s : key.to_sym
18
+ next unless members.include?(key)
17
19
  instance.send("#{key}=", value)
18
20
  end
19
21
  instance
@@ -1,10 +1,10 @@
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
  # Extensions for Struct
5
5
 
6
6
  class Symbol
7
- undef_method :to_int
7
+ undef_method :to_int if method_defined?(:to_int)
8
8
  end
9
9
 
10
10
  class Struct
@@ -1,17 +1,24 @@
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
  # Extensions for Symbol
5
5
 
6
6
  class Symbol
7
+ unless method_defined?(:to_proc)
7
8
 
8
- # the well-known #to_proc
9
- # creates a lambda that sends the symbol and any further arguments
10
- # to the object yielded.
11
- # [1, 2, 3].map(&:to_s) # => ['1', '2', '3']
12
- # %w[a b c].map(&:to_sym) # => [:a, :b, :c]
9
+ # Turns the symbol into a simple proc, which is especially useful for enumerations. Examples:
10
+ #
11
+ # # The same as people.collect { |p| p.name }
12
+ # people.collect(&:name)
13
+ #
14
+ # # The same as people.select { |p| p.manager? }.collect { |p| p.salary }
15
+ # people.select(&:manager?).collect(&:salary)
16
+ #
17
+ # [1, 2, 3].map(&:to_s) # => ['1', '2', '3']
18
+ # %w[a b c].map(&:to_sym) # => [:a, :b, :c]
13
19
 
14
- def to_proc
15
- lambda{|o, *args| o.send(self, *args) }
20
+ def to_proc
21
+ Proc.new{|*args| args.shift.__send__(self, *args) }
22
+ end
16
23
  end
17
24
  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
  class Thread
@@ -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 'set'
@@ -14,7 +14,7 @@ module Ramaze
14
14
  attr_accessor :thread, :interval, :map
15
15
 
16
16
  # Reload everything which falls under this regex
17
- trait :reload_glob => %r{(^\./)|#{Dir.pwd}|ramaze}
17
+ trait :reload_glob => Regexp.union(/^\.\//, Dir.pwd, 'ramaze')
18
18
 
19
19
  # Take interval for files that are going to be reloaded.
20
20
 
@@ -97,7 +97,7 @@ module Ramaze
97
97
  @map = map.compact
98
98
  end
99
99
 
100
- m = @map.grep(class_trait[:reload_glob])
100
+ @map.grep(class_trait[:reload_glob])
101
101
  end
102
102
 
103
103
  # Safe mtime
@@ -148,6 +148,7 @@ module Ramaze
148
148
  def after_safe_load_succeed(file)
149
149
  Cache.compiled.clear
150
150
  Cache.resolved.clear
151
+ Cache.action_methods.clear
151
152
  SourceReloadHooks.after_safe_load(file)
152
153
  end
153
154
 
@@ -1,27 +1,17 @@
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
- require 'ramaze/spec/helper/minimal'
5
- require 'ramaze/spec/helper/mock_http'
6
- require 'ramaze/spec/helper/simple_http'
7
- require 'ramaze/spec/helper/requester'
8
- require 'ramaze/spec/helper/browser'
9
-
10
- Spec::Runner.configure do |config|
11
- config.include MockHTTP
4
+ begin
5
+ require 'rubygems'
6
+ rescue LoadError => ex
12
7
  end
13
8
 
9
+ require 'timeout'
14
10
 
15
- if defined?(::Spec)
16
- exclude = Ramaze::Controller.class_trait[:exclude_action_modules]
17
- exclude += [Base64::Deprecated, Base64, Spec::Expectations::ObjectExpectations]
18
- exclude << Spec::Mocks::Methods if defined?(Spec::Mock::Methods)
19
- end
11
+ require 'ramaze'
12
+ require 'ramaze/spec/helper/bacon'
20
13
 
21
- # start up ramaze with a given hash of options
22
- # that will be merged with the default-options.
23
-
24
- def ramaze_start hash = {}
14
+ def ramaze(options = {})
25
15
  appdir = File.dirname(caller[0].split(':').first)
26
16
  options = {
27
17
  :template_root => appdir/:template,
@@ -32,27 +22,22 @@ def ramaze_start hash = {}
32
22
  :port => 7007,
33
23
  :host => '127.0.0.1',
34
24
  :force => true,
25
+ :sourcereload => false,
35
26
  :origin => :spec,
36
- }.merge(hash)
27
+ }.merge(options)
37
28
 
38
29
  Ramaze.start(options)
39
30
  end
40
31
 
41
- alias ramaze ramaze_start
42
-
43
- # shutdown ramaze, this is not implemeted yet
44
- # (and might never be due to limited possibilites)
45
-
46
- def browser(*args, &block)
47
- Browser.new(*args, &block)
48
- end
49
-
32
+ SPEC_REQUIRE_DEPENDENCY = {
33
+ 'sequel' => %w[sqlite3 sequel_model sequel_core]
34
+ }
50
35
 
51
36
  # require each of the following and rescue LoadError, telling you why it failed.
52
-
53
- def testcase_requires(*following)
54
- following.each do |file|
55
- require(file.to_s)
37
+ def spec_require(*following)
38
+ following << following.map{|f| SPEC_REQUIRE_DEPENDENCY[f] }
39
+ following.flatten.uniq.compact.reverse.each do |file|
40
+ require file.to_s
56
41
  end
57
42
  rescue LoadError => ex
58
43
  puts ex
@@ -61,3 +46,71 @@ rescue LoadError => ex
61
46
  puts "library and try again (if you want to use that feature later on)"
62
47
  exit
63
48
  end
49
+
50
+ def testcase_requires(*following)
51
+ warn "'testcase_requires' is being deprecated, please use 'spec_require' instead"
52
+ spec_require(*following)
53
+ end
54
+
55
+ shared "http" do
56
+ require 'ramaze/spec/helper/mock_http'
57
+ extend MockHTTP
58
+ end
59
+
60
+ shared 'browser' do
61
+ require 'ramaze/spec/helper/simple_http'
62
+ require 'ramaze/spec/helper/browser'
63
+ end
64
+
65
+ shared 'requester' do
66
+ require 'ramaze/spec/helper/requester'
67
+ end
68
+
69
+ shared 'xpath' do
70
+ behaves_like 'http'
71
+
72
+ require 'rexml/document'
73
+ require 'rexml/xpath'
74
+
75
+ include REXML
76
+
77
+ class Rack::MockResponse
78
+ def match(xpath = '*')
79
+ REXML::XPath::match(REXML::Document.new(body), xpath)
80
+ end
81
+ alias / match
82
+ alias search match
83
+
84
+ def first(xpath = '*')
85
+ REXML::XPath::first(REXML::Document.new(body), xpath)
86
+ end
87
+ alias at first
88
+
89
+ def each(xpath = '*', &block)
90
+ REXML::XPath::each(REXML::Document.new(body), xpath, &block)
91
+ end
92
+ end
93
+
94
+ def xp_match(obj, xpath = '*')
95
+ XPath::match(rexml_doc(body), xpath, &block)
96
+ end
97
+ alias xp_search xp_match
98
+
99
+ def xp_first(obj, xpath = '*')
100
+ XPath::first(rexml_doc(body), xpath, &block)
101
+ end
102
+ alias xp_at xp_first
103
+
104
+ def xp_each(obj, xpath = '*', &block)
105
+ XPath::each(rexml_doc(body), xpath, &block)
106
+ end
107
+
108
+ def rexml_doc(obj)
109
+ case obj
110
+ when REXML::Document, REXML::Element
111
+ obj
112
+ else
113
+ REXML::Document.new(obj)
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,7 @@
1
+ libdir = File.expand_path(File.join(File.dirname(__FILE__), '../../../'))
2
+ $LOAD_PATH.unshift libdir
3
+ require 'vendor/bacon'
4
+ require 'ramaze/spec/helper/pretty_output'
5
+ Bacon.extend Bacon::PrettyOutput
6
+ # Bacon.extend Bacon::TestUnitOutput
7
+ Bacon.summary_on_exit
@@ -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
  class Browser
@@ -51,7 +51,6 @@ class Browser
51
51
  hash.clear
52
52
  end
53
53
 
54
- puts "#{method.to_s.upcase} => #{@http.uri}"
55
54
  response = @http.send(method, hash).strip
56
55
  @history << @http.uri
57
56
  get_cookie
@@ -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'
@@ -0,0 +1,70 @@
1
+ module Bacon
2
+ module PrettyOutput
3
+ NAME = ''
4
+
5
+ def handle_specification(name)
6
+ NAME.replace name
7
+ yield
8
+ end
9
+
10
+ def handle_requirement(description)
11
+ error = yield
12
+
13
+ unless error.empty?
14
+ if defined?(Ramaze::Informing)
15
+ puts '', " #{NAME} -- #{description} ".center(70, '-'), ''
16
+ colors = Ramaze::Informer::COLORS
17
+
18
+ until RamazeLogger.log.empty?
19
+ tag, line = RamazeLogger.log.shift
20
+ out = "%6s | %s" % [tag.to_s, line]
21
+ puts out.send(colors[tag])
22
+ end
23
+ end
24
+
25
+ general_error
26
+ end
27
+ end
28
+
29
+ def general_error
30
+ puts "", ErrorLog
31
+ ErrorLog.scan(/^\s*(.*?):(\d+): #{NAME} - (.*?)$/) do
32
+ puts "#{ENV['EDITOR'] || 'vim'} #$1 +#$2 # #$3"
33
+ end
34
+ ErrorLog.replace ''
35
+ end
36
+
37
+ def handle_summary
38
+ puts "%d tests, %d assertions, %d failures, %d errors" %
39
+ Counter.values_at(:specifications, :requirements, :failed, :errors)
40
+ end
41
+ end
42
+ end
43
+
44
+ if defined?(Ramaze::Informing)
45
+ module Ramaze
46
+ class SpecLogger
47
+ include Ramaze::Informing
48
+ include Enumerable
49
+
50
+ attr_accessor :log
51
+
52
+ def initialize
53
+ @log = []
54
+ end
55
+
56
+ def each
57
+ @log.each{|e| yield(e) }
58
+ end
59
+
60
+ def inform(tag, str)
61
+ @log << [tag, str]
62
+ end
63
+ end
64
+ end
65
+
66
+ module Bacon::PrettyOutput
67
+ RamazeLogger = Ramaze::SpecLogger.new
68
+ Ramaze::Inform.loggers = [RamazeLogger]
69
+ end
70
+ end