ramaze 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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