merb-core 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (274) hide show
  1. data/CHANGELOG +136 -2
  2. data/CONTRIBUTORS +6 -0
  3. data/PUBLIC_CHANGELOG +38 -0
  4. data/Rakefile +38 -30
  5. data/lib/merb-core.rb +88 -23
  6. data/lib/merb-core/bootloader.rb +235 -51
  7. data/lib/merb-core/config.rb +121 -36
  8. data/lib/merb-core/controller/abstract_controller.rb +59 -36
  9. data/lib/merb-core/controller/exceptions.rb +2 -15
  10. data/lib/merb-core/controller/merb_controller.rb +44 -1
  11. data/lib/merb-core/controller/mime.rb +4 -0
  12. data/lib/merb-core/controller/mixins/controller.rb +38 -21
  13. data/lib/merb-core/controller/mixins/render.rb +44 -29
  14. data/lib/merb-core/controller/mixins/responder.rb +3 -31
  15. data/lib/merb-core/controller/template.rb +45 -21
  16. data/lib/merb-core/core_ext/kernel.rb +60 -32
  17. data/lib/merb-core/dispatch/default_exception/default_exception.rb +2 -2
  18. data/lib/merb-core/dispatch/default_exception/views/_css.html.erb +3 -1
  19. data/lib/merb-core/dispatch/default_exception/views/_javascript.html.erb +71 -67
  20. data/lib/merb-core/dispatch/default_exception/views/index.html.erb +7 -3
  21. data/lib/merb-core/dispatch/dispatcher.rb +3 -3
  22. data/lib/merb-core/dispatch/request.rb +56 -9
  23. data/lib/merb-core/dispatch/router.rb +159 -133
  24. data/lib/merb-core/dispatch/router/behavior.rb +462 -703
  25. data/lib/merb-core/dispatch/router/cached_proc.rb +3 -3
  26. data/lib/merb-core/dispatch/router/resources.rb +289 -0
  27. data/lib/merb-core/dispatch/router/route.rb +514 -294
  28. data/lib/merb-core/dispatch/session.rb +4 -2
  29. data/lib/merb-core/logger.rb +213 -202
  30. data/lib/merb-core/plugins.rb +9 -1
  31. data/lib/merb-core/rack.rb +3 -1
  32. data/lib/merb-core/rack/adapter.rb +7 -4
  33. data/lib/merb-core/rack/adapter/abstract.rb +188 -0
  34. data/lib/merb-core/rack/adapter/ebb.rb +12 -13
  35. data/lib/merb-core/rack/adapter/evented_mongrel.rb +2 -15
  36. data/lib/merb-core/rack/adapter/irb.rb +3 -2
  37. data/lib/merb-core/rack/adapter/mongrel.rb +22 -15
  38. data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +4 -16
  39. data/lib/merb-core/rack/adapter/thin.rb +21 -22
  40. data/lib/merb-core/rack/adapter/thin_turbo.rb +4 -11
  41. data/lib/merb-core/rack/adapter/webrick.rb +54 -18
  42. data/lib/merb-core/rack/application.rb +4 -4
  43. data/lib/merb-core/rack/handler/mongrel.rb +12 -13
  44. data/lib/merb-core/rack/middleware/csrf.rb +1 -1
  45. data/lib/merb-core/rack/stream_wrapper.rb +41 -0
  46. data/lib/merb-core/server.rb +157 -90
  47. data/lib/merb-core/tasks/gem_management.rb +267 -0
  48. data/lib/merb-core/tasks/merb.rb +1 -0
  49. data/lib/merb-core/tasks/merb_rake_helper.rb +48 -34
  50. data/lib/merb-core/tasks/stats.rake +1 -1
  51. data/lib/merb-core/test.rb +9 -3
  52. data/lib/merb-core/test/helpers.rb +1 -0
  53. data/lib/merb-core/test/helpers/mock_request_helper.rb +393 -0
  54. data/lib/merb-core/test/helpers/multipart_request_helper.rb +3 -2
  55. data/lib/merb-core/test/helpers/request_helper.rb +40 -372
  56. data/lib/merb-core/test/helpers/route_helper.rb +16 -2
  57. data/lib/merb-core/test/matchers.rb +1 -0
  58. data/lib/merb-core/test/matchers/controller_matchers.rb +4 -247
  59. data/lib/merb-core/test/matchers/request_matchers.rb +140 -0
  60. data/lib/merb-core/test/matchers/view_matchers.rb +22 -4
  61. data/lib/merb-core/test/run_specs.rb +118 -26
  62. data/lib/merb-core/test/test_ext/rspec.rb +181 -0
  63. data/lib/merb-core/version.rb +1 -9
  64. metadata +10 -342
  65. data/docs/bootloading.dox +0 -58
  66. data/docs/documentation_standards +0 -40
  67. data/docs/merb-core-call-stack-diagram.mmap +0 -0
  68. data/docs/merb-core-call-stack-diagram.pdf +0 -0
  69. data/docs/merb-core-call-stack-diagram.png +0 -0
  70. data/docs/new_render_api +0 -51
  71. data/lib/merb-core/vendor/facets.rb +0 -2
  72. data/lib/merb-core/vendor/facets/dictionary.rb +0 -433
  73. data/lib/merb-core/vendor/facets/inflect.rb +0 -342
  74. data/spec/private/config/adapter_spec.rb +0 -32
  75. data/spec/private/config/config_spec.rb +0 -202
  76. data/spec/private/config/environment_spec.rb +0 -13
  77. data/spec/private/config/merb_spec.rb +0 -34
  78. data/spec/private/config/spec_helper.rb +0 -1
  79. data/spec/private/core_ext/kernel_spec.rb +0 -159
  80. data/spec/private/dispatch/bootloader_spec.rb +0 -24
  81. data/spec/private/dispatch/fixture/app/controllers/application.rb +0 -4
  82. data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +0 -25
  83. data/spec/private/dispatch/fixture/app/controllers/foo.rb +0 -19
  84. data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +0 -8
  85. data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +0 -37
  86. data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +0 -216
  87. data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +0 -38
  88. data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +0 -40
  89. data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
  90. data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +0 -11
  91. data/spec/private/dispatch/fixture/config/black_hole.rb +0 -12
  92. data/spec/private/dispatch/fixture/config/environments/development.rb +0 -6
  93. data/spec/private/dispatch/fixture/config/environments/production.rb +0 -5
  94. data/spec/private/dispatch/fixture/config/environments/test.rb +0 -6
  95. data/spec/private/dispatch/fixture/config/init.rb +0 -45
  96. data/spec/private/dispatch/fixture/config/rack.rb +0 -11
  97. data/spec/private/dispatch/fixture/config/router.rb +0 -35
  98. data/spec/private/dispatch/fixture/log/merb_test.log +0 -8839
  99. data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
  100. data/spec/private/dispatch/fixture/public/merb.fcgi +0 -4
  101. data/spec/private/dispatch/fixture/public/stylesheets/master.css +0 -119
  102. data/spec/private/dispatch/route_params_spec.rb +0 -23
  103. data/spec/private/dispatch/spec_helper.rb +0 -1
  104. data/spec/private/router/behavior_spec.rb +0 -60
  105. data/spec/private/router/fixture/log/merb_test.log +0 -35
  106. data/spec/private/router/route_spec.rb +0 -418
  107. data/spec/private/router/router_spec.rb +0 -183
  108. data/spec/private/vendor/facets/plural_spec.rb +0 -564
  109. data/spec/private/vendor/facets/singular_spec.rb +0 -489
  110. data/spec/public/DEFINITIONS +0 -11
  111. data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +0 -1
  112. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +0 -1
  113. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +0 -1
  114. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +0 -1
  115. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +0 -1
  116. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +0 -1
  117. data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +0 -1
  118. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +0 -1
  119. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +0 -1
  120. data/spec/public/abstract_controller/controllers/cousins.rb +0 -41
  121. data/spec/public/abstract_controller/controllers/display.rb +0 -60
  122. data/spec/public/abstract_controller/controllers/filters.rb +0 -260
  123. data/spec/public/abstract_controller/controllers/helpers.rb +0 -41
  124. data/spec/public/abstract_controller/controllers/partial.rb +0 -121
  125. data/spec/public/abstract_controller/controllers/render.rb +0 -113
  126. data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +0 -1
  127. data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +0 -1
  128. data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +0 -1
  129. data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +0 -1
  130. data/spec/public/abstract_controller/controllers/views/layout/alt.erb +0 -1
  131. data/spec/public/abstract_controller/controllers/views/layout/custom.erb +0 -1
  132. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +0 -1
  133. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +0 -1
  134. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +0 -1
  135. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
  136. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +0 -1
  137. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +0 -1
  138. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +0 -1
  139. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +0 -1
  140. data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +0 -1
  141. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +0 -1
  142. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +0 -1
  143. data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +0 -1
  144. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +0 -1
  145. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +0 -1
  146. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +0 -1
  147. data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +0 -1
  148. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +0 -1
  149. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +0 -1
  150. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +0 -1
  151. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +0 -1
  152. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +0 -1
  153. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +0 -1
  154. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +0 -1
  155. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +0 -1
  156. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +0 -1
  157. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +0 -1
  158. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +0 -1
  159. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +0 -1
  160. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +0 -1
  161. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +0 -1
  162. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +0 -1
  163. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +0 -1
  164. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +0 -1
  165. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +0 -1
  166. data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +0 -1
  167. data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +0 -1
  168. data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +0 -1
  169. data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
  170. data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +0 -1
  171. data/spec/public/abstract_controller/display_spec.rb +0 -37
  172. data/spec/public/abstract_controller/filter_spec.rb +0 -136
  173. data/spec/public/abstract_controller/helper_spec.rb +0 -21
  174. data/spec/public/abstract_controller/partial_spec.rb +0 -61
  175. data/spec/public/abstract_controller/render_spec.rb +0 -90
  176. data/spec/public/abstract_controller/spec_helper.rb +0 -31
  177. data/spec/public/boot_loader/boot_loader_spec.rb +0 -33
  178. data/spec/public/boot_loader/spec_helper.rb +0 -1
  179. data/spec/public/controller/authentication_spec.rb +0 -174
  180. data/spec/public/controller/base_spec.rb +0 -88
  181. data/spec/public/controller/conditional_get_spec.rb +0 -100
  182. data/spec/public/controller/config/init.rb +0 -6
  183. data/spec/public/controller/controllers/authentication.rb +0 -74
  184. data/spec/public/controller/controllers/base.rb +0 -65
  185. data/spec/public/controller/controllers/conditional_get.rb +0 -35
  186. data/spec/public/controller/controllers/cookies.rb +0 -36
  187. data/spec/public/controller/controllers/dispatcher.rb +0 -35
  188. data/spec/public/controller/controllers/display.rb +0 -118
  189. data/spec/public/controller/controllers/redirect.rb +0 -36
  190. data/spec/public/controller/controllers/responder.rb +0 -93
  191. data/spec/public/controller/controllers/url.rb +0 -7
  192. data/spec/public/controller/controllers/views/layout/custom.html.erb +0 -1
  193. data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +0 -1
  194. data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +0 -1
  195. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +0 -1
  196. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +0 -1
  197. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +0 -1
  198. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +0 -1
  199. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +0 -1
  200. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +0 -1
  201. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +0 -1
  202. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +0 -1
  203. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +0 -1
  204. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +0 -1
  205. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +0 -1
  206. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +0 -1
  207. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +0 -1
  208. data/spec/public/controller/cookies_spec.rb +0 -95
  209. data/spec/public/controller/dispatcher_spec.rb +0 -410
  210. data/spec/public/controller/display_spec.rb +0 -84
  211. data/spec/public/controller/redirect_spec.rb +0 -33
  212. data/spec/public/controller/responder_spec.rb +0 -169
  213. data/spec/public/controller/spec_helper.rb +0 -13
  214. data/spec/public/controller/url_spec.rb +0 -255
  215. data/spec/public/core/merb_core_spec.rb +0 -45
  216. data/spec/public/core_ext/fixtures/core_ext_dependency.rb +0 -2
  217. data/spec/public/core_ext/kernel_spec.rb +0 -88
  218. data/spec/public/core_ext/spec_helper.rb +0 -1
  219. data/spec/public/directory_structure/directory/app/controllers/application.rb +0 -3
  220. data/spec/public/directory_structure/directory/app/controllers/base.rb +0 -13
  221. data/spec/public/directory_structure/directory/app/controllers/custom.rb +0 -19
  222. data/spec/public/directory_structure/directory/app/views/base/template.html.erb +0 -1
  223. data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +0 -1
  224. data/spec/public/directory_structure/directory/config/router.rb +0 -3
  225. data/spec/public/directory_structure/directory/log/merb_test.log +0 -4588
  226. data/spec/public/directory_structure/directory_spec.rb +0 -43
  227. data/spec/public/logger/logger_spec.rb +0 -181
  228. data/spec/public/logger/spec_helper.rb +0 -1
  229. data/spec/public/rack/conditinal_get_middleware_spec.rb +0 -127
  230. data/spec/public/rack/csrf_middleware_spec.rb +0 -70
  231. data/spec/public/rack/rack_middleware_spec.rb +0 -99
  232. data/spec/public/rack/shared_example_groups.rb +0 -35
  233. data/spec/public/reloading/directory/app/controllers/application.rb +0 -3
  234. data/spec/public/reloading/directory/app/controllers/reload.rb +0 -6
  235. data/spec/public/reloading/directory/config/init.rb +0 -2
  236. data/spec/public/reloading/directory/log/merb_test.log +0 -288231
  237. data/spec/public/reloading/reload_spec.rb +0 -103
  238. data/spec/public/request/multipart_spec.rb +0 -41
  239. data/spec/public/request/request_spec.rb +0 -250
  240. data/spec/public/router/default_spec.rb +0 -21
  241. data/spec/public/router/deferred_spec.rb +0 -22
  242. data/spec/public/router/fixation_spec.rb +0 -49
  243. data/spec/public/router/fixture/log/merb_test.log +0 -524
  244. data/spec/public/router/namespace_spec.rb +0 -113
  245. data/spec/public/router/nested_matches_spec.rb +0 -97
  246. data/spec/public/router/nested_resources_spec.rb +0 -41
  247. data/spec/public/router/resource_spec.rb +0 -37
  248. data/spec/public/router/resources_spec.rb +0 -82
  249. data/spec/public/router/spec_helper.rb +0 -90
  250. data/spec/public/router/special_spec.rb +0 -61
  251. data/spec/public/router/string_spec.rb +0 -61
  252. data/spec/public/session/controllers/sessions.rb +0 -56
  253. data/spec/public/session/cookie_session_spec.rb +0 -73
  254. data/spec/public/session/memcached_session_spec.rb +0 -31
  255. data/spec/public/session/memory_session_spec.rb +0 -28
  256. data/spec/public/session/multiple_sessions_spec.rb +0 -74
  257. data/spec/public/session/no_session_spec.rb +0 -12
  258. data/spec/public/session/session_spec.rb +0 -106
  259. data/spec/public/template/template_spec.rb +0 -104
  260. data/spec/public/template/templates/error.html.erb +0 -2
  261. data/spec/public/template/templates/template.html.erb +0 -1
  262. data/spec/public/template/templates/template.html.myt +0 -1
  263. data/spec/public/test/controller_matchers_spec.rb +0 -412
  264. data/spec/public/test/controllers/controller_assertion_mock.rb +0 -7
  265. data/spec/public/test/controllers/dispatch_controller.rb +0 -11
  266. data/spec/public/test/controllers/spec_helper_controller.rb +0 -39
  267. data/spec/public/test/multipart_request_helper_spec.rb +0 -159
  268. data/spec/public/test/multipart_upload_text_file.txt +0 -1
  269. data/spec/public/test/request_helper_spec.rb +0 -269
  270. data/spec/public/test/route_helper_spec.rb +0 -78
  271. data/spec/public/test/route_matchers_spec.rb +0 -166
  272. data/spec/public/test/view_helper_spec.rb +0 -96
  273. data/spec/public/test/view_matchers_spec.rb +0 -183
  274. data/spec/spec_helper.rb +0 -121
@@ -1,489 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
-
3
- describe English::Inflect, "#singular" do
4
- # ==== exceptional cases
5
-
6
- it "singularizes equipment => equipment" do
7
- "equipment".singular.should == "equipment"
8
- end
9
-
10
- it "singularizes information => information" do
11
- "information".singular.should == "information"
12
- end
13
-
14
- it "singularizes money => money" do
15
- "money".singular.should == "money"
16
- end
17
-
18
- it "singularizes species => species" do
19
- "species".singular.should == "species"
20
- end
21
-
22
- it "singularizes series => series" do
23
- "series".singular.should == "series"
24
- end
25
-
26
- it "singularizes fish => fish" do
27
- "fish".singular.should == "fish"
28
- end
29
-
30
- it "singularizes sheep => sheep" do
31
- "sheep".singular.should == "sheep"
32
- end
33
-
34
- it "singularizes news => news" do
35
- "news".singular.should == "news"
36
- end
37
-
38
- it "singularizes rain => rain" do
39
- "rain".singular.should == "rain"
40
- end
41
-
42
- it "singularizes milk => milk" do
43
- "milk".singular.should == "milk"
44
- end
45
-
46
- it "singularizes moose => moose" do
47
- "moose".singular.should == "moose"
48
- end
49
-
50
- it "singularizes hovercraft => hovercraft" do
51
- "hovercraft".singular.should == "hovercraft"
52
- end
53
-
54
- it "singularizes cactus => cacti" do
55
- "cacti".singular.should == "cactus"
56
- end
57
-
58
- it "singularizes thesauri => thesaurus" do
59
- "thesauri".singular.should == "thesaurus"
60
- end
61
-
62
- it "singularizes matrices => matrix" do
63
- "matrices".singular.should == "matrix"
64
- end
65
-
66
- it "singularizes Swiss => Swiss" do
67
- "Swiss".singular.should == "Swiss"
68
- end
69
-
70
- it "singularizes lives => life" do
71
- "lives".singular.should == "life"
72
- end
73
-
74
- it "singularizes wives => wife" do
75
- "wives".singular.should == "wife"
76
- end
77
-
78
- it "singularizes geese => goose" do
79
- "geese".singular.should == "goose"
80
- end
81
-
82
- it "singularizes criteria => criterion" do
83
- "criteria".singular.should == "criterion"
84
- end
85
-
86
- it "singularizes aliases => alias" do
87
- "aliases".singular.should == "alias"
88
- end
89
-
90
- it "singularizes statuses => status" do
91
- "statuses".singular.should == "status"
92
- end
93
-
94
- it "singularizes axes => axis" do
95
- "axes".singular.should == "axis"
96
- end
97
-
98
- it "singularizes crises => crisis" do
99
- "crises".singular.should == "crisis"
100
- end
101
-
102
- it "singularizes testes => testis" do
103
- "testes".singular.should == "testis"
104
- end
105
-
106
- it "singularizes children => child" do
107
- "children".singular.should == "child"
108
- end
109
-
110
- it "singularizes people => person" do
111
- "people".singular.should == "person"
112
- end
113
-
114
- it "singularizes potatoes => potato" do
115
- "potatoes".singular.should == "potato"
116
- end
117
-
118
- it "singularizes tomatoes => tomato" do
119
- "tomatoes".singular.should == "tomato"
120
- end
121
-
122
- it "singularizes buffaloes => buffalo" do
123
- "buffaloes".singular.should == "buffalo"
124
- end
125
-
126
- it "singularizes torpedoes => torpedo" do
127
- "torpedoes".singular.should == "torpedo"
128
- end
129
-
130
- it "singularizes quizzes => quiz" do
131
- "quizzes".singular.should == "quiz"
132
- end
133
-
134
- # used to be a bug exposed by this specs suite,
135
- # this MUST pass or we've got regression
136
- it "singularizes vertices => vertex" do
137
- "vertices".singular.should == "vertex"
138
- end
139
-
140
- it "singularizes indices => index" do
141
- "indices".singular.should == "index"
142
- end
143
-
144
- it "singularizes oxen => ox" do
145
- "oxen".singular.should == "ox"
146
- end
147
-
148
- it "singularizes mice => mouse" do
149
- "mice".singular.should == "mouse"
150
- end
151
-
152
- it "singularizes lice => louse" do
153
- "lice".singular.should == "louse"
154
- end
155
-
156
- it "singularizes theses => thesis" do
157
- "theses".singular.should == "thesis"
158
- end
159
-
160
- it "singularizes thieves => thief" do
161
- "thieves".singular.should == "thief"
162
- end
163
-
164
- it "singularizes analyses => analysis" do
165
- "analyses".singular.should == "analysis"
166
- end
167
-
168
- it "singularizes octopi => octopus" do
169
- "octopi".singular.should == "octopus"
170
- end
171
-
172
- it "singularizes grass => grass" do
173
- "grass".singular.should == "grass"
174
- end
175
-
176
- it "singularizes phenomena => phenomenon" do
177
- "phenomena".singular.should == "phenomenon"
178
- end
179
-
180
-
181
-
182
-
183
-
184
- # ==== bugs, typos and reported issues
185
-
186
-
187
-
188
-
189
-
190
- # ==== rules
191
-
192
- it "singularizes forums => forum" do
193
- "forums".singular.should == "forum"
194
- end
195
-
196
- it "singularizes hives => hive" do
197
- "hives".singular.should == "hive"
198
- end
199
-
200
- it "singularizes athletes => athlete" do
201
- "athletes".singular.should == "athlete"
202
- end
203
-
204
- it "singularizes dwarves => dwarf" do
205
- "dwarves".singular.should == "dwarf"
206
- end
207
-
208
- it "singularizes heroes => hero" do
209
- "heroes".singular.should == "hero"
210
- end
211
-
212
- it "singularizes zeroes => zero" do
213
- "zeroes".singular.should == "zero"
214
- end
215
-
216
- it "singularizes men => man" do
217
- "men".singular.should == "man"
218
- end
219
-
220
- it "singularizes women => woman" do
221
- "women".singular.should == "woman"
222
- end
223
-
224
- it "singularizes sportsmen => sportsman" do
225
- "sportsmen".singular.should == "sportsman"
226
- end
227
-
228
- it "singularizes branches => branch" do
229
- "branches".singular.should == "branch"
230
- end
231
-
232
- it "singularizes crunches => crunch" do
233
- "crunches".singular.should == "crunch"
234
- end
235
-
236
- it "singularizes trashes => trash" do
237
- "trashes".singular.should == "trash"
238
- end
239
-
240
- it "singularizes mashes => mash" do
241
- "mashes".singular.should == "mash"
242
- end
243
-
244
- it "singularizes crosses => cross" do
245
- "crosses".singular.should == "cross"
246
- end
247
-
248
- it "singularizes errata => erratum" do
249
- "errata".singular.should == "erratum"
250
- end
251
-
252
- # FIXME: add -ia => -ium cases
253
-
254
- # FIXME: add -ra => -rum cases
255
-
256
- it "singularizes rays => ray" do
257
- "rays".singular.should == "ray"
258
- end
259
-
260
- it "singularizes sprays => spray" do
261
- "sprays".singular.should == "spray"
262
- end
263
-
264
- # Merriam-Webster dictionary says
265
- # preys is correct, too.
266
- it "singularizes preys => prey" do
267
- "preys".singular.should == "prey"
268
- end
269
-
270
- it "singularizes toys => toy" do
271
- "toys".singular.should == "toy"
272
- end
273
-
274
- it "singularizes joys => joy" do
275
- "joys".singular.should == "joy"
276
- end
277
-
278
- it "singularizes buys => buy" do
279
- "buys".singular.should == "buy"
280
- end
281
-
282
- it "singularizes guys => guy" do
283
- "guys".singular.should == "guy"
284
- end
285
-
286
- it "singularizes cries => cry" do
287
- "cries".singular.should == "cry"
288
- end
289
-
290
- it "singularizes flies => fly" do
291
- "flies".singular.should == "fly"
292
- end
293
-
294
- it "singularizes foxes => fox" do
295
- "foxes".singular.should == "fox"
296
- end
297
-
298
- it "singularizes elves => elf" do
299
- "elves".singular.should == "elf"
300
- end
301
-
302
- it "singularizes shelves => shelf" do
303
- "shelves".singular.should == "shelf"
304
- end
305
-
306
- it "singularizes pluses => plus" do
307
- "pluses".singular.should == "plus"
308
- end
309
-
310
- it "singularizes cats => cat" do
311
- "cats".singular.should == "cat"
312
- end
313
-
314
- it "singularizes rats => rat" do
315
- "rats".singular.should == "rat"
316
- end
317
-
318
- it "singularizes roses => rose" do
319
- "roses".singular.should == "rose"
320
- end
321
-
322
- it "singularizes projects => project" do
323
- "projects".singular.should == "project"
324
- end
325
-
326
- it "singularizes posts => post" do
327
- "posts".singular.should == "post"
328
- end
329
-
330
- it "singularizes articles => article" do
331
- "articles".singular.should == "article"
332
- end
333
-
334
- it "singularizes locations => location" do
335
- "locations".singular.should == "location"
336
- end
337
-
338
- it "singularizes friends => friend" do
339
- "friends".singular.should == "friend"
340
- end
341
-
342
- it "singularizes links => link" do
343
- "links".singular.should == "link"
344
- end
345
-
346
- it "singularizes urls => url" do
347
- "urls".singular.should == "url"
348
- end
349
-
350
- it "singularizes accounts => account" do
351
- "accounts".singular.should == "account"
352
- end
353
-
354
- it "singularizes servers => server" do
355
- "servers".singular.should == "server"
356
- end
357
-
358
- it "singularizes fruits => fruit" do
359
- "fruits".singular.should == "fruit"
360
- end
361
-
362
- it "singularizes maps => map" do
363
- "maps".singular.should == "map"
364
- end
365
-
366
- it "singularizes incomes => income" do
367
- "incomes".singular.should == "income"
368
- end
369
-
370
- it "singularizes pings => ping" do
371
- "pings".singular.should == "ping"
372
- end
373
-
374
- it "singularizes events => event" do
375
- "events".singular.should == "event"
376
- end
377
-
378
- it "singularizes proofs => proof" do
379
- "proofs".singular.should == "proof"
380
- end
381
-
382
- it "singularizes typos => typo" do
383
- "typos".singular.should == "typo"
384
- end
385
-
386
- it "singularizes attachments => attachment" do
387
- "attachments".singular.should == "attachment"
388
- end
389
-
390
- it "singularizes downloads => download" do
391
- "downloads".singular.should == "download"
392
- end
393
-
394
- it "singularizes assets => asset" do
395
- "assets".singular.should == "asset"
396
- end
397
-
398
- it "singularizes jobs => job" do
399
- "jobs".singular.should == "job"
400
- end
401
-
402
- it "singularizes cities => city" do
403
- "cities".singular.should == "city"
404
- end
405
-
406
- it "singularizes packages => package" do
407
- "packages".singular.should == "package"
408
- end
409
-
410
- it "singularizes commits => commit" do
411
- "commits".singular.should == "commit"
412
- end
413
-
414
- it "singularizes versions => version" do
415
- "versions".singular.should == "version"
416
- end
417
-
418
- it "singularizes documents => document" do
419
- "documents".singular.should == "document"
420
- end
421
-
422
- it "singularizes editions => edition" do
423
- "editions".singular.should == "edition"
424
- end
425
-
426
- it "singularizes movies => movie" do
427
- "movies".singular.should == "movie"
428
- end
429
-
430
- it "singularizes songs => song" do
431
- "songs".singular.should == "song"
432
- end
433
-
434
- it "singularizes invoices => invoice" do
435
- "invoices".singular.should == "invoice"
436
- end
437
-
438
- it "singularizes products => product" do
439
- "products".singular.should == "product"
440
- end
441
-
442
- it "singularizes books => book" do
443
- "books".singular.should == "book"
444
- end
445
-
446
- it "singularizes tickets => ticket" do
447
- "tickets".singular.should == "ticket"
448
- end
449
-
450
- it "singularizes games => game" do
451
- "games".singular.should == "game"
452
- end
453
-
454
- it "singularizes tournaments => tournament" do
455
- "tournaments".singular.should == "tournament"
456
- end
457
-
458
- it "singularizes prizes => prize" do
459
- "prizes".singular.should == "prize"
460
- end
461
-
462
- it "singularizes prices => price" do
463
- "prices".singular.should == "price"
464
- end
465
-
466
- it "singularizes installations => installation" do
467
- "installations".singular.should == "installation"
468
- end
469
-
470
- it "singularizes dates => date" do
471
- "dates".singular.should == "date"
472
- end
473
-
474
- it "singularizes schedules => schedule" do
475
- "schedules".singular.should == "schedule"
476
- end
477
-
478
- it "singularizes arenas => arena" do
479
- "arenas".singular.should == "arena"
480
- end
481
-
482
- it "singularizes spams => spam" do
483
- "spams".singular.should == "spam"
484
- end
485
-
486
- it "singularizes rice => rice" do
487
- "rice".singular.should == "rice"
488
- end
489
- end