middleman 0.10.13 → 0.10.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2745) hide show
  1. data/.document +0 -0
  2. data/.gitignore +23 -1
  3. data/Gemfile +17 -0
  4. data/LICENSE +0 -0
  5. data/README.rdoc +0 -0
  6. data/Rakefile +4 -0
  7. data/VERSION +1 -1
  8. data/bin/mm-init +1 -0
  9. data/deps.rip +0 -0
  10. data/lib/middleman.rb +2 -0
  11. data/lib/middleman/base.rb +35 -7
  12. data/lib/middleman/builder.rb +0 -0
  13. data/lib/middleman/config.ru +0 -0
  14. data/lib/middleman/fastimage.rb +0 -0
  15. data/lib/middleman/features/automatic_image_sizes.rb +0 -0
  16. data/lib/middleman/features/cache_buster.rb +0 -0
  17. data/lib/middleman/features/growl.rb +0 -0
  18. data/lib/middleman/features/maruku.rb +1 -1
  19. data/lib/middleman/features/minify_css.rb +0 -0
  20. data/lib/middleman/features/minify_javascript.rb +0 -0
  21. data/lib/middleman/features/relative_assets.rb +0 -0
  22. data/lib/middleman/features/slickmap.rb +0 -0
  23. data/lib/middleman/features/smush_pngs.rb +0 -0
  24. data/lib/middleman/features/sprockets.rb +0 -0
  25. data/lib/middleman/haml.rb +3 -2
  26. data/lib/middleman/helpers.rb +0 -0
  27. data/lib/middleman/rack/sprockets+ruby19.rb +0 -0
  28. data/lib/middleman/rack/sprockets.rb +0 -0
  29. data/lib/middleman/rack/static.rb +0 -0
  30. data/lib/middleman/sass.rb +1 -1
  31. data/lib/middleman/template/init.rbt +0 -0
  32. data/lib/middleman/template/views/index.html.haml +0 -0
  33. data/lib/middleman/template/views/layout.haml +0 -0
  34. data/lib/middleman/template/views/stylesheets/site.css.sass +0 -0
  35. data/lib/middleman/templater+dynamic_renderer.rb +0 -0
  36. data/middleman.gemspec +2685 -3
  37. data/spec/auto_image_sizes.rb +0 -1
  38. data/spec/builder_spec.rb +0 -0
  39. data/spec/cache_buster_spec.rb +0 -1
  40. data/spec/fixtures/sample/init.rb +0 -0
  41. data/spec/fixtures/sample/public/images/blank.gif +0 -0
  42. data/spec/fixtures/sample/public/javascripts/to-be-included.js +0 -0
  43. data/spec/fixtures/sample/public/static.html +0 -0
  44. data/spec/fixtures/sample/public/stylesheets/auto-css.css +0 -0
  45. data/spec/fixtures/sample/public/stylesheets/static.css +0 -0
  46. data/spec/fixtures/sample/public/stylesheets/sub1/auto-css.css +0 -0
  47. data/spec/fixtures/sample/public/stylesheets/sub1/sub2/auto-css.css +0 -0
  48. data/spec/fixtures/sample/views/_partial.haml +0 -0
  49. data/spec/fixtures/sample/views/auto-css.html.haml +0 -0
  50. data/spec/fixtures/sample/views/auto-image-sizes.html.haml +0 -0
  51. data/spec/fixtures/sample/views/custom-layout.html.haml +1 -0
  52. data/spec/fixtures/sample/views/custom.haml +5 -0
  53. data/spec/fixtures/sample/views/index.html.haml +0 -0
  54. data/spec/fixtures/sample/views/inline-js.html.haml +0 -0
  55. data/spec/fixtures/sample/views/javascripts/empty-with-include.js +0 -0
  56. data/spec/fixtures/sample/views/layout.haml +0 -0
  57. data/spec/fixtures/sample/views/maruku.html.maruku +0 -0
  58. data/spec/fixtures/sample/views/page-classes.html.haml +0 -0
  59. data/spec/fixtures/sample/views/services/index.html.haml +0 -0
  60. data/spec/fixtures/sample/views/stylesheets/relative_assets.css.sass +0 -0
  61. data/spec/fixtures/sample/views/stylesheets/site.css.sass +0 -0
  62. data/spec/generator_spec.rb +0 -0
  63. data/spec/helpers_spec.rb +0 -1
  64. data/spec/minify_javascript_spec.rb +0 -1
  65. data/spec/page_alias_and_layouts_spec.rb +22 -0
  66. data/spec/relative_assets_spec.rb +0 -1
  67. data/spec/spec_helper.rb +2 -3
  68. data/vendor/gems/cache/builder-2.1.2.gem +0 -0
  69. data/vendor/gems/cache/compass-0.8.17.gem +0 -0
  70. data/vendor/gems/cache/configuration-1.1.0.gem +0 -0
  71. data/vendor/gems/cache/cucumber-0.4.4.gem +0 -0
  72. data/vendor/gems/cache/daemons-1.0.10.gem +0 -0
  73. data/vendor/gems/cache/diff-lcs-1.1.2.gem +0 -0
  74. data/vendor/gems/cache/eventmachine-0.12.10.gem +0 -0
  75. data/vendor/gems/cache/extlib-0.9.13.gem +0 -0
  76. data/vendor/gems/cache/haml-2.2.13.gem +0 -0
  77. data/vendor/gems/cache/highline-1.5.1.gem +0 -0
  78. data/vendor/gems/cache/json-1.2.0.gem +0 -0
  79. data/vendor/gems/cache/launchy-0.3.3.gem +0 -0
  80. data/vendor/gems/cache/polyglot-0.2.9.gem +0 -0
  81. data/vendor/gems/cache/rack-1.0.1.gem +0 -0
  82. data/vendor/gems/cache/rack-test-0.5.1.gem +0 -0
  83. data/vendor/gems/cache/rake-0.8.7.gem +0 -0
  84. data/vendor/gems/cache/rdoc-2.4.3.gem +0 -0
  85. data/vendor/gems/cache/rspec-1.2.9.gem +0 -0
  86. data/vendor/gems/cache/sdoc-0.2.14.1.gem +0 -0
  87. data/vendor/gems/cache/shotgun-0.4.gem +0 -0
  88. data/vendor/gems/cache/sinatra-0.9.4.gem +0 -0
  89. data/vendor/gems/cache/sinatra-content-for-0.2.gem +0 -0
  90. data/vendor/gems/cache/sprockets-1.0.2.gem +0 -0
  91. data/vendor/gems/cache/templater-1.0.0.gem +0 -0
  92. data/vendor/gems/cache/term-ansicolor-1.0.4.gem +0 -0
  93. data/vendor/gems/cache/thin-1.2.5.gem +0 -0
  94. data/vendor/gems/cache/treetop-1.4.2.gem +0 -0
  95. data/vendor/gems/cache/yui-compressor-0.9.1.gem +0 -0
  96. data/vendor/gems/environment.rb +205 -0
  97. data/vendor/gems/gems/builder-2.1.2/CHANGES +85 -0
  98. data/vendor/gems/gems/builder-2.1.2/README +210 -0
  99. data/vendor/gems/gems/builder-2.1.2/Rakefile +263 -0
  100. data/vendor/gems/gems/builder-2.1.2/doc/releases/builder-1.2.4.rdoc +31 -0
  101. data/vendor/gems/gems/builder-2.1.2/doc/releases/builder-2.0.0.rdoc +46 -0
  102. data/vendor/gems/gems/builder-2.1.2/doc/releases/builder-2.1.1.rdoc +58 -0
  103. data/vendor/gems/gems/builder-2.1.2/lib/blankslate.rb +113 -0
  104. data/vendor/gems/gems/builder-2.1.2/lib/builder.rb +13 -0
  105. data/vendor/gems/gems/builder-2.1.2/lib/builder/blankslate.rb +20 -0
  106. data/vendor/gems/gems/builder-2.1.2/lib/builder/xchar.rb +115 -0
  107. data/vendor/gems/gems/builder-2.1.2/lib/builder/xmlbase.rb +139 -0
  108. data/vendor/gems/gems/builder-2.1.2/lib/builder/xmlevents.rb +63 -0
  109. data/vendor/gems/gems/builder-2.1.2/lib/builder/xmlmarkup.rb +328 -0
  110. data/vendor/gems/gems/builder-2.1.2/scripts/publish.rb +17 -0
  111. data/vendor/gems/gems/builder-2.1.2/test/performance.rb +30 -0
  112. data/vendor/gems/gems/builder-2.1.2/test/preload.rb +29 -0
  113. data/vendor/gems/gems/builder-2.1.2/test/test_xchar.rb +37 -0
  114. data/vendor/gems/gems/builder-2.1.2/test/testblankslate.rb +183 -0
  115. data/vendor/gems/gems/builder-2.1.2/test/testeventbuilder.rb +133 -0
  116. data/vendor/gems/gems/builder-2.1.2/test/testmarkupbuilder.rb +449 -0
  117. data/vendor/gems/gems/compass-0.8.17/CHANGELOG.markdown +557 -0
  118. data/vendor/gems/gems/compass-0.8.17/LICENSE.markdown +29 -0
  119. data/vendor/gems/gems/compass-0.8.17/README.markdown +44 -0
  120. data/vendor/gems/gems/compass-0.8.17/REVISION +1 -0
  121. data/vendor/gems/gems/compass-0.8.17/Rakefile +127 -0
  122. data/vendor/gems/gems/compass-0.8.17/VERSION.yml +4 -0
  123. data/vendor/gems/gems/compass-0.8.17/bin/compass +8 -0
  124. data/vendor/gems/gems/compass-0.8.17/deps.rip +1 -0
  125. data/vendor/gems/gems/compass-0.8.17/examples/README.markdown +4 -0
  126. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/config.rb +7 -0
  127. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/images/grid.png +0 -0
  128. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/index.html.haml +85 -0
  129. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/parts/elements.html.haml +282 -0
  130. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/parts/forms.html.haml +190 -0
  131. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/parts/grid.html.haml +274 -0
  132. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/parts/test-small.jpg +0 -0
  133. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/parts/test.jpg +0 -0
  134. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/parts/valid.png +0 -0
  135. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/src/ie.sass +3 -0
  136. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/src/images/grid.png +0 -0
  137. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/src/print.sass +3 -0
  138. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_default/src/screen.sass +8 -0
  139. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/config.rb +8 -0
  140. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/buttons/cross.png +0 -0
  141. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/buttons/key.png +0 -0
  142. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/buttons/tick.png +0 -0
  143. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/grid.png +0 -0
  144. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/doc.png +0 -0
  145. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/email.png +0 -0
  146. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/external.png +0 -0
  147. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/feed.png +0 -0
  148. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/im.png +0 -0
  149. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/pdf.png +0 -0
  150. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/visited.png +0 -0
  151. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/link_icons/xls.png +0 -0
  152. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/test-small.jpg +0 -0
  153. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/test.jpg +0 -0
  154. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/images/valid.png +0 -0
  155. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/index.html.haml +96 -0
  156. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/plugins/buttons.html.haml +67 -0
  157. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/plugins/fancy_type.html.haml +100 -0
  158. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/plugins/link_icons.html.haml +61 -0
  159. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/plugins/rtl.html.haml +100 -0
  160. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/buttons.sass +49 -0
  161. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/ie.sass +3 -0
  162. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/images/grid.png +0 -0
  163. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/link_icons.sass +13 -0
  164. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/print.sass +3 -0
  165. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/rtl_screen.sass +13 -0
  166. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_plugins/src/screen.sass +11 -0
  167. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped/images/grid.png +0 -0
  168. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped/src/ie.sass +3 -0
  169. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped/src/print.sass +3 -0
  170. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped/src/screen.sass +4 -0
  171. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped_form/images/grid.png +0 -0
  172. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped_form/src/ie.sass +3 -0
  173. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped_form/src/print.sass +3 -0
  174. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_scoped_form/src/screen.sass +10 -0
  175. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/config.rb +7 -0
  176. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/images/grid.png +0 -0
  177. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/index.html.haml +86 -0
  178. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/parts/fancy_type.html.haml +100 -0
  179. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/parts/liquid.html.haml +100 -0
  180. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/parts/test-small.jpg +0 -0
  181. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/parts/test.jpg +0 -0
  182. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/parts/valid.png +0 -0
  183. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/src/ie.sass +3 -0
  184. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/src/images/grid.png +0 -0
  185. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/src/liquid.sass +70 -0
  186. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/src/print.sass +3 -0
  187. data/vendor/gems/gems/compass-0.8.17/examples/blueprint_semantic/src/screen.sass +71 -0
  188. data/vendor/gems/gems/compass-0.8.17/examples/compass/compass.html.haml +39 -0
  189. data/vendor/gems/gems/compass-0.8.17/examples/compass/config.rb +7 -0
  190. data/vendor/gems/gems/compass-0.8.17/examples/compass/images/blue_arrow.gif +0 -0
  191. data/vendor/gems/gems/compass-0.8.17/examples/compass/src/compass.sass +47 -0
  192. data/vendor/gems/gems/compass-0.8.17/examples/compass/src/images/blue_arrow.gif +0 -0
  193. data/vendor/gems/gems/compass-0.8.17/examples/compass/src/sticky_footer.sass +11 -0
  194. data/vendor/gems/gems/compass-0.8.17/examples/compass/src/utilities.sass +108 -0
  195. data/vendor/gems/gems/compass-0.8.17/examples/compass/sticky_footer.html.haml +14 -0
  196. data/vendor/gems/gems/compass-0.8.17/examples/compass/utilities.html.haml +189 -0
  197. data/vendor/gems/gems/compass-0.8.17/examples/logo/logo.html.haml +40 -0
  198. data/vendor/gems/gems/compass-0.8.17/examples/logo/src/ie.sass +6 -0
  199. data/vendor/gems/gems/compass-0.8.17/examples/logo/src/print.sass +6 -0
  200. data/vendor/gems/gems/compass-0.8.17/examples/logo/src/screen.sass +29 -0
  201. data/vendor/gems/gems/compass-0.8.17/examples/yui/divisions.html.haml +179 -0
  202. data/vendor/gems/gems/compass-0.8.17/examples/yui/index.html.haml +19 -0
  203. data/vendor/gems/gems/compass-0.8.17/examples/yui/src/screen.sass +13 -0
  204. data/vendor/gems/gems/compass-0.8.17/examples/yui/sub_divisions.html.haml +169 -0
  205. data/vendor/gems/gems/compass-0.8.17/examples/yui/templates.html.haml +54 -0
  206. data/vendor/gems/gems/compass-0.8.17/examples/yui/test.jpg +0 -0
  207. data/vendor/gems/gems/compass-0.8.17/examples/yui/typography.html.haml +132 -0
  208. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint.rb +2 -0
  209. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/_blueprint.sass +3 -0
  210. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/_ie.sass +93 -0
  211. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/_print.sass +83 -0
  212. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/_reset.sass +3 -0
  213. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/_screen.sass +15 -0
  214. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass +84 -0
  215. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass +33 -0
  216. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass +9 -0
  217. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +82 -0
  218. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +55 -0
  219. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +178 -0
  220. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass +58 -0
  221. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass +44 -0
  222. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass +141 -0
  223. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +56 -0
  224. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +104 -0
  225. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +47 -0
  226. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +155 -0
  227. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass +37 -0
  228. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/buttons/buttons.sass +49 -0
  229. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/buttons/buttons/cross.png +0 -0
  230. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/buttons/buttons/key.png +0 -0
  231. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/buttons/buttons/tick.png +0 -0
  232. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/buttons/manifest.rb +5 -0
  233. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons.sass +13 -0
  234. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/doc.png +0 -0
  235. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/email.png +0 -0
  236. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/external.png +0 -0
  237. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/feed.png +0 -0
  238. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/im.png +0 -0
  239. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/pdf.png +0 -0
  240. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/visited.png +0 -0
  241. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/link_icons/xls.png +0 -0
  242. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/link_icons/manifest.rb +10 -0
  243. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/project/grid.png +0 -0
  244. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/project/ie.sass +15 -0
  245. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/project/manifest.rb +6 -0
  246. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/project/partials/_base.sass +11 -0
  247. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/project/print.sass +3 -0
  248. data/vendor/gems/gems/compass-0.8.17/frameworks/blueprint/templates/project/screen.sass +40 -0
  249. data/vendor/gems/gems/compass-0.8.17/frameworks/compass.rb +2 -0
  250. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/_compass.sass +1 -0
  251. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/_layout.sass +1 -0
  252. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/_misc.sass +24 -0
  253. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/_reset.sass +3 -0
  254. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/_utilities.sass +6 -0
  255. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/layout/_sticky_footer.sass +17 -0
  256. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_general.sass +6 -0
  257. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_links.sass +3 -0
  258. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_lists.sass +3 -0
  259. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_print.sass +24 -0
  260. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_sprites.sass +1 -0
  261. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_tables.sass +3 -0
  262. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/_text.sass +2 -0
  263. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.sass +24 -0
  264. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_float.sass +17 -0
  265. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_hacks.sass +6 -0
  266. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_inline_block.sass +6 -0
  267. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass +134 -0
  268. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_tabs.sass +0 -0
  269. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/general/_tag_cloud.sass +19 -0
  270. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/links/_hover_link.sass +5 -0
  271. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/links/_link_colors.sass +24 -0
  272. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/links/_unstyled_link.sass +5 -0
  273. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.sass +21 -0
  274. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal_list.sass +52 -0
  275. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/lists/_inline_list.sass +29 -0
  276. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite_img.sass +12 -0
  277. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/tables/_alternating_rows_and_columns.sass +20 -0
  278. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/tables/_borders.sass +27 -0
  279. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.sass +9 -0
  280. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.sass +13 -0
  281. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.sass +3 -0
  282. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/stylesheets/compass/utilities/text/_replacement.sass +17 -0
  283. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/ellipsis/ellipsis.sass +6 -0
  284. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/ellipsis/manifest.rb +2 -0
  285. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/ellipsis/xml/ellipsis.xml +14 -0
  286. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/project/ie.sass +6 -0
  287. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/project/manifest.rb +3 -0
  288. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/project/print.sass +6 -0
  289. data/vendor/gems/gems/compass-0.8.17/frameworks/compass/templates/project/screen.sass +13 -0
  290. data/vendor/gems/gems/compass-0.8.17/frameworks/yui.rb +2 -0
  291. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/stylesheets/_yui.sass +7 -0
  292. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/stylesheets/yui/modules/_base.sass +60 -0
  293. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/stylesheets/yui/modules/_fonts.sass +38 -0
  294. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/stylesheets/yui/modules/_grids.sass +341 -0
  295. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/stylesheets/yui/modules/_reset.sass +61 -0
  296. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/templates/project/manifest.rb +1 -0
  297. data/vendor/gems/gems/compass-0.8.17/frameworks/yui/templates/project/screen.sass +4 -0
  298. data/vendor/gems/gems/compass-0.8.17/lib/compass.rb +23 -0
  299. data/vendor/gems/gems/compass-0.8.17/lib/compass/actions.rb +110 -0
  300. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration.rb +5 -0
  301. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration/merb.rb +43 -0
  302. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration/rails.rb +12 -0
  303. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration/rails/action_controller.rb +15 -0
  304. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration/rails/sass_plugin.rb +5 -0
  305. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration/rails/templates/compass-install-rails.rb +80 -0
  306. data/vendor/gems/gems/compass-0.8.17/lib/compass/app_integration/rails/urls.rb +14 -0
  307. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/base.rb +33 -0
  308. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/create_project.rb +19 -0
  309. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/generate_grid_background.rb +24 -0
  310. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/installer_command.rb +31 -0
  311. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/list_frameworks.rb +16 -0
  312. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/print_version.rb +23 -0
  313. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/project_base.rb +112 -0
  314. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/stamp_pattern.rb +33 -0
  315. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/update_project.rb +34 -0
  316. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/validate_project.rb +21 -0
  317. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/watch_project.rb +64 -0
  318. data/vendor/gems/gems/compass-0.8.17/lib/compass/commands/write_configuration.rb +28 -0
  319. data/vendor/gems/gems/compass-0.8.17/lib/compass/compiler.rb +54 -0
  320. data/vendor/gems/gems/compass-0.8.17/lib/compass/configuration.rb +324 -0
  321. data/vendor/gems/gems/compass-0.8.17/lib/compass/core_ext.rb +14 -0
  322. data/vendor/gems/gems/compass-0.8.17/lib/compass/dependencies.rb +10 -0
  323. data/vendor/gems/gems/compass-0.8.17/lib/compass/errors.rb +7 -0
  324. data/vendor/gems/gems/compass-0.8.17/lib/compass/exec.rb +251 -0
  325. data/vendor/gems/gems/compass-0.8.17/lib/compass/frameworks.rb +29 -0
  326. data/vendor/gems/gems/compass-0.8.17/lib/compass/grid_builder.rb +72 -0
  327. data/vendor/gems/gems/compass-0.8.17/lib/compass/installers.rb +5 -0
  328. data/vendor/gems/gems/compass-0.8.17/lib/compass/installers/base.rb +158 -0
  329. data/vendor/gems/gems/compass-0.8.17/lib/compass/installers/manifest.rb +58 -0
  330. data/vendor/gems/gems/compass-0.8.17/lib/compass/installers/rails.rb +135 -0
  331. data/vendor/gems/gems/compass-0.8.17/lib/compass/installers/stand_alone.rb +60 -0
  332. data/vendor/gems/gems/compass-0.8.17/lib/compass/logger.rb +42 -0
  333. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions.rb +5 -0
  334. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/functions.rb +19 -0
  335. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/functions/display.rb +22 -0
  336. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/functions/enumerate.rb +6 -0
  337. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/functions/inline_image.rb +35 -0
  338. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/functions/selectors.rb +39 -0
  339. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/functions/urls.rb +105 -0
  340. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/monkey_patches.rb +3 -0
  341. data/vendor/gems/gems/compass-0.8.17/lib/compass/sass_extensions/monkey_patches/stylesheet_updating.rb +23 -0
  342. data/vendor/gems/gems/compass-0.8.17/lib/compass/test_case.rb +38 -0
  343. data/vendor/gems/gems/compass-0.8.17/lib/compass/validator.rb +10 -0
  344. data/vendor/gems/gems/compass-0.8.17/lib/compass/version.rb +57 -0
  345. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm.rb +41 -0
  346. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/backends/fsevents.rb +37 -0
  347. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/backends/polling.rb +26 -0
  348. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/cache.rb +193 -0
  349. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/ext.rb +37 -0
  350. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/fsevents.rb +129 -0
  351. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/monitor.rb +25 -0
  352. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/path.rb +91 -0
  353. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/state.rb +54 -0
  354. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/support.rb +22 -0
  355. data/vendor/gems/gems/compass-0.8.17/lib/vendor/fssm/tree.rb +176 -0
  356. data/vendor/gems/gems/compass-0.8.17/test/command_line_helper.rb +102 -0
  357. data/vendor/gems/gems/compass-0.8.17/test/command_line_test.rb +66 -0
  358. data/vendor/gems/gems/compass-0.8.17/test/compass_test.rb +141 -0
  359. data/vendor/gems/gems/compass-0.8.17/test/configuration_test.rb +118 -0
  360. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/config.rb +9 -0
  361. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/css/typography.css +158 -0
  362. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/images/grid.png +0 -0
  363. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/sass/ie.sass +3 -0
  364. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/sass/print.sass +3 -0
  365. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/sass/screen.sass +17 -0
  366. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/blueprint/sass/typography.sass +3 -0
  367. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/config.rb +9 -0
  368. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/css/layout.css +13 -0
  369. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/css/print.css +18 -0
  370. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/css/reset.css +60 -0
  371. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/css/utilities.css +17 -0
  372. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/sass/layout.sass +3 -0
  373. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/sass/print.sass +5 -0
  374. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/sass/reset.sass +10 -0
  375. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/compass/sass/utilities.sass +6 -0
  376. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/image_urls/config.rb +17 -0
  377. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/image_urls/css/screen.css +3 -0
  378. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/image_urls/images/grid.png +0 -0
  379. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/image_urls/sass/screen.sass +6 -0
  380. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/yui/config.rb +9 -0
  381. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/yui/css/mixins.css +13 -0
  382. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/yui/sass/base.sass +3 -0
  383. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/yui/sass/fonts.sass +3 -0
  384. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/yui/sass/grids.sass +3 -0
  385. data/vendor/gems/gems/compass-0.8.17/test/fixtures/stylesheets/yui/sass/mixins.sass +16 -0
  386. data/vendor/gems/gems/compass-0.8.17/test/rails_integration_test.rb +83 -0
  387. data/vendor/gems/gems/compass-0.8.17/test/sass_extensions_test.rb +31 -0
  388. data/vendor/gems/gems/compass-0.8.17/test/test_case_helper.rb +13 -0
  389. data/vendor/gems/gems/compass-0.8.17/test/test_helper.rb +21 -0
  390. data/vendor/gems/gems/compass-0.8.17/test/test_rails_helper.rb +20 -0
  391. data/vendor/gems/gems/configuration-1.1.0/README +197 -0
  392. data/vendor/gems/gems/configuration-1.1.0/README.erb +69 -0
  393. data/vendor/gems/gems/configuration-1.1.0/Rakefile +241 -0
  394. data/vendor/gems/gems/configuration-1.1.0/config/a.rb +5 -0
  395. data/vendor/gems/gems/configuration-1.1.0/config/b.rb +19 -0
  396. data/vendor/gems/gems/configuration-1.1.0/config/c.rb +8 -0
  397. data/vendor/gems/gems/configuration-1.1.0/config/d.rb +5 -0
  398. data/vendor/gems/gems/configuration-1.1.0/config/e.rb +13 -0
  399. data/vendor/gems/gems/configuration-1.1.0/configuration.gemspec +28 -0
  400. data/vendor/gems/gems/configuration-1.1.0/lib/configuration.rb +199 -0
  401. data/vendor/gems/gems/configuration-1.1.0/samples/a.rb +11 -0
  402. data/vendor/gems/gems/configuration-1.1.0/samples/b.rb +11 -0
  403. data/vendor/gems/gems/configuration-1.1.0/samples/c.rb +11 -0
  404. data/vendor/gems/gems/configuration-1.1.0/samples/d.rb +14 -0
  405. data/vendor/gems/gems/configuration-1.1.0/samples/e.rb +12 -0
  406. data/vendor/gems/gems/cucumber-0.4.4/.gitattributes +1 -0
  407. data/vendor/gems/gems/cucumber-0.4.4/.gitignore +17 -0
  408. data/vendor/gems/gems/cucumber-0.4.4/History.txt +1269 -0
  409. data/vendor/gems/gems/cucumber-0.4.4/LICENSE +22 -0
  410. data/vendor/gems/gems/cucumber-0.4.4/Manifest.txt +0 -0
  411. data/vendor/gems/gems/cucumber-0.4.4/README.rdoc +26 -0
  412. data/vendor/gems/gems/cucumber-0.4.4/Rakefile +63 -0
  413. data/vendor/gems/gems/cucumber-0.4.4/VERSION.yml +5 -0
  414. data/vendor/gems/gems/cucumber-0.4.4/bin/cucumber +16 -0
  415. data/vendor/gems/gems/cucumber-0.4.4/cucumber.gemspec +750 -0
  416. data/vendor/gems/gems/cucumber-0.4.4/cucumber.yml +4 -0
  417. data/vendor/gems/gems/cucumber-0.4.4/examples/dos_line_endings/Rakefile +6 -0
  418. data/vendor/gems/gems/cucumber-0.4.4/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
  419. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/README.textile +18 -0
  420. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/Rakefile +32 -0
  421. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/Rakefile +6 -0
  422. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/features/addition.feature +17 -0
  423. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/features/step_definitons/calculator_steps.rb +24 -0
  424. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ar/lib/calculator.rb +11 -0
  425. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/Rakefile +6 -0
  426. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/addition.feature +12 -0
  427. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/consecutive_calculations.feature +19 -0
  428. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/division.feature +17 -0
  429. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/step_definitons/calculator_steps.rb +24 -0
  430. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/support/env.rb +6 -0
  431. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/features/support/world.rb +8 -0
  432. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/bg/lib/calculator.rb +24 -0
  433. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/Rakefile +6 -0
  434. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/features/step_definitons/calculator_steps.rb +21 -0
  435. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/features/suma.feature +17 -0
  436. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/cat/lib/calculadora.rb +16 -0
  437. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/Rakefile +6 -0
  438. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/features/sammenlaegning.feature +18 -0
  439. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/features/step_definitons/lommeregner_steps.rb +24 -0
  440. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/da/lib/lommeregner.rb +11 -0
  441. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/.gitignore +1 -0
  442. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/Rakefile +6 -0
  443. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/features/addition.feature +17 -0
  444. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/features/division.feature +10 -0
  445. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/features/step_definitons/calculator_steps.rb +24 -0
  446. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/de/lib/calculator.rb +14 -0
  447. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/Rakefile +6 -0
  448. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  449. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/features/stuffing.feature +8 -0
  450. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/features/support/env.rb +8 -0
  451. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/lib/basket.rb +12 -0
  452. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en-lol/lib/belly.rb +11 -0
  453. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/.gitignore +1 -0
  454. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/Rakefile +6 -0
  455. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/features/addition.feature +17 -0
  456. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/features/division.feature +10 -0
  457. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/features/step_definitons/calculator_steps.rb +24 -0
  458. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/en/lib/calculator.rb +14 -0
  459. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/Rakefile +6 -0
  460. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/features/adicion.feature +17 -0
  461. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/features/step_definitons/calculador_steps.rb +21 -0
  462. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/es/lib/calculador.rb +14 -0
  463. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/Rakefile +6 -0
  464. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/features/jagamine.feature +10 -0
  465. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/features/liitmine.feature +17 -0
  466. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +24 -0
  467. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/et/lib/kalkulaator.rb +14 -0
  468. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/.gitignore +1 -0
  469. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/Rakefile +6 -0
  470. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/features/jakolasku.feature +10 -0
  471. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  472. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/features/yhteenlasku.feature +17 -0
  473. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fi/lib/laskin.rb +14 -0
  474. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/Rakefile +6 -0
  475. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/features/addition.feature +18 -0
  476. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +25 -0
  477. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/fr/lib/calculatrice.rb +10 -0
  478. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/Rakefile +6 -0
  479. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/features/addition.feature +17 -0
  480. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/features/division.feature +10 -0
  481. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/features/step_definitons/calculator_steps.rb +24 -0
  482. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/he/lib/calculator.rb +14 -0
  483. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/.gitignore +1 -0
  484. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/Rakefile +6 -0
  485. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/features/addition.feature +17 -0
  486. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/features/division.feature +10 -0
  487. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/features/step_definitons/calculator_steps.rb +25 -0
  488. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/hu/lib/calculator.rb +14 -0
  489. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/.gitignore +1 -0
  490. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/Rakefile +6 -0
  491. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/features/addition.feature +17 -0
  492. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/features/division.feature +10 -0
  493. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/features/step_definitons/calculator_steps.rb +24 -0
  494. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/id/lib/calculator.rb +14 -0
  495. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/Rakefile +6 -0
  496. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/features/somma.feature +11 -0
  497. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +24 -0
  498. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/it/lib/calcolatrice.rb +11 -0
  499. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/.gitignore +1 -0
  500. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/Rakefile +6 -0
  501. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/features/addition.feature +17 -0
  502. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/features/division.feature +10 -0
  503. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/features/step_definitons/calculator_steps.rb +24 -0
  504. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ja/lib/calculator.rb +14 -0
  505. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/.gitignore +1 -0
  506. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/Rakefile +6 -0
  507. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/features/addition.feature +17 -0
  508. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/features/division.feature +11 -0
  509. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/features/step_definitons/calculator_steps.rb +24 -0
  510. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ko/lib/calculator.rb +14 -0
  511. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/.gitignore +1 -0
  512. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/Rakefile +6 -0
  513. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/features/addition.feature +17 -0
  514. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/features/division.feature +10 -0
  515. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/features/step_definitons/calculator_steps.rb +24 -0
  516. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lt/lib/calculator.rb +14 -0
  517. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/Rakefile +6 -0
  518. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/features/addition.feature +17 -0
  519. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/features/division.feature +10 -0
  520. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/features/step_definitons/calculator_steps.rb +24 -0
  521. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/lv/lib/calculator.rb +14 -0
  522. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/Rakefile +6 -0
  523. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +17 -0
  524. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/features/summering.feature +19 -0
  525. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/features/support/env.rb +6 -0
  526. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/no/lib/kalkulator.rb +11 -0
  527. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/.gitignore +1 -0
  528. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/Rakefile +6 -0
  529. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/addition.feature +17 -0
  530. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/division.feature +10 -0
  531. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/step_definitons/calculator_steps.rb +24 -0
  532. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/features/support/env.rb +6 -0
  533. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pl/lib/calculator.rb +14 -0
  534. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/Rakefile +6 -0
  535. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/features/adicao.feature +11 -0
  536. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +20 -0
  537. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/features/support/env.rb +6 -0
  538. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/pt/lib/calculadora.rb +10 -0
  539. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/Rakefile +6 -0
  540. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/features/step_definitons/calculator_steps.rb +24 -0
  541. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/features/suma.feature +11 -0
  542. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ro/lib/calculator.rb +11 -0
  543. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/Rakefile +6 -0
  544. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/addition.feature +11 -0
  545. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/consecutive_calculations.feature +17 -0
  546. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/division.feature +16 -0
  547. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  548. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/support/env.rb +6 -0
  549. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/features/support/world.rb +8 -0
  550. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/ru/lib/calculator.rb +24 -0
  551. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/Rakefile +6 -0
  552. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +24 -0
  553. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/features/summering.feature +18 -0
  554. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/se/lib/kalkulator.rb +11 -0
  555. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/.gitignore +1 -0
  556. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/Rakefile +6 -0
  557. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/features/addition.feature +17 -0
  558. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/features/division.feature +10 -0
  559. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/features/step_definitons/calculator_steps.rb +24 -0
  560. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sk/lib/calculator.rb +14 -0
  561. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/Rakefile +6 -0
  562. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/features/sabiranje.feature +18 -0
  563. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/features/step_definitons/calculator_steps.rb +24 -0
  564. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr-latn/lib/calculator.rb +12 -0
  565. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/Rakefile +6 -0
  566. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/features/sabiranje.feature +18 -0
  567. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/features/step_definitons/calculator_steps.rb +24 -0
  568. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/sr/lib/calculator.rb +12 -0
  569. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/.gitignore +1 -0
  570. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/Rakefile +6 -0
  571. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/features/bolme.feature +10 -0
  572. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +24 -0
  573. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/features/toplama.feature +18 -0
  574. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/tr/lib/hesap_makinesi.rb +15 -0
  575. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/Rakefile +6 -0
  576. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/addition.feature +10 -0
  577. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/consecutive_calculations.feature +17 -0
  578. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/division.feature +17 -0
  579. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/step_definitons/calculator_steps.rb +19 -0
  580. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/support/env.rb +6 -0
  581. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/features/support/world.rb +8 -0
  582. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/uz/lib/calculator.rb +24 -0
  583. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/Rakefile +6 -0
  584. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/features/addition.feature +18 -0
  585. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +26 -0
  586. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-CN/lib/calculator.rb +10 -0
  587. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/.gitignore +1 -0
  588. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/Rakefile +6 -0
  589. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/features/addition.feature +17 -0
  590. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/features/division.feature +11 -0
  591. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  592. data/vendor/gems/gems/cucumber-0.4.4/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  593. data/vendor/gems/gems/cucumber-0.4.4/examples/junit/features/one_passing_one_failing.feature +8 -0
  594. data/vendor/gems/gems/cucumber-0.4.4/examples/junit/features/pending.feature +5 -0
  595. data/vendor/gems/gems/cucumber-0.4.4/examples/junit/features/step_definitions/steps.rb +11 -0
  596. data/vendor/gems/gems/cucumber-0.4.4/examples/python/features/fibonacci.feature +19 -0
  597. data/vendor/gems/gems/cucumber-0.4.4/examples/python/features/step_definitions/fib_steps.py +11 -0
  598. data/vendor/gems/gems/cucumber-0.4.4/examples/python/lib/.gitignore +1 -0
  599. data/vendor/gems/gems/cucumber-0.4.4/examples/python/lib/fib.py +7 -0
  600. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/README.textile +7 -0
  601. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/Rakefile +6 -0
  602. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/app.rb +21 -0
  603. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/features/add.feature +11 -0
  604. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/features/step_definitions/add_steps.rb +15 -0
  605. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/features/support/env.rb +32 -0
  606. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/layout/default.html.erb +8 -0
  607. data/vendor/gems/gems/cucumber-0.4.4/examples/ramaze/view/index.html.erb +5 -0
  608. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/features/fibonacci.feature +19 -0
  609. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/features/step_definitions/fib_steps.rb +7 -0
  610. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/features/support/env.rb +21 -0
  611. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/lib/.gitignore +1 -0
  612. data/vendor/gems/gems/cucumber-0.4.4/examples/ruby2python/lib/fib.py +7 -0
  613. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/Rakefile +6 -0
  614. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/features/search.feature +9 -0
  615. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  616. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium/features/support/env.rb +19 -0
  617. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/Rakefile +6 -0
  618. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/config.ru +0 -0
  619. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/features/search.feature +9 -0
  620. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  621. data/vendor/gems/gems/cucumber-0.4.4/examples/selenium_webrat/features/support/env.rb +45 -0
  622. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/.gitignore +1 -0
  623. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/README.textile +6 -0
  624. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/Rakefile +6 -0
  625. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/background_tagged_before_on_outline.feature +12 -0
  626. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/background_with_name.feature +7 -0
  627. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/failing_background.feature +12 -0
  628. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  629. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/multiline_args_background.feature +32 -0
  630. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/passing_background.feature +10 -0
  631. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/pending_background.feature +10 -0
  632. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  633. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  634. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  635. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/failing_expectation.feature +4 -0
  636. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/lots_of_undefined.feature +8 -0
  637. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/multiline_name.feature +27 -0
  638. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/outline_sample.feature +15 -0
  639. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/sample.feature +21 -0
  640. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/search_sample.feature +32 -0
  641. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/step_definitions/sample_steps.rb +81 -0
  642. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/support/env.rb +18 -0
  643. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/tags_sample.feature +17 -0
  644. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/tons_of_cukes.feature +52 -0
  645. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/features/undefined_multiline_args.feature +12 -0
  646. data/vendor/gems/gems/cucumber-0.4.4/examples/self_test/list-of-features.txt +1 -0
  647. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/README.textile +13 -0
  648. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/Rakefile +6 -0
  649. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/app.rb +14 -0
  650. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/features/add.feature +11 -0
  651. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  652. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/features/support/env.rb +30 -0
  653. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/views/add.erb +5 -0
  654. data/vendor/gems/gems/cucumber-0.4.4/examples/sinatra/views/layout.erb +8 -0
  655. data/vendor/gems/gems/cucumber-0.4.4/examples/steps_library/features/step_definitions/steps_lib1.rb +8 -0
  656. data/vendor/gems/gems/cucumber-0.4.4/examples/steps_library/features/step_definitions/steps_lib2.rb +8 -0
  657. data/vendor/gems/gems/cucumber-0.4.4/examples/test_unit/Rakefile +6 -0
  658. data/vendor/gems/gems/cucumber-0.4.4/examples/test_unit/features/step_definitions/test_unit_steps.rb +23 -0
  659. data/vendor/gems/gems/cucumber-0.4.4/examples/test_unit/features/test_unit.feature +9 -0
  660. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/Rakefile +20 -0
  661. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features.html +138 -0
  662. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/172.feature +28 -0
  663. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/177/1.feature +29 -0
  664. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/177/2.feature +21 -0
  665. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/177/3.feature +18 -0
  666. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/180.feature +7 -0
  667. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/229/tagged_hooks.feature +8 -0
  668. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/229/tagged_hooks.rb +14 -0
  669. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/236.feature +13 -0
  670. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/241.feature +13 -0
  671. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/246.feature +4 -0
  672. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/248.feature +11 -0
  673. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/270/back.feature +14 -0
  674. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/270/back.steps.rb +14 -0
  675. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/272/hooks.feature +26 -0
  676. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/272/hooks_steps.rb +53 -0
  677. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/279/py_string_indent.feature +25 -0
  678. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/279/py_string_indent.steps.rb +12 -0
  679. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/279/wrong.feature_ +11 -0
  680. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/301/filter_background_tagged_hooks.feature +6 -0
  681. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/301/filter_background_tagged_hooks_steps.rb +12 -0
  682. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/306/only_background.feature +4 -0
  683. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/lib/eatting_machine.rb +18 -0
  684. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/lib/pantry.rb +20 -0
  685. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/scenario_outline.feature +95 -0
  686. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/246_steps.rb +3 -0
  687. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/248_steps.rb +15 -0
  688. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/scenario_outline_steps.rb +42 -0
  689. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/step_definitons/tickets_steps.rb +81 -0
  690. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/table_diffing.feature +13 -0
  691. data/vendor/gems/gems/cucumber-0.4.4/examples/tickets/features/tickets.feature +28 -0
  692. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/README.textile +16 -0
  693. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/Rakefile +10 -0
  694. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/search.feature +12 -0
  695. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/step_definitions/search_steps.rb +26 -0
  696. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/support/env.rb +32 -0
  697. data/vendor/gems/gems/cucumber-0.4.4/examples/watir/features/support/screenshots.rb +44 -0
  698. data/vendor/gems/gems/cucumber-0.4.4/examples/webrat/features/search.feature +12 -0
  699. data/vendor/gems/gems/cucumber-0.4.4/examples/webrat/features/step_definitions/kvasir_steps.rb +14 -0
  700. data/vendor/gems/gems/cucumber-0.4.4/examples/webrat/features/support/env.rb +17 -0
  701. data/vendor/gems/gems/cucumber-0.4.4/features/announce.feature +122 -0
  702. data/vendor/gems/gems/cucumber-0.4.4/features/background.feature +308 -0
  703. data/vendor/gems/gems/cucumber-0.4.4/features/bug_371.feature +32 -0
  704. data/vendor/gems/gems/cucumber-0.4.4/features/bug_464.feature +16 -0
  705. data/vendor/gems/gems/cucumber-0.4.4/features/bug_475.feature +43 -0
  706. data/vendor/gems/gems/cucumber-0.4.4/features/call_many_steps.feature +124 -0
  707. data/vendor/gems/gems/cucumber-0.4.4/features/cucumber_cli.feature +652 -0
  708. data/vendor/gems/gems/cucumber-0.4.4/features/cucumber_cli_diff_disabled.feature +52 -0
  709. data/vendor/gems/gems/cucumber-0.4.4/features/cucumber_cli_outlines.feature +105 -0
  710. data/vendor/gems/gems/cucumber-0.4.4/features/custom_formatter.feature +46 -0
  711. data/vendor/gems/gems/cucumber-0.4.4/features/default_snippets.feature +42 -0
  712. data/vendor/gems/gems/cucumber-0.4.4/features/drb_server_integration.feature +174 -0
  713. data/vendor/gems/gems/cucumber-0.4.4/features/exception_in_after_block.feature +100 -0
  714. data/vendor/gems/gems/cucumber-0.4.4/features/exception_in_after_step_block.feature +102 -0
  715. data/vendor/gems/gems/cucumber-0.4.4/features/exception_in_before_block.feature +78 -0
  716. data/vendor/gems/gems/cucumber-0.4.4/features/exclude_files.feature +20 -0
  717. data/vendor/gems/gems/cucumber-0.4.4/features/expand.feature +60 -0
  718. data/vendor/gems/gems/cucumber-0.4.4/features/html_formatter.feature +7 -0
  719. data/vendor/gems/gems/cucumber-0.4.4/features/html_formatter/a.html +183 -0
  720. data/vendor/gems/gems/cucumber-0.4.4/features/junit_formatter.feature +88 -0
  721. data/vendor/gems/gems/cucumber-0.4.4/features/language_from_header.feature +30 -0
  722. data/vendor/gems/gems/cucumber-0.4.4/features/language_help.feature +70 -0
  723. data/vendor/gems/gems/cucumber-0.4.4/features/listener_debugger_formatter.feature +41 -0
  724. data/vendor/gems/gems/cucumber-0.4.4/features/multiline_names.feature +43 -0
  725. data/vendor/gems/gems/cucumber-0.4.4/features/negative_tagged_hooks.feature +61 -0
  726. data/vendor/gems/gems/cucumber-0.4.4/features/post_configuration_hook.feature +37 -0
  727. data/vendor/gems/gems/cucumber-0.4.4/features/profiles.feature +112 -0
  728. data/vendor/gems/gems/cucumber-0.4.4/features/rake_task.feature +152 -0
  729. data/vendor/gems/gems/cucumber-0.4.4/features/report_called_undefined_steps.feature +34 -0
  730. data/vendor/gems/gems/cucumber-0.4.4/features/simplest.feature +11 -0
  731. data/vendor/gems/gems/cucumber-0.4.4/features/snippet.feature +22 -0
  732. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/cucumber_steps.rb +154 -0
  733. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/extra_steps.rb +2 -0
  734. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/simplest_steps.rb +3 -0
  735. data/vendor/gems/gems/cucumber-0.4.4/features/step_definitions/wire_steps.rb +14 -0
  736. data/vendor/gems/gems/cucumber-0.4.4/features/support/env.rb +141 -0
  737. data/vendor/gems/gems/cucumber-0.4.4/features/support/env.rb.simplest +7 -0
  738. data/vendor/gems/gems/cucumber-0.4.4/features/support/fake_wire_server.rb +63 -0
  739. data/vendor/gems/gems/cucumber-0.4.4/features/table_diffing.feature +45 -0
  740. data/vendor/gems/gems/cucumber-0.4.4/features/table_mapping.feature +35 -0
  741. data/vendor/gems/gems/cucumber-0.4.4/features/tag_logic.feature +258 -0
  742. data/vendor/gems/gems/cucumber-0.4.4/features/transform.feature +231 -0
  743. data/vendor/gems/gems/cucumber-0.4.4/features/unicode_table.feature +35 -0
  744. data/vendor/gems/gems/cucumber-0.4.4/features/usage_and_stepdefs_formatter.feature +169 -0
  745. data/vendor/gems/gems/cucumber-0.4.4/features/wire_protocol.feature +177 -0
  746. data/vendor/gems/gems/cucumber-0.4.4/features/work_in_progress.feature +156 -0
  747. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/contributors.rake +13 -0
  748. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/environment.rake +7 -0
  749. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/features.rake +16 -0
  750. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/fix_cr_lf.rake +10 -0
  751. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/flog.rake +4 -0
  752. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/rspec.rake +15 -0
  753. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/sass.rake +4 -0
  754. data/vendor/gems/gems/cucumber-0.4.4/gem_tasks/sdoc.rake +12 -0
  755. data/vendor/gems/gems/cucumber-0.4.4/lib/README.rdoc +12 -0
  756. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber.rb +6 -0
  757. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_mixin.rb +131 -0
  758. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_rails.rb +6 -0
  759. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_rails_rspec.rb +6 -0
  760. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/cucumber_rspec.rb +6 -0
  761. data/vendor/gems/gems/cucumber-0.4.4/lib/autotest/discover.rb +9 -0
  762. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber.rb +15 -0
  763. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast.rb +30 -0
  764. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/background.rb +75 -0
  765. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/comment.rb +31 -0
  766. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/examples.rb +36 -0
  767. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/feature.rb +85 -0
  768. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/feature_element.rb +68 -0
  769. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/features.rb +40 -0
  770. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/outline_table.rb +166 -0
  771. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/py_string.rb +59 -0
  772. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/scenario.rb +111 -0
  773. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/scenario_outline.rb +100 -0
  774. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/step.rb +121 -0
  775. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/step_collection.rb +76 -0
  776. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/step_invocation.rb +190 -0
  777. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/table.rb +655 -0
  778. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/tags.rb +122 -0
  779. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/tree_walker.rb +201 -0
  780. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/ast/visitor.rb +11 -0
  781. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/broadcaster.rb +13 -0
  782. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/configuration.rb +195 -0
  783. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/drb_client.rb +32 -0
  784. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/language_help_formatter.rb +72 -0
  785. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/main.rb +121 -0
  786. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/options.rb +403 -0
  787. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/cli/profile_loader.rb +82 -0
  788. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/constantize.rb +34 -0
  789. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/core_ext/instance_exec.rb +98 -0
  790. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/core_ext/proc.rb +30 -0
  791. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/core_ext/string.rb +16 -0
  792. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/feature_file.rb +54 -0
  793. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/filter.rb +41 -0
  794. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/ansicolor.rb +157 -0
  795. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/color_io.rb +23 -0
  796. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/console.rb +205 -0
  797. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/cucumber.css +132 -0
  798. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/cucumber.sass +139 -0
  799. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/debug.rb +33 -0
  800. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/duration.rb +13 -0
  801. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/html.rb +369 -0
  802. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/junit.rb +140 -0
  803. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/ordered_xml_markup.rb +24 -0
  804. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/pdf.rb +234 -0
  805. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/pretty.rb +239 -0
  806. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/progress.rb +73 -0
  807. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/rerun.rb +48 -0
  808. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/stepdefs.rb +14 -0
  809. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/steps.rb +49 -0
  810. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/summary.rb +35 -0
  811. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/tag_cloud.rb +30 -0
  812. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/unicode.rb +35 -0
  813. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/formatter/usage.rb +127 -0
  814. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/language_support.rb +30 -0
  815. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/language_support/language_methods.rb +110 -0
  816. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/languages.yml +611 -0
  817. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser.rb +8 -0
  818. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/common.rb +170 -0
  819. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/common.tt +21 -0
  820. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/feature.rb +1517 -0
  821. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/feature.tt +281 -0
  822. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/i18n.tt +44 -0
  823. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/natural_language.rb +81 -0
  824. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/py_string.rb +276 -0
  825. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/py_string.tt +45 -0
  826. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/table.rb +305 -0
  827. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/table.tt +60 -0
  828. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/parser/treetop_ext.rb +53 -0
  829. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/platform.rb +31 -0
  830. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/py_support/py_dsl.py +10 -0
  831. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/py_support/py_language.py +10 -0
  832. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/py_support/py_language.rb +81 -0
  833. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/action_controller.rb +38 -0
  834. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/active_record.rb +30 -0
  835. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/rspec.rb +10 -0
  836. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/test_unit.rb +9 -0
  837. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rails/world.rb +30 -0
  838. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rake/task.rb +166 -0
  839. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_dsl.rb +102 -0
  840. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_hook.rb +19 -0
  841. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_language.rb +179 -0
  842. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_step_definition.rb +75 -0
  843. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_transform.rb +37 -0
  844. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/rb_world.rb +81 -0
  845. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rb_support/regexp_argument_matcher.rb +21 -0
  846. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/rspec_neuter.rb +23 -0
  847. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_argument.rb +9 -0
  848. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_definition_light.rb +20 -0
  849. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_match.rb +107 -0
  850. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/step_mother.rb +351 -0
  851. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/webrat/element_locator.rb +89 -0
  852. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/webrat/table_locator.rb +1 -0
  853. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/connection.rb +42 -0
  854. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/request_handler.rb +19 -0
  855. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_exception.rb +10 -0
  856. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_language.rb +52 -0
  857. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_packet.rb +34 -0
  858. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_protocol.rb +64 -0
  859. data/vendor/gems/gems/cucumber-0.4.4/lib/cucumber/wire_support/wire_step_definition.rb +21 -0
  860. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/USAGE +11 -0
  861. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/cucumber_generator.rb +117 -0
  862. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/cucumber +17 -0
  863. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/cucumber.rake +46 -0
  864. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/cucumber_environment.rb +30 -0
  865. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/env.rb +49 -0
  866. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/paths.rb +27 -0
  867. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/spork_env.rb +57 -0
  868. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/version_check.rb +31 -0
  869. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/cucumber/templates/webrat_steps.rb +241 -0
  870. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/USAGE +12 -0
  871. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/feature_generator.rb +40 -0
  872. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/templates/feature.erb +31 -0
  873. data/vendor/gems/gems/cucumber-0.4.4/rails_generators/feature/templates/steps.erb +14 -0
  874. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/background_spec.rb +54 -0
  875. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/feature_element_spec.rb +41 -0
  876. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/feature_factory.rb +62 -0
  877. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/feature_spec.rb +44 -0
  878. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/outline_table_spec.rb +21 -0
  879. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/py_string_spec.rb +51 -0
  880. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/scenario_outline_spec.rb +73 -0
  881. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/scenario_spec.rb +45 -0
  882. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/step_collection_spec.rb +17 -0
  883. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/step_spec.rb +66 -0
  884. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/table_spec.rb +422 -0
  885. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/tags_spec.rb +29 -0
  886. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/ast/tree_walker_spec.rb +11 -0
  887. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/broadcaster_spec.rb +15 -0
  888. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/configuration_spec.rb +396 -0
  889. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/drb_client_spec.rb +77 -0
  890. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/main_spec.rb +172 -0
  891. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/options_spec.rb +338 -0
  892. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/cli/profile_loader_spec.rb +10 -0
  893. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/core_ext/proc_spec.rb +68 -0
  894. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/ansicolor_spec.rb +31 -0
  895. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/color_io_spec.rb +27 -0
  896. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/console_spec.rb +20 -0
  897. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/duration_spec.rb +22 -0
  898. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/html_spec.rb +200 -0
  899. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/junit_spec.rb +107 -0
  900. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/progress_spec.rb +38 -0
  901. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/formatter/spec_helper.rb +50 -0
  902. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/parser/feature_parser_spec.rb +400 -0
  903. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/parser/table_parser_spec.rb +52 -0
  904. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/rb_support/rb_step_definition_spec.rb +132 -0
  905. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +18 -0
  906. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/sell_cucumbers.feature +19 -0
  907. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/step_match_spec.rb +56 -0
  908. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/step_mother_spec.rb +270 -0
  909. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/empty_feature.feature +4 -0
  910. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/empty_scenario.feature +9 -0
  911. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/empty_scenario_outline.feature +3 -0
  912. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/fit_scenario.feature +8 -0
  913. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/given_scenario.feature +9 -0
  914. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/invalid_scenario_outlines.feature +7 -0
  915. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/multiline_steps.feature +17 -0
  916. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/multiple_tables.feature +27 -0
  917. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/scenario_outline.feature +16 -0
  918. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/spaces.feature +12 -0
  919. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/test_dos.feature +25 -0
  920. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/with_comments.feature +23 -0
  921. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  922. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/wire_support/wire_language_spec.rb +47 -0
  923. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/wire_support/wire_packet_spec.rb +26 -0
  924. data/vendor/gems/gems/cucumber-0.4.4/spec/cucumber/world/pending_spec.rb +46 -0
  925. data/vendor/gems/gems/cucumber-0.4.4/spec/spec.opts +4 -0
  926. data/vendor/gems/gems/cucumber-0.4.4/spec/spec_helper.rb +18 -0
  927. data/vendor/gems/gems/daemons-1.0.10/LICENSE +29 -0
  928. data/vendor/gems/gems/daemons-1.0.10/README +223 -0
  929. data/vendor/gems/gems/daemons-1.0.10/Rakefile +84 -0
  930. data/vendor/gems/gems/daemons-1.0.10/Releases +126 -0
  931. data/vendor/gems/gems/daemons-1.0.10/TODO +6 -0
  932. data/vendor/gems/gems/daemons-1.0.10/examples/call/call.rb +56 -0
  933. data/vendor/gems/gems/daemons-1.0.10/examples/call/call_monitor.rb +55 -0
  934. data/vendor/gems/gems/daemons-1.0.10/examples/daemonize/daemonize.rb +20 -0
  935. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_crash.rb +17 -0
  936. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_exec.rb +16 -0
  937. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_exit.rb +15 -0
  938. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_keep_pid_files.rb +17 -0
  939. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_monitor.rb +16 -0
  940. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_multiple.rb +16 -0
  941. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_normal.rb +12 -0
  942. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_ontop.rb +16 -0
  943. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_optionparser.rb +43 -0
  944. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_proc.rb +25 -0
  945. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_proc.rb.output +101 -0
  946. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_proc_multiple.rb +22 -0
  947. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_proc_multiple.rb.output +2 -0
  948. data/vendor/gems/gems/daemons-1.0.10/examples/run/ctrl_proc_simple.rb +17 -0
  949. data/vendor/gems/gems/daemons-1.0.10/examples/run/myserver.rb +12 -0
  950. data/vendor/gems/gems/daemons-1.0.10/examples/run/myserver_crashing.rb +14 -0
  951. data/vendor/gems/gems/daemons-1.0.10/examples/run/myserver_crashing.rb.output +30 -0
  952. data/vendor/gems/gems/daemons-1.0.10/examples/run/myserver_exiting.rb +8 -0
  953. data/vendor/gems/gems/daemons-1.0.10/lib/daemons.rb +283 -0
  954. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/application.rb +372 -0
  955. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/application_group.rb +152 -0
  956. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/cmdline.rb +117 -0
  957. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/controller.rb +134 -0
  958. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/daemonize.rb +263 -0
  959. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/exceptions.rb +28 -0
  960. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/monitor.rb +127 -0
  961. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/pid.rb +101 -0
  962. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/pidfile.rb +111 -0
  963. data/vendor/gems/gems/daemons-1.0.10/lib/daemons/pidmem.rb +10 -0
  964. data/vendor/gems/gems/daemons-1.0.10/setup.rb +1360 -0
  965. data/vendor/gems/gems/diff-lcs-1.1.2/ChangeLog +46 -0
  966. data/vendor/gems/gems/diff-lcs-1.1.2/Install +6 -0
  967. data/vendor/gems/gems/diff-lcs-1.1.2/README +76 -0
  968. data/vendor/gems/gems/diff-lcs-1.1.2/Rakefile +116 -0
  969. data/vendor/gems/gems/diff-lcs-1.1.2/bin/htmldiff +112 -0
  970. data/vendor/gems/gems/diff-lcs-1.1.2/bin/ldiff +45 -0
  971. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs.rb +1105 -0
  972. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/array.rb +21 -0
  973. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/block.rb +51 -0
  974. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb +322 -0
  975. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb +169 -0
  976. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/hunk.rb +257 -0
  977. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/ldiff.rb +226 -0
  978. data/vendor/gems/gems/diff-lcs-1.1.2/lib/diff/lcs/string.rb +19 -0
  979. data/vendor/gems/gems/diff-lcs-1.1.2/tests/00test.rb +626 -0
  980. data/vendor/gems/gems/eventmachine-0.12.10/.gitignore +14 -0
  981. data/vendor/gems/gems/eventmachine-0.12.10/README +82 -0
  982. data/vendor/gems/gems/eventmachine-0.12.10/Rakefile +374 -0
  983. data/vendor/gems/gems/eventmachine-0.12.10/docs/COPYING +60 -0
  984. data/vendor/gems/gems/eventmachine-0.12.10/docs/ChangeLog +211 -0
  985. data/vendor/gems/gems/eventmachine-0.12.10/docs/DEFERRABLES +133 -0
  986. data/vendor/gems/gems/eventmachine-0.12.10/docs/EPOLL +141 -0
  987. data/vendor/gems/gems/eventmachine-0.12.10/docs/GNU +281 -0
  988. data/vendor/gems/gems/eventmachine-0.12.10/docs/INSTALL +13 -0
  989. data/vendor/gems/gems/eventmachine-0.12.10/docs/KEYBOARD +38 -0
  990. data/vendor/gems/gems/eventmachine-0.12.10/docs/LEGAL +25 -0
  991. data/vendor/gems/gems/eventmachine-0.12.10/docs/LIGHTWEIGHT_CONCURRENCY +70 -0
  992. data/vendor/gems/gems/eventmachine-0.12.10/docs/PURE_RUBY +75 -0
  993. data/vendor/gems/gems/eventmachine-0.12.10/docs/RELEASE_NOTES +94 -0
  994. data/vendor/gems/gems/eventmachine-0.12.10/docs/SMTP +2 -0
  995. data/vendor/gems/gems/eventmachine-0.12.10/docs/SPAWNED_PROCESSES +89 -0
  996. data/vendor/gems/gems/eventmachine-0.12.10/docs/TODO +8 -0
  997. data/vendor/gems/gems/eventmachine-0.12.10/eventmachine.gemspec +40 -0
  998. data/vendor/gems/gems/eventmachine-0.12.10/examples/ex_channel.rb +43 -0
  999. data/vendor/gems/gems/eventmachine-0.12.10/examples/ex_queue.rb +2 -0
  1000. data/vendor/gems/gems/eventmachine-0.12.10/examples/helper.rb +2 -0
  1001. data/vendor/gems/gems/eventmachine-0.12.10/ext/binder.cpp +125 -0
  1002. data/vendor/gems/gems/eventmachine-0.12.10/ext/binder.h +46 -0
  1003. data/vendor/gems/gems/eventmachine-0.12.10/ext/cmain.cpp +827 -0
  1004. data/vendor/gems/gems/eventmachine-0.12.10/ext/cplusplus.cpp +202 -0
  1005. data/vendor/gems/gems/eventmachine-0.12.10/ext/ed.cpp +1893 -0
  1006. data/vendor/gems/gems/eventmachine-0.12.10/ext/ed.h +424 -0
  1007. data/vendor/gems/gems/eventmachine-0.12.10/ext/em.cpp +2282 -0
  1008. data/vendor/gems/gems/eventmachine-0.12.10/ext/em.h +232 -0
  1009. data/vendor/gems/gems/eventmachine-0.12.10/ext/emwin.cpp +300 -0
  1010. data/vendor/gems/gems/eventmachine-0.12.10/ext/emwin.h +94 -0
  1011. data/vendor/gems/gems/eventmachine-0.12.10/ext/epoll.cpp +26 -0
  1012. data/vendor/gems/gems/eventmachine-0.12.10/ext/epoll.h +25 -0
  1013. data/vendor/gems/gems/eventmachine-0.12.10/ext/eventmachine.h +122 -0
  1014. data/vendor/gems/gems/eventmachine-0.12.10/ext/eventmachine_cpp.h +96 -0
  1015. data/vendor/gems/gems/eventmachine-0.12.10/ext/extconf.rb +148 -0
  1016. data/vendor/gems/gems/eventmachine-0.12.10/ext/fastfilereader/extconf.rb +83 -0
  1017. data/vendor/gems/gems/eventmachine-0.12.10/ext/fastfilereader/mapper.cpp +214 -0
  1018. data/vendor/gems/gems/eventmachine-0.12.10/ext/fastfilereader/mapper.h +59 -0
  1019. data/vendor/gems/gems/eventmachine-0.12.10/ext/fastfilereader/rubymain.cpp +127 -0
  1020. data/vendor/gems/gems/eventmachine-0.12.10/ext/files.cpp +94 -0
  1021. data/vendor/gems/gems/eventmachine-0.12.10/ext/files.h +65 -0
  1022. data/vendor/gems/gems/eventmachine-0.12.10/ext/kb.cpp +81 -0
  1023. data/vendor/gems/gems/eventmachine-0.12.10/ext/page.cpp +107 -0
  1024. data/vendor/gems/gems/eventmachine-0.12.10/ext/page.h +51 -0
  1025. data/vendor/gems/gems/eventmachine-0.12.10/ext/pipe.cpp +349 -0
  1026. data/vendor/gems/gems/eventmachine-0.12.10/ext/project.h +151 -0
  1027. data/vendor/gems/gems/eventmachine-0.12.10/ext/rubymain.cpp +1166 -0
  1028. data/vendor/gems/gems/eventmachine-0.12.10/ext/sigs.cpp +89 -0
  1029. data/vendor/gems/gems/eventmachine-0.12.10/ext/sigs.h +32 -0
  1030. data/vendor/gems/gems/eventmachine-0.12.10/ext/ssl.cpp +460 -0
  1031. data/vendor/gems/gems/eventmachine-0.12.10/ext/ssl.h +94 -0
  1032. data/vendor/gems/gems/eventmachine-0.12.10/java/.classpath +8 -0
  1033. data/vendor/gems/gems/eventmachine-0.12.10/java/.project +17 -0
  1034. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactor.java +570 -0
  1035. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactorException.java +40 -0
  1036. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableChannel.java +69 -0
  1037. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableDatagramChannel.java +189 -0
  1038. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableSocketChannel.java +364 -0
  1039. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Application.java +194 -0
  1040. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Connection.java +74 -0
  1041. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/ConnectionFactory.java +37 -0
  1042. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +46 -0
  1043. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/PeriodicTimer.java +38 -0
  1044. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Timer.java +54 -0
  1045. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ApplicationTest.java +109 -0
  1046. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ConnectTest.java +148 -0
  1047. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/EMTest.java +80 -0
  1048. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestDatagrams.java +53 -0
  1049. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestServers.java +75 -0
  1050. data/vendor/gems/gems/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestTimers.java +90 -0
  1051. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/buftok.rb +138 -0
  1052. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/callback.rb +26 -0
  1053. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/channel.rb +57 -0
  1054. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/connection.rb +564 -0
  1055. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/deferrable.rb +192 -0
  1056. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/file_watch.rb +54 -0
  1057. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/future.rb +61 -0
  1058. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/messages.rb +66 -0
  1059. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/process_watch.rb +44 -0
  1060. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/processes.rb +119 -0
  1061. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols.rb +36 -0
  1062. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/header_and_content.rb +138 -0
  1063. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/httpclient.rb +263 -0
  1064. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/httpclient2.rb +590 -0
  1065. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/line_and_text.rb +125 -0
  1066. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb +161 -0
  1067. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/memcache.rb +323 -0
  1068. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/object_protocol.rb +45 -0
  1069. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/postgres3.rb +247 -0
  1070. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/saslauth.rb +175 -0
  1071. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/smtpclient.rb +357 -0
  1072. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/smtpserver.rb +547 -0
  1073. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/socks4.rb +66 -0
  1074. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/stomp.rb +200 -0
  1075. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/protocols/tcptest.rb +53 -0
  1076. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/queue.rb +61 -0
  1077. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/spawnable.rb +85 -0
  1078. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/streamer.rb +130 -0
  1079. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/timers.rb +56 -0
  1080. data/vendor/gems/gems/eventmachine-0.12.10/lib/em/version.rb +3 -0
  1081. data/vendor/gems/gems/eventmachine-0.12.10/lib/eventmachine.rb +1592 -0
  1082. data/vendor/gems/gems/eventmachine-0.12.10/lib/evma.rb +32 -0
  1083. data/vendor/gems/gems/eventmachine-0.12.10/lib/evma/callback.rb +32 -0
  1084. data/vendor/gems/gems/eventmachine-0.12.10/lib/evma/container.rb +75 -0
  1085. data/vendor/gems/gems/eventmachine-0.12.10/lib/evma/factory.rb +77 -0
  1086. data/vendor/gems/gems/eventmachine-0.12.10/lib/evma/protocol.rb +87 -0
  1087. data/vendor/gems/gems/eventmachine-0.12.10/lib/evma/reactor.rb +48 -0
  1088. data/vendor/gems/gems/eventmachine-0.12.10/lib/jeventmachine.rb +257 -0
  1089. data/vendor/gems/gems/eventmachine-0.12.10/lib/pr_eventmachine.rb +1022 -0
  1090. data/vendor/gems/gems/eventmachine-0.12.10/setup.rb +1585 -0
  1091. data/vendor/gems/gems/eventmachine-0.12.10/tasks/cpp.rake_example +77 -0
  1092. data/vendor/gems/gems/eventmachine-0.12.10/tests/client.crt +31 -0
  1093. data/vendor/gems/gems/eventmachine-0.12.10/tests/client.key +51 -0
  1094. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_attach.rb +126 -0
  1095. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_basic.rb +284 -0
  1096. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_channel.rb +63 -0
  1097. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_connection_count.rb +35 -0
  1098. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_defer.rb +47 -0
  1099. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_epoll.rb +160 -0
  1100. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_error_handler.rb +35 -0
  1101. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_errors.rb +82 -0
  1102. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_exc.rb +55 -0
  1103. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_file_watch.rb +49 -0
  1104. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_futures.rb +198 -0
  1105. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_get_sock_opt.rb +30 -0
  1106. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_handler_check.rb +37 -0
  1107. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_hc.rb +218 -0
  1108. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_httpclient.rb +218 -0
  1109. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_httpclient2.rb +153 -0
  1110. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_inactivity_timeout.rb +50 -0
  1111. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_kb.rb +60 -0
  1112. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_ltp.rb +182 -0
  1113. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_ltp2.rb +317 -0
  1114. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_next_tick.rb +133 -0
  1115. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_object_protocol.rb +37 -0
  1116. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_pause.rb +70 -0
  1117. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_pending_connect_timeout.rb +48 -0
  1118. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_process_watch.rb +48 -0
  1119. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_processes.rb +128 -0
  1120. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_proxy_connection.rb +92 -0
  1121. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_pure.rb +125 -0
  1122. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_queue.rb +44 -0
  1123. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_running.rb +42 -0
  1124. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_sasl.rb +72 -0
  1125. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_send_file.rb +242 -0
  1126. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_servers.rb +76 -0
  1127. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_smtpclient.rb +83 -0
  1128. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_smtpserver.rb +85 -0
  1129. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_spawn.rb +322 -0
  1130. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_ssl_args.rb +79 -0
  1131. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_ssl_methods.rb +50 -0
  1132. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_ssl_verify.rb +82 -0
  1133. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_timers.rb +162 -0
  1134. data/vendor/gems/gems/eventmachine-0.12.10/tests/test_ud.rb +36 -0
  1135. data/vendor/gems/gems/eventmachine-0.12.10/tests/testem.rb +31 -0
  1136. data/vendor/gems/gems/eventmachine-0.12.10/web/whatis +7 -0
  1137. data/vendor/gems/gems/extlib-0.9.13/History.txt +77 -0
  1138. data/vendor/gems/gems/extlib-0.9.13/LICENSE +47 -0
  1139. data/vendor/gems/gems/extlib-0.9.13/README +0 -0
  1140. data/vendor/gems/gems/extlib-0.9.13/Rakefile +180 -0
  1141. data/vendor/gems/gems/extlib-0.9.13/lib/extlib.rb +50 -0
  1142. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/array.rb +36 -0
  1143. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/assertions.rb +8 -0
  1144. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/blank.rb +89 -0
  1145. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/boolean.rb +11 -0
  1146. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/byte_array.rb +6 -0
  1147. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/class.rb +177 -0
  1148. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/datetime.rb +29 -0
  1149. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/dictionary.rb +433 -0
  1150. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/hash.rb +442 -0
  1151. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/hook.rb +401 -0
  1152. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/inflection.rb +434 -0
  1153. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/lazy_array.rb +457 -0
  1154. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/lazy_module.rb +18 -0
  1155. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/logger.rb +198 -0
  1156. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/mash.rb +155 -0
  1157. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/module.rb +47 -0
  1158. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/nil.rb +5 -0
  1159. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/numeric.rb +5 -0
  1160. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/object.rb +175 -0
  1161. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/object_space.rb +13 -0
  1162. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/pathname.rb +20 -0
  1163. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/pooling.rb +235 -0
  1164. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/rubygems.rb +38 -0
  1165. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/simple_set.rb +66 -0
  1166. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/string.rb +175 -0
  1167. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/struct.rb +17 -0
  1168. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/symbol.rb +21 -0
  1169. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/tasks/release.rb +15 -0
  1170. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/time.rb +43 -0
  1171. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/version.rb +3 -0
  1172. data/vendor/gems/gems/extlib-0.9.13/lib/extlib/virtual_file.rb +10 -0
  1173. data/vendor/gems/gems/extlib-0.9.13/spec/array_spec.rb +39 -0
  1174. data/vendor/gems/gems/extlib-0.9.13/spec/blank_spec.rb +85 -0
  1175. data/vendor/gems/gems/extlib-0.9.13/spec/byte_array_spec.rb +7 -0
  1176. data/vendor/gems/gems/extlib-0.9.13/spec/class_spec.rb +157 -0
  1177. data/vendor/gems/gems/extlib-0.9.13/spec/datetime_spec.rb +22 -0
  1178. data/vendor/gems/gems/extlib-0.9.13/spec/hash_spec.rb +537 -0
  1179. data/vendor/gems/gems/extlib-0.9.13/spec/hook_spec.rb +1234 -0
  1180. data/vendor/gems/gems/extlib-0.9.13/spec/inflection/plural_spec.rb +564 -0
  1181. data/vendor/gems/gems/extlib-0.9.13/spec/inflection/singular_spec.rb +497 -0
  1182. data/vendor/gems/gems/extlib-0.9.13/spec/inflection_extras_spec.rb +93 -0
  1183. data/vendor/gems/gems/extlib-0.9.13/spec/lazy_array_spec.rb +1932 -0
  1184. data/vendor/gems/gems/extlib-0.9.13/spec/lazy_module_spec.rb +38 -0
  1185. data/vendor/gems/gems/extlib-0.9.13/spec/mash_spec.rb +311 -0
  1186. data/vendor/gems/gems/extlib-0.9.13/spec/module_spec.rb +70 -0
  1187. data/vendor/gems/gems/extlib-0.9.13/spec/object_space_spec.rb +9 -0
  1188. data/vendor/gems/gems/extlib-0.9.13/spec/object_spec.rb +114 -0
  1189. data/vendor/gems/gems/extlib-0.9.13/spec/pooling_spec.rb +511 -0
  1190. data/vendor/gems/gems/extlib-0.9.13/spec/simple_set_spec.rb +57 -0
  1191. data/vendor/gems/gems/extlib-0.9.13/spec/spec.opts +3 -0
  1192. data/vendor/gems/gems/extlib-0.9.13/spec/spec_helper.rb +10 -0
  1193. data/vendor/gems/gems/extlib-0.9.13/spec/string_spec.rb +220 -0
  1194. data/vendor/gems/gems/extlib-0.9.13/spec/struct_spec.rb +12 -0
  1195. data/vendor/gems/gems/extlib-0.9.13/spec/symbol_spec.rb +8 -0
  1196. data/vendor/gems/gems/extlib-0.9.13/spec/time_spec.rb +29 -0
  1197. data/vendor/gems/gems/extlib-0.9.13/spec/try_call_spec.rb +73 -0
  1198. data/vendor/gems/gems/extlib-0.9.13/spec/try_dup_spec.rb +45 -0
  1199. data/vendor/gems/gems/extlib-0.9.13/spec/virtual_file_spec.rb +21 -0
  1200. data/vendor/gems/gems/haml-2.2.13/.yardopts +5 -0
  1201. data/vendor/gems/gems/haml-2.2.13/CONTRIBUTING +4 -0
  1202. data/vendor/gems/gems/haml-2.2.13/MIT-LICENSE +20 -0
  1203. data/vendor/gems/gems/haml-2.2.13/README.md +347 -0
  1204. data/vendor/gems/gems/haml-2.2.13/REVISION +1 -0
  1205. data/vendor/gems/gems/haml-2.2.13/Rakefile +378 -0
  1206. data/vendor/gems/gems/haml-2.2.13/VERSION +1 -0
  1207. data/vendor/gems/gems/haml-2.2.13/VERSION_NAME +1 -0
  1208. data/vendor/gems/gems/haml-2.2.13/bin/css2sass +7 -0
  1209. data/vendor/gems/gems/haml-2.2.13/bin/haml +9 -0
  1210. data/vendor/gems/gems/haml-2.2.13/bin/html2haml +7 -0
  1211. data/vendor/gems/gems/haml-2.2.13/bin/sass +8 -0
  1212. data/vendor/gems/gems/haml-2.2.13/extra/haml-mode.el +662 -0
  1213. data/vendor/gems/gems/haml-2.2.13/extra/sass-mode.el +206 -0
  1214. data/vendor/gems/gems/haml-2.2.13/extra/update_watch.rb +13 -0
  1215. data/vendor/gems/gems/haml-2.2.13/init.rb +16 -0
  1216. data/vendor/gems/gems/haml-2.2.13/lib/haml.rb +40 -0
  1217. data/vendor/gems/gems/haml-2.2.13/lib/haml/buffer.rb +302 -0
  1218. data/vendor/gems/gems/haml-2.2.13/lib/haml/engine.rb +299 -0
  1219. data/vendor/gems/gems/haml-2.2.13/lib/haml/error.rb +22 -0
  1220. data/vendor/gems/gems/haml-2.2.13/lib/haml/exec.rb +459 -0
  1221. data/vendor/gems/gems/haml-2.2.13/lib/haml/filters.rb +341 -0
  1222. data/vendor/gems/gems/haml-2.2.13/lib/haml/helpers.rb +561 -0
  1223. data/vendor/gems/gems/haml-2.2.13/lib/haml/helpers/action_view_extensions.rb +55 -0
  1224. data/vendor/gems/gems/haml-2.2.13/lib/haml/helpers/action_view_mods.rb +177 -0
  1225. data/vendor/gems/gems/haml-2.2.13/lib/haml/helpers/xss_mods.rb +95 -0
  1226. data/vendor/gems/gems/haml-2.2.13/lib/haml/html.rb +262 -0
  1227. data/vendor/gems/gems/haml-2.2.13/lib/haml/precompiler.rb +1035 -0
  1228. data/vendor/gems/gems/haml-2.2.13/lib/haml/shared.rb +78 -0
  1229. data/vendor/gems/gems/haml-2.2.13/lib/haml/template.rb +85 -0
  1230. data/vendor/gems/gems/haml-2.2.13/lib/haml/template/patch.rb +58 -0
  1231. data/vendor/gems/gems/haml-2.2.13/lib/haml/template/plugin.rb +71 -0
  1232. data/vendor/gems/gems/haml-2.2.13/lib/haml/util.rb +265 -0
  1233. data/vendor/gems/gems/haml-2.2.13/lib/haml/version.rb +64 -0
  1234. data/vendor/gems/gems/haml-2.2.13/lib/sass.rb +24 -0
  1235. data/vendor/gems/gems/haml-2.2.13/lib/sass/css.rb +404 -0
  1236. data/vendor/gems/gems/haml-2.2.13/lib/sass/engine.rb +475 -0
  1237. data/vendor/gems/gems/haml-2.2.13/lib/sass/environment.rb +79 -0
  1238. data/vendor/gems/gems/haml-2.2.13/lib/sass/error.rb +57 -0
  1239. data/vendor/gems/gems/haml-2.2.13/lib/sass/files.rb +139 -0
  1240. data/vendor/gems/gems/haml-2.2.13/lib/sass/plugin.rb +223 -0
  1241. data/vendor/gems/gems/haml-2.2.13/lib/sass/plugin/merb.rb +57 -0
  1242. data/vendor/gems/gems/haml-2.2.13/lib/sass/plugin/rails.rb +24 -0
  1243. data/vendor/gems/gems/haml-2.2.13/lib/sass/repl.rb +58 -0
  1244. data/vendor/gems/gems/haml-2.2.13/lib/sass/script.rb +59 -0
  1245. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/bool.rb +17 -0
  1246. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/color.rb +183 -0
  1247. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/funcall.rb +50 -0
  1248. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/functions.rb +199 -0
  1249. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/lexer.rb +191 -0
  1250. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/literal.rb +177 -0
  1251. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/node.rb +14 -0
  1252. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/number.rb +381 -0
  1253. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/operation.rb +45 -0
  1254. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/parser.rb +222 -0
  1255. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/string.rb +12 -0
  1256. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/unary_operation.rb +34 -0
  1257. data/vendor/gems/gems/haml-2.2.13/lib/sass/script/variable.rb +31 -0
  1258. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/comment_node.rb +84 -0
  1259. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/debug_node.rb +30 -0
  1260. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/directive_node.rb +68 -0
  1261. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/for_node.rb +48 -0
  1262. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/if_node.rb +54 -0
  1263. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/import_node.rb +65 -0
  1264. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/mixin_def_node.rb +29 -0
  1265. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/mixin_node.rb +48 -0
  1266. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/node.rb +251 -0
  1267. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/prop_node.rb +121 -0
  1268. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/rule_node.rb +223 -0
  1269. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/variable_node.rb +34 -0
  1270. data/vendor/gems/gems/haml-2.2.13/lib/sass/tree/while_node.rb +31 -0
  1271. data/vendor/gems/gems/haml-2.2.13/rails/init.rb +1 -0
  1272. data/vendor/gems/gems/haml-2.2.13/test/benchmark.rb +99 -0
  1273. data/vendor/gems/gems/haml-2.2.13/test/haml/engine_test.rb +1231 -0
  1274. data/vendor/gems/gems/haml-2.2.13/test/haml/helper_test.rb +282 -0
  1275. data/vendor/gems/gems/haml-2.2.13/test/haml/html2haml_test.rb +130 -0
  1276. data/vendor/gems/gems/haml-2.2.13/test/haml/markaby/standard.mab +52 -0
  1277. data/vendor/gems/gems/haml-2.2.13/test/haml/mocks/article.rb +6 -0
  1278. data/vendor/gems/gems/haml-2.2.13/test/haml/results/content_for_layout.xhtml +12 -0
  1279. data/vendor/gems/gems/haml-2.2.13/test/haml/results/eval_suppressed.xhtml +9 -0
  1280. data/vendor/gems/gems/haml-2.2.13/test/haml/results/filters.xhtml +62 -0
  1281. data/vendor/gems/gems/haml-2.2.13/test/haml/results/helpers.xhtml +93 -0
  1282. data/vendor/gems/gems/haml-2.2.13/test/haml/results/helpful.xhtml +10 -0
  1283. data/vendor/gems/gems/haml-2.2.13/test/haml/results/just_stuff.xhtml +68 -0
  1284. data/vendor/gems/gems/haml-2.2.13/test/haml/results/list.xhtml +12 -0
  1285. data/vendor/gems/gems/haml-2.2.13/test/haml/results/nuke_inner_whitespace.xhtml +40 -0
  1286. data/vendor/gems/gems/haml-2.2.13/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
  1287. data/vendor/gems/gems/haml-2.2.13/test/haml/results/original_engine.xhtml +20 -0
  1288. data/vendor/gems/gems/haml-2.2.13/test/haml/results/partial_layout.xhtml +5 -0
  1289. data/vendor/gems/gems/haml-2.2.13/test/haml/results/partials.xhtml +21 -0
  1290. data/vendor/gems/gems/haml-2.2.13/test/haml/results/render_layout.xhtml +3 -0
  1291. data/vendor/gems/gems/haml-2.2.13/test/haml/results/silent_script.xhtml +74 -0
  1292. data/vendor/gems/gems/haml-2.2.13/test/haml/results/standard.xhtml +162 -0
  1293. data/vendor/gems/gems/haml-2.2.13/test/haml/results/tag_parsing.xhtml +23 -0
  1294. data/vendor/gems/gems/haml-2.2.13/test/haml/results/very_basic.xhtml +5 -0
  1295. data/vendor/gems/gems/haml-2.2.13/test/haml/results/whitespace_handling.xhtml +89 -0
  1296. data/vendor/gems/gems/haml-2.2.13/test/haml/rhtml/_av_partial_1.rhtml +12 -0
  1297. data/vendor/gems/gems/haml-2.2.13/test/haml/rhtml/_av_partial_2.rhtml +8 -0
  1298. data/vendor/gems/gems/haml-2.2.13/test/haml/rhtml/action_view.rhtml +62 -0
  1299. data/vendor/gems/gems/haml-2.2.13/test/haml/rhtml/standard.rhtml +54 -0
  1300. data/vendor/gems/gems/haml-2.2.13/test/haml/spec/README.md +97 -0
  1301. data/vendor/gems/gems/haml-2.2.13/test/haml/spec/lua_haml_spec.lua +30 -0
  1302. data/vendor/gems/gems/haml-2.2.13/test/haml/spec/ruby_haml_test.rb +19 -0
  1303. data/vendor/gems/gems/haml-2.2.13/test/haml/spec/tests.json +488 -0
  1304. data/vendor/gems/gems/haml-2.2.13/test/haml/template_test.rb +296 -0
  1305. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_av_partial_1.haml +9 -0
  1306. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_av_partial_1_ugly.haml +9 -0
  1307. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_av_partial_2.haml +5 -0
  1308. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_av_partial_2_ugly.haml +5 -0
  1309. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_layout.erb +3 -0
  1310. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_layout_for_partial.haml +3 -0
  1311. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_partial.haml +8 -0
  1312. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/_text_area.haml +3 -0
  1313. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/action_view.haml +47 -0
  1314. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/action_view_ugly.haml +47 -0
  1315. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/breakage.haml +8 -0
  1316. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/content_for_layout.haml +8 -0
  1317. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/eval_suppressed.haml +11 -0
  1318. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/filters.haml +66 -0
  1319. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/helpers.haml +95 -0
  1320. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/helpful.haml +11 -0
  1321. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/just_stuff.haml +83 -0
  1322. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/list.haml +12 -0
  1323. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/nuke_inner_whitespace.haml +32 -0
  1324. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/nuke_outer_whitespace.haml +144 -0
  1325. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/original_engine.haml +17 -0
  1326. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/partial_layout.haml +3 -0
  1327. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/partialize.haml +1 -0
  1328. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/partials.haml +12 -0
  1329. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/render_layout.haml +2 -0
  1330. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/silent_script.haml +40 -0
  1331. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/standard.haml +42 -0
  1332. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/standard_ugly.haml +42 -0
  1333. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/tag_parsing.haml +21 -0
  1334. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/very_basic.haml +4 -0
  1335. data/vendor/gems/gems/haml-2.2.13/test/haml/templates/whitespace_handling.haml +87 -0
  1336. data/vendor/gems/gems/haml-2.2.13/test/haml/util_test.rb +97 -0
  1337. data/vendor/gems/gems/haml-2.2.13/test/linked_rails.rb +21 -0
  1338. data/vendor/gems/gems/haml-2.2.13/test/sass/css2sass_test.rb +251 -0
  1339. data/vendor/gems/gems/haml-2.2.13/test/sass/engine_test.rb +914 -0
  1340. data/vendor/gems/gems/haml-2.2.13/test/sass/functions_test.rb +126 -0
  1341. data/vendor/gems/gems/haml-2.2.13/test/sass/more_results/more1.css +9 -0
  1342. data/vendor/gems/gems/haml-2.2.13/test/sass/more_results/more1_with_line_comments.css +26 -0
  1343. data/vendor/gems/gems/haml-2.2.13/test/sass/more_results/more_import.css +29 -0
  1344. data/vendor/gems/gems/haml-2.2.13/test/sass/more_templates/_more_partial.sass +2 -0
  1345. data/vendor/gems/gems/haml-2.2.13/test/sass/more_templates/more1.sass +23 -0
  1346. data/vendor/gems/gems/haml-2.2.13/test/sass/more_templates/more_import.sass +11 -0
  1347. data/vendor/gems/gems/haml-2.2.13/test/sass/plugin_test.rb +222 -0
  1348. data/vendor/gems/gems/haml-2.2.13/test/sass/results/alt.css +4 -0
  1349. data/vendor/gems/gems/haml-2.2.13/test/sass/results/basic.css +9 -0
  1350. data/vendor/gems/gems/haml-2.2.13/test/sass/results/compact.css +5 -0
  1351. data/vendor/gems/gems/haml-2.2.13/test/sass/results/complex.css +87 -0
  1352. data/vendor/gems/gems/haml-2.2.13/test/sass/results/compressed.css +1 -0
  1353. data/vendor/gems/gems/haml-2.2.13/test/sass/results/expanded.css +19 -0
  1354. data/vendor/gems/gems/haml-2.2.13/test/sass/results/import.css +29 -0
  1355. data/vendor/gems/gems/haml-2.2.13/test/sass/results/line_numbers.css +49 -0
  1356. data/vendor/gems/gems/haml-2.2.13/test/sass/results/mixins.css +95 -0
  1357. data/vendor/gems/gems/haml-2.2.13/test/sass/results/multiline.css +24 -0
  1358. data/vendor/gems/gems/haml-2.2.13/test/sass/results/nested.css +22 -0
  1359. data/vendor/gems/gems/haml-2.2.13/test/sass/results/parent_ref.css +13 -0
  1360. data/vendor/gems/gems/haml-2.2.13/test/sass/results/script.css +16 -0
  1361. data/vendor/gems/gems/haml-2.2.13/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  1362. data/vendor/gems/gems/haml-2.2.13/test/sass/results/subdir/subdir.css +3 -0
  1363. data/vendor/gems/gems/haml-2.2.13/test/sass/results/units.css +11 -0
  1364. data/vendor/gems/gems/haml-2.2.13/test/sass/script_test.rb +261 -0
  1365. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/_partial.sass +2 -0
  1366. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/alt.sass +16 -0
  1367. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/basic.sass +23 -0
  1368. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/bork.sass +2 -0
  1369. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/bork2.sass +2 -0
  1370. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/compact.sass +17 -0
  1371. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/complex.sass +307 -0
  1372. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/compressed.sass +15 -0
  1373. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/expanded.sass +17 -0
  1374. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/import.sass +11 -0
  1375. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/importee.sass +19 -0
  1376. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/line_numbers.sass +13 -0
  1377. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/mixins.sass +76 -0
  1378. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/multiline.sass +20 -0
  1379. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/nested.sass +25 -0
  1380. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/parent_ref.sass +25 -0
  1381. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/script.sass +101 -0
  1382. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  1383. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  1384. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/subdir/subdir.sass +6 -0
  1385. data/vendor/gems/gems/haml-2.2.13/test/sass/templates/units.sass +11 -0
  1386. data/vendor/gems/gems/haml-2.2.13/test/test_helper.rb +38 -0
  1387. data/vendor/gems/gems/highline-1.5.1/CHANGELOG +222 -0
  1388. data/vendor/gems/gems/highline-1.5.1/INSTALL +35 -0
  1389. data/vendor/gems/gems/highline-1.5.1/LICENSE +7 -0
  1390. data/vendor/gems/gems/highline-1.5.1/README +63 -0
  1391. data/vendor/gems/gems/highline-1.5.1/Rakefile +82 -0
  1392. data/vendor/gems/gems/highline-1.5.1/TODO +6 -0
  1393. data/vendor/gems/gems/highline-1.5.1/examples/ansi_colors.rb +38 -0
  1394. data/vendor/gems/gems/highline-1.5.1/examples/asking_for_arrays.rb +18 -0
  1395. data/vendor/gems/gems/highline-1.5.1/examples/basic_usage.rb +75 -0
  1396. data/vendor/gems/gems/highline-1.5.1/examples/color_scheme.rb +32 -0
  1397. data/vendor/gems/gems/highline-1.5.1/examples/limit.rb +12 -0
  1398. data/vendor/gems/gems/highline-1.5.1/examples/menus.rb +65 -0
  1399. data/vendor/gems/gems/highline-1.5.1/examples/overwrite.rb +19 -0
  1400. data/vendor/gems/gems/highline-1.5.1/examples/page_and_wrap.rb +322 -0
  1401. data/vendor/gems/gems/highline-1.5.1/examples/password.rb +7 -0
  1402. data/vendor/gems/gems/highline-1.5.1/examples/trapping_eof.rb +22 -0
  1403. data/vendor/gems/gems/highline-1.5.1/examples/using_readline.rb +17 -0
  1404. data/vendor/gems/gems/highline-1.5.1/lib/highline.rb +758 -0
  1405. data/vendor/gems/gems/highline-1.5.1/lib/highline/color_scheme.rb +120 -0
  1406. data/vendor/gems/gems/highline-1.5.1/lib/highline/compatibility.rb +17 -0
  1407. data/vendor/gems/gems/highline-1.5.1/lib/highline/import.rb +43 -0
  1408. data/vendor/gems/gems/highline-1.5.1/lib/highline/menu.rb +395 -0
  1409. data/vendor/gems/gems/highline-1.5.1/lib/highline/question.rb +463 -0
  1410. data/vendor/gems/gems/highline-1.5.1/lib/highline/system_extensions.rb +193 -0
  1411. data/vendor/gems/gems/highline-1.5.1/setup.rb +1360 -0
  1412. data/vendor/gems/gems/highline-1.5.1/test/tc_color_scheme.rb +56 -0
  1413. data/vendor/gems/gems/highline-1.5.1/test/tc_highline.rb +823 -0
  1414. data/vendor/gems/gems/highline-1.5.1/test/tc_import.rb +54 -0
  1415. data/vendor/gems/gems/highline-1.5.1/test/tc_menu.rb +429 -0
  1416. data/vendor/gems/gems/highline-1.5.1/test/ts_all.rb +15 -0
  1417. data/vendor/gems/gems/json-1.2.0/.require_paths +4 -0
  1418. data/vendor/gems/gems/json-1.2.0/CHANGES +136 -0
  1419. data/vendor/gems/gems/json-1.2.0/COPYING +58 -0
  1420. data/vendor/gems/gems/json-1.2.0/GPL +340 -0
  1421. data/vendor/gems/gems/json-1.2.0/README +360 -0
  1422. data/vendor/gems/gems/json-1.2.0/Rakefile +287 -0
  1423. data/vendor/gems/gems/json-1.2.0/TODO +1 -0
  1424. data/vendor/gems/gems/json-1.2.0/VERSION +1 -0
  1425. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +52 -0
  1426. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +1000 -0
  1427. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +1001 -0
  1428. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +900 -0
  1429. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +901 -0
  1430. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +1000 -0
  1431. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +1001 -0
  1432. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +261 -0
  1433. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +1000 -0
  1434. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +1001 -0
  1435. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +1000 -0
  1436. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +1001 -0
  1437. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +1000 -0
  1438. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +1001 -0
  1439. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +262 -0
  1440. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +1000 -0
  1441. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +1001 -0
  1442. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +82 -0
  1443. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +34 -0
  1444. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +900 -0
  1445. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +901 -0
  1446. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +81 -0
  1447. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +1000 -0
  1448. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +1001 -0
  1449. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +82 -0
  1450. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +1000 -0
  1451. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +1001 -0
  1452. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +82 -0
  1453. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +1000 -0
  1454. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +1001 -0
  1455. data/vendor/gems/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +82 -0
  1456. data/vendor/gems/gems/json-1.2.0/benchmarks/generator_benchmark.rb +165 -0
  1457. data/vendor/gems/gems/json-1.2.0/benchmarks/parser_benchmark.rb +197 -0
  1458. data/vendor/gems/gems/json-1.2.0/bin/edit_json.rb +9 -0
  1459. data/vendor/gems/gems/json-1.2.0/bin/prettify_json.rb +75 -0
  1460. data/vendor/gems/gems/json-1.2.0/data/example.json +1 -0
  1461. data/vendor/gems/gems/json-1.2.0/data/index.html +38 -0
  1462. data/vendor/gems/gems/json-1.2.0/data/prototype.js +4184 -0
  1463. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator.bundle +0 -0
  1464. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/Makefile +157 -0
  1465. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/extconf.rb +11 -0
  1466. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/generator.bundle +0 -0
  1467. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/generator.c +935 -0
  1468. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/generator.o +0 -0
  1469. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/mkmf.log +21 -0
  1470. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/unicode.c +180 -0
  1471. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/unicode.h +53 -0
  1472. data/vendor/gems/gems/json-1.2.0/ext/json/ext/generator/unicode.o +0 -0
  1473. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser.bundle +0 -0
  1474. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/Makefile +157 -0
  1475. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/extconf.rb +11 -0
  1476. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/mkmf.log +20 -0
  1477. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/parser.bundle +0 -0
  1478. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/parser.c +1880 -0
  1479. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/parser.o +0 -0
  1480. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/parser.rl +737 -0
  1481. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/unicode.c +154 -0
  1482. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/unicode.h +58 -0
  1483. data/vendor/gems/gems/json-1.2.0/ext/json/ext/parser/unicode.o +0 -0
  1484. data/vendor/gems/gems/json-1.2.0/install.rb +26 -0
  1485. data/vendor/gems/gems/json-1.2.0/lib/json.rb +10 -0
  1486. data/vendor/gems/gems/json-1.2.0/lib/json/Array.xpm +21 -0
  1487. data/vendor/gems/gems/json-1.2.0/lib/json/FalseClass.xpm +21 -0
  1488. data/vendor/gems/gems/json-1.2.0/lib/json/Hash.xpm +21 -0
  1489. data/vendor/gems/gems/json-1.2.0/lib/json/Key.xpm +73 -0
  1490. data/vendor/gems/gems/json-1.2.0/lib/json/NilClass.xpm +21 -0
  1491. data/vendor/gems/gems/json-1.2.0/lib/json/Numeric.xpm +28 -0
  1492. data/vendor/gems/gems/json-1.2.0/lib/json/String.xpm +96 -0
  1493. data/vendor/gems/gems/json-1.2.0/lib/json/TrueClass.xpm +21 -0
  1494. data/vendor/gems/gems/json-1.2.0/lib/json/add/core.rb +135 -0
  1495. data/vendor/gems/gems/json-1.2.0/lib/json/add/rails.rb +58 -0
  1496. data/vendor/gems/gems/json-1.2.0/lib/json/common.rb +371 -0
  1497. data/vendor/gems/gems/json-1.2.0/lib/json/editor.rb +1371 -0
  1498. data/vendor/gems/gems/json-1.2.0/lib/json/ext.rb +15 -0
  1499. data/vendor/gems/gems/json-1.2.0/lib/json/json.xpm +1499 -0
  1500. data/vendor/gems/gems/json-1.2.0/lib/json/pure.rb +77 -0
  1501. data/vendor/gems/gems/json-1.2.0/lib/json/pure/generator.rb +443 -0
  1502. data/vendor/gems/gems/json-1.2.0/lib/json/pure/parser.rb +303 -0
  1503. data/vendor/gems/gems/json-1.2.0/lib/json/version.rb +8 -0
  1504. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail1.json +1 -0
  1505. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail10.json +1 -0
  1506. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail11.json +1 -0
  1507. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail12.json +1 -0
  1508. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail13.json +1 -0
  1509. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail14.json +1 -0
  1510. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail18.json +1 -0
  1511. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail19.json +1 -0
  1512. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail2.json +1 -0
  1513. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail20.json +1 -0
  1514. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail21.json +1 -0
  1515. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail22.json +1 -0
  1516. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail23.json +1 -0
  1517. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail24.json +1 -0
  1518. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail25.json +1 -0
  1519. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail27.json +2 -0
  1520. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail28.json +2 -0
  1521. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail3.json +1 -0
  1522. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail4.json +1 -0
  1523. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail5.json +1 -0
  1524. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail6.json +1 -0
  1525. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail7.json +1 -0
  1526. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail8.json +1 -0
  1527. data/vendor/gems/gems/json-1.2.0/tests/fixtures/fail9.json +1 -0
  1528. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass1.json +56 -0
  1529. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass15.json +1 -0
  1530. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass16.json +1 -0
  1531. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass17.json +1 -0
  1532. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass2.json +1 -0
  1533. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass26.json +1 -0
  1534. data/vendor/gems/gems/json-1.2.0/tests/fixtures/pass3.json +6 -0
  1535. data/vendor/gems/gems/json-1.2.0/tests/test_json.rb +320 -0
  1536. data/vendor/gems/gems/json-1.2.0/tests/test_json_addition.rb +164 -0
  1537. data/vendor/gems/gems/json-1.2.0/tests/test_json_encoding.rb +67 -0
  1538. data/vendor/gems/gems/json-1.2.0/tests/test_json_fixtures.rb +34 -0
  1539. data/vendor/gems/gems/json-1.2.0/tests/test_json_generate.rb +120 -0
  1540. data/vendor/gems/gems/json-1.2.0/tests/test_json_rails.rb +146 -0
  1541. data/vendor/gems/gems/json-1.2.0/tests/test_json_unicode.rb +62 -0
  1542. data/vendor/gems/gems/json-1.2.0/tools/fuzz.rb +139 -0
  1543. data/vendor/gems/gems/json-1.2.0/tools/server.rb +61 -0
  1544. data/vendor/gems/gems/launchy-0.3.3/HISTORY +57 -0
  1545. data/vendor/gems/gems/launchy-0.3.3/LICENSE +31 -0
  1546. data/vendor/gems/gems/launchy-0.3.3/README +49 -0
  1547. data/vendor/gems/gems/launchy-0.3.3/Rakefile +62 -0
  1548. data/vendor/gems/gems/launchy-0.3.3/bin/launchy +12 -0
  1549. data/vendor/gems/gems/launchy-0.3.3/gemspec.rb +41 -0
  1550. data/vendor/gems/gems/launchy-0.3.3/lib/launchy.rb +53 -0
  1551. data/vendor/gems/gems/launchy-0.3.3/lib/launchy/application.rb +174 -0
  1552. data/vendor/gems/gems/launchy-0.3.3/lib/launchy/browser.rb +98 -0
  1553. data/vendor/gems/gems/launchy-0.3.3/lib/launchy/command_line.rb +48 -0
  1554. data/vendor/gems/gems/launchy-0.3.3/lib/launchy/paths.rb +53 -0
  1555. data/vendor/gems/gems/launchy-0.3.3/lib/launchy/version.rb +17 -0
  1556. data/vendor/gems/gems/launchy-0.3.3/spec/application_spec.rb +58 -0
  1557. data/vendor/gems/gems/launchy-0.3.3/spec/browser_spec.rb +50 -0
  1558. data/vendor/gems/gems/launchy-0.3.3/spec/launchy_spec.rb +18 -0
  1559. data/vendor/gems/gems/launchy-0.3.3/spec/paths_spec.rb +15 -0
  1560. data/vendor/gems/gems/launchy-0.3.3/spec/spec_helper.rb +5 -0
  1561. data/vendor/gems/gems/launchy-0.3.3/spec/version_spec.rb +11 -0
  1562. data/vendor/gems/gems/launchy-0.3.3/tasks/announce.rake +39 -0
  1563. data/vendor/gems/gems/launchy-0.3.3/tasks/config.rb +107 -0
  1564. data/vendor/gems/gems/launchy-0.3.3/tasks/distribution.rake +46 -0
  1565. data/vendor/gems/gems/launchy-0.3.3/tasks/documentation.rake +32 -0
  1566. data/vendor/gems/gems/launchy-0.3.3/tasks/rspec.rake +29 -0
  1567. data/vendor/gems/gems/launchy-0.3.3/tasks/rubyforge.rake +52 -0
  1568. data/vendor/gems/gems/launchy-0.3.3/tasks/utils.rb +80 -0
  1569. data/vendor/gems/gems/polyglot-0.2.9/History.txt +57 -0
  1570. data/vendor/gems/gems/polyglot-0.2.9/License.txt +20 -0
  1571. data/vendor/gems/gems/polyglot-0.2.9/Manifest.txt +7 -0
  1572. data/vendor/gems/gems/polyglot-0.2.9/README.txt +87 -0
  1573. data/vendor/gems/gems/polyglot-0.2.9/Rakefile +4 -0
  1574. data/vendor/gems/gems/polyglot-0.2.9/lib/polyglot.rb +81 -0
  1575. data/vendor/gems/gems/polyglot-0.2.9/lib/polyglot/version.rb +9 -0
  1576. data/vendor/gems/gems/polyglot-0.2.9/test/test_helper.rb +2 -0
  1577. data/vendor/gems/gems/polyglot-0.2.9/test/test_polyglot.rb +44 -0
  1578. data/vendor/gems/gems/rack-1.0.1/COPYING +18 -0
  1579. data/vendor/gems/gems/rack-1.0.1/KNOWN-ISSUES +18 -0
  1580. data/vendor/gems/gems/rack-1.0.1/RDOX +428 -0
  1581. data/vendor/gems/gems/rack-1.0.1/README +364 -0
  1582. data/vendor/gems/gems/rack-1.0.1/Rakefile +164 -0
  1583. data/vendor/gems/gems/rack-1.0.1/SPEC +164 -0
  1584. data/vendor/gems/gems/rack-1.0.1/bin/rackup +176 -0
  1585. data/vendor/gems/gems/rack-1.0.1/contrib/rack_logo.svg +111 -0
  1586. data/vendor/gems/gems/rack-1.0.1/example/lobster.ru +4 -0
  1587. data/vendor/gems/gems/rack-1.0.1/example/protectedlobster.rb +14 -0
  1588. data/vendor/gems/gems/rack-1.0.1/example/protectedlobster.ru +8 -0
  1589. data/vendor/gems/gems/rack-1.0.1/lib/rack.rb +90 -0
  1590. data/vendor/gems/gems/rack-1.0.1/lib/rack/adapter/camping.rb +22 -0
  1591. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/abstract/handler.rb +37 -0
  1592. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/abstract/request.rb +37 -0
  1593. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/basic.rb +58 -0
  1594. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/md5.rb +124 -0
  1595. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/nonce.rb +51 -0
  1596. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/params.rb +55 -0
  1597. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/digest/request.rb +40 -0
  1598. data/vendor/gems/gems/rack-1.0.1/lib/rack/auth/openid.rb +480 -0
  1599. data/vendor/gems/gems/rack-1.0.1/lib/rack/builder.rb +63 -0
  1600. data/vendor/gems/gems/rack-1.0.1/lib/rack/cascade.rb +36 -0
  1601. data/vendor/gems/gems/rack-1.0.1/lib/rack/chunked.rb +49 -0
  1602. data/vendor/gems/gems/rack-1.0.1/lib/rack/commonlogger.rb +61 -0
  1603. data/vendor/gems/gems/rack-1.0.1/lib/rack/conditionalget.rb +47 -0
  1604. data/vendor/gems/gems/rack-1.0.1/lib/rack/content_length.rb +29 -0
  1605. data/vendor/gems/gems/rack-1.0.1/lib/rack/content_type.rb +23 -0
  1606. data/vendor/gems/gems/rack-1.0.1/lib/rack/deflater.rb +96 -0
  1607. data/vendor/gems/gems/rack-1.0.1/lib/rack/directory.rb +153 -0
  1608. data/vendor/gems/gems/rack-1.0.1/lib/rack/file.rb +88 -0
  1609. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler.rb +69 -0
  1610. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/cgi.rb +61 -0
  1611. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/evented_mongrel.rb +8 -0
  1612. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/fastcgi.rb +90 -0
  1613. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/lsws.rb +60 -0
  1614. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/mongrel.rb +87 -0
  1615. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/scgi.rb +62 -0
  1616. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  1617. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/thin.rb +18 -0
  1618. data/vendor/gems/gems/rack-1.0.1/lib/rack/handler/webrick.rb +71 -0
  1619. data/vendor/gems/gems/rack-1.0.1/lib/rack/head.rb +19 -0
  1620. data/vendor/gems/gems/rack-1.0.1/lib/rack/lint.rb +546 -0
  1621. data/vendor/gems/gems/rack-1.0.1/lib/rack/lobster.rb +65 -0
  1622. data/vendor/gems/gems/rack-1.0.1/lib/rack/lock.rb +16 -0
  1623. data/vendor/gems/gems/rack-1.0.1/lib/rack/methodoverride.rb +27 -0
  1624. data/vendor/gems/gems/rack-1.0.1/lib/rack/mime.rb +204 -0
  1625. data/vendor/gems/gems/rack-1.0.1/lib/rack/mock.rb +163 -0
  1626. data/vendor/gems/gems/rack-1.0.1/lib/rack/recursive.rb +57 -0
  1627. data/vendor/gems/gems/rack-1.0.1/lib/rack/reloader.rb +106 -0
  1628. data/vendor/gems/gems/rack-1.0.1/lib/rack/request.rb +246 -0
  1629. data/vendor/gems/gems/rack-1.0.1/lib/rack/response.rb +183 -0
  1630. data/vendor/gems/gems/rack-1.0.1/lib/rack/rewindable_input.rb +100 -0
  1631. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/abstract/id.rb +142 -0
  1632. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/cookie.rb +91 -0
  1633. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/memcache.rb +109 -0
  1634. data/vendor/gems/gems/rack-1.0.1/lib/rack/session/pool.rb +100 -0
  1635. data/vendor/gems/gems/rack-1.0.1/lib/rack/showexceptions.rb +349 -0
  1636. data/vendor/gems/gems/rack-1.0.1/lib/rack/showstatus.rb +106 -0
  1637. data/vendor/gems/gems/rack-1.0.1/lib/rack/static.rb +38 -0
  1638. data/vendor/gems/gems/rack-1.0.1/lib/rack/urlmap.rb +55 -0
  1639. data/vendor/gems/gems/rack-1.0.1/lib/rack/utils.rb +401 -0
  1640. data/vendor/gems/gems/rack-1.0.1/rack.gemspec +54 -0
  1641. data/vendor/gems/gems/rack-1.0.1/test/cgi/lighttpd.conf +20 -0
  1642. data/vendor/gems/gems/rack-1.0.1/test/cgi/test +9 -0
  1643. data/vendor/gems/gems/rack-1.0.1/test/cgi/test.fcgi +8 -0
  1644. data/vendor/gems/gems/rack-1.0.1/test/cgi/test.ru +7 -0
  1645. data/vendor/gems/gems/rack-1.0.1/test/multipart/binary +0 -0
  1646. data/vendor/gems/gems/rack-1.0.1/test/multipart/empty +10 -0
  1647. data/vendor/gems/gems/rack-1.0.1/test/multipart/ie +6 -0
  1648. data/vendor/gems/gems/rack-1.0.1/test/multipart/nested +10 -0
  1649. data/vendor/gems/gems/rack-1.0.1/test/multipart/none +9 -0
  1650. data/vendor/gems/gems/rack-1.0.1/test/multipart/semicolon +6 -0
  1651. data/vendor/gems/gems/rack-1.0.1/test/multipart/text +10 -0
  1652. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_auth_basic.rb +73 -0
  1653. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_auth_digest.rb +226 -0
  1654. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_auth_openid.rb +84 -0
  1655. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_builder.rb +84 -0
  1656. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_camping.rb +51 -0
  1657. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_cascade.rb +50 -0
  1658. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_cgi.rb +89 -0
  1659. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_chunked.rb +62 -0
  1660. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_commonlogger.rb +32 -0
  1661. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_conditionalget.rb +41 -0
  1662. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_content_length.rb +43 -0
  1663. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_content_type.rb +30 -0
  1664. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_deflater.rb +127 -0
  1665. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_directory.rb +61 -0
  1666. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_fastcgi.rb +89 -0
  1667. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_file.rb +75 -0
  1668. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_handler.rb +43 -0
  1669. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_head.rb +30 -0
  1670. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_lint.rb +521 -0
  1671. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_lobster.rb +45 -0
  1672. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_lock.rb +38 -0
  1673. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_methodoverride.rb +60 -0
  1674. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_mock.rb +157 -0
  1675. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_mongrel.rb +189 -0
  1676. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_recursive.rb +77 -0
  1677. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_request.rb +504 -0
  1678. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_response.rb +218 -0
  1679. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_rewindable_input.rb +118 -0
  1680. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_session_cookie.rb +82 -0
  1681. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_session_memcache.rb +240 -0
  1682. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_session_pool.rb +172 -0
  1683. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_showexceptions.rb +21 -0
  1684. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_showstatus.rb +72 -0
  1685. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_static.rb +37 -0
  1686. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_thin.rb +91 -0
  1687. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_urlmap.rb +185 -0
  1688. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_utils.rb +387 -0
  1689. data/vendor/gems/gems/rack-1.0.1/test/spec_rack_webrick.rb +130 -0
  1690. data/vendor/gems/gems/rack-1.0.1/test/testrequest.rb +57 -0
  1691. data/vendor/gems/gems/rack-1.0.1/test/unregistered_handler/rack/handler/unregistered.rb +7 -0
  1692. data/vendor/gems/gems/rack-1.0.1/test/unregistered_handler/rack/handler/unregistered_long_one.rb +7 -0
  1693. data/vendor/gems/gems/rack-test-0.5.1/.document +4 -0
  1694. data/vendor/gems/gems/rack-test-0.5.1/.gitignore +4 -0
  1695. data/vendor/gems/gems/rack-test-0.5.1/History.txt +94 -0
  1696. data/vendor/gems/gems/rack-test-0.5.1/MIT-LICENSE.txt +19 -0
  1697. data/vendor/gems/gems/rack-test-0.5.1/README.rdoc +57 -0
  1698. data/vendor/gems/gems/rack-test-0.5.1/Rakefile +39 -0
  1699. data/vendor/gems/gems/rack-test-0.5.1/Thorfile +114 -0
  1700. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/mock_session.rb +60 -0
  1701. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/test.rb +276 -0
  1702. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/test/cookie_jar.rb +170 -0
  1703. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/test/methods.rb +80 -0
  1704. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/test/mock_digest_request.rb +29 -0
  1705. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/test/uploaded_file.rb +46 -0
  1706. data/vendor/gems/gems/rack-test-0.5.1/lib/rack/test/utils.rb +101 -0
  1707. data/vendor/gems/gems/rack-test-0.5.1/rack-test.gemspec +73 -0
  1708. data/vendor/gems/gems/rack-test-0.5.1/spec/fixtures/config.ru +3 -0
  1709. data/vendor/gems/gems/rack-test-0.5.1/spec/fixtures/fake_app.rb +115 -0
  1710. data/vendor/gems/gems/rack-test-0.5.1/spec/fixtures/foo.txt +1 -0
  1711. data/vendor/gems/gems/rack-test-0.5.1/spec/rack/test/cookie_spec.rb +190 -0
  1712. data/vendor/gems/gems/rack-test-0.5.1/spec/rack/test/digest_auth_spec.rb +48 -0
  1713. data/vendor/gems/gems/rack-test-0.5.1/spec/rack/test/multipart_spec.rb +87 -0
  1714. data/vendor/gems/gems/rack-test-0.5.1/spec/rack/test/utils_spec.rb +97 -0
  1715. data/vendor/gems/gems/rack-test-0.5.1/spec/rack/test_spec.rb +413 -0
  1716. data/vendor/gems/gems/rack-test-0.5.1/spec/spec.opts +2 -0
  1717. data/vendor/gems/gems/rack-test-0.5.1/spec/spec_helper.rb +52 -0
  1718. data/vendor/gems/gems/rake-0.8.7/CHANGES +440 -0
  1719. data/vendor/gems/gems/rake-0.8.7/MIT-LICENSE +21 -0
  1720. data/vendor/gems/gems/rake-0.8.7/README +196 -0
  1721. data/vendor/gems/gems/rake-0.8.7/Rakefile +430 -0
  1722. data/vendor/gems/gems/rake-0.8.7/TODO +20 -0
  1723. data/vendor/gems/gems/rake-0.8.7/bin/rake +31 -0
  1724. data/vendor/gems/gems/rake-0.8.7/doc/command_line_usage.rdoc +102 -0
  1725. data/vendor/gems/gems/rake-0.8.7/doc/example/Rakefile1 +38 -0
  1726. data/vendor/gems/gems/rake-0.8.7/doc/example/Rakefile2 +35 -0
  1727. data/vendor/gems/gems/rake-0.8.7/doc/example/a.c +6 -0
  1728. data/vendor/gems/gems/rake-0.8.7/doc/example/b.c +6 -0
  1729. data/vendor/gems/gems/rake-0.8.7/doc/example/main.c +11 -0
  1730. data/vendor/gems/gems/rake-0.8.7/doc/glossary.rdoc +51 -0
  1731. data/vendor/gems/gems/rake-0.8.7/doc/jamis.rb +591 -0
  1732. data/vendor/gems/gems/rake-0.8.7/doc/proto_rake.rdoc +127 -0
  1733. data/vendor/gems/gems/rake-0.8.7/doc/rake.1.gz +0 -0
  1734. data/vendor/gems/gems/rake-0.8.7/doc/rakefile.rdoc +534 -0
  1735. data/vendor/gems/gems/rake-0.8.7/doc/rational.rdoc +151 -0
  1736. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +23 -0
  1737. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +35 -0
  1738. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +53 -0
  1739. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +78 -0
  1740. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +46 -0
  1741. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +141 -0
  1742. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +119 -0
  1743. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +59 -0
  1744. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +121 -0
  1745. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +47 -0
  1746. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +114 -0
  1747. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +165 -0
  1748. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +112 -0
  1749. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +147 -0
  1750. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +53 -0
  1751. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +55 -0
  1752. data/vendor/gems/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +55 -0
  1753. data/vendor/gems/gems/rake-0.8.7/install.rb +88 -0
  1754. data/vendor/gems/gems/rake-0.8.7/lib/rake.rb +2506 -0
  1755. data/vendor/gems/gems/rake-0.8.7/lib/rake/alt_system.rb +108 -0
  1756. data/vendor/gems/gems/rake-0.8.7/lib/rake/classic_namespace.rb +8 -0
  1757. data/vendor/gems/gems/rake-0.8.7/lib/rake/clean.rb +33 -0
  1758. data/vendor/gems/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +24 -0
  1759. data/vendor/gems/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb +153 -0
  1760. data/vendor/gems/gems/rake-0.8.7/lib/rake/contrib/publisher.rb +75 -0
  1761. data/vendor/gems/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  1762. data/vendor/gems/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +47 -0
  1763. data/vendor/gems/gems/rake-0.8.7/lib/rake/contrib/sys.rb +209 -0
  1764. data/vendor/gems/gems/rake-0.8.7/lib/rake/gempackagetask.rb +97 -0
  1765. data/vendor/gems/gems/rake-0.8.7/lib/rake/loaders/makefile.rb +42 -0
  1766. data/vendor/gems/gems/rake-0.8.7/lib/rake/packagetask.rb +184 -0
  1767. data/vendor/gems/gems/rake-0.8.7/lib/rake/rake_test_loader.rb +5 -0
  1768. data/vendor/gems/gems/rake-0.8.7/lib/rake/rdoctask.rb +209 -0
  1769. data/vendor/gems/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +23 -0
  1770. data/vendor/gems/gems/rake-0.8.7/lib/rake/runtest.rb +23 -0
  1771. data/vendor/gems/gems/rake-0.8.7/lib/rake/tasklib.rb +23 -0
  1772. data/vendor/gems/gems/rake-0.8.7/lib/rake/testtask.rb +161 -0
  1773. data/vendor/gems/gems/rake-0.8.7/lib/rake/win32.rb +55 -0
  1774. data/vendor/gems/gems/rake-0.8.7/test/capture_stdout.rb +26 -0
  1775. data/vendor/gems/gems/rake-0.8.7/test/check_expansion.rb +5 -0
  1776. data/vendor/gems/gems/rake-0.8.7/test/check_no_expansion.rb +5 -0
  1777. data/vendor/gems/gems/rake-0.8.7/test/contrib/test_sys.rb +47 -0
  1778. data/vendor/gems/gems/rake-0.8.7/test/data/chains/Rakefile +15 -0
  1779. data/vendor/gems/gems/rake-0.8.7/test/data/default/Rakefile +19 -0
  1780. data/vendor/gems/gems/rake-0.8.7/test/data/dryrun/Rakefile +22 -0
  1781. data/vendor/gems/gems/rake-0.8.7/test/data/file_creation_task/Rakefile +33 -0
  1782. data/vendor/gems/gems/rake-0.8.7/test/data/imports/Rakefile +19 -0
  1783. data/vendor/gems/gems/rake-0.8.7/test/data/imports/deps.mf +1 -0
  1784. data/vendor/gems/gems/rake-0.8.7/test/data/multidesc/Rakefile +17 -0
  1785. data/vendor/gems/gems/rake-0.8.7/test/data/namespace/Rakefile +57 -0
  1786. data/vendor/gems/gems/rake-0.8.7/test/data/rakelib/test1.rb +3 -0
  1787. data/vendor/gems/gems/rake-0.8.7/test/data/rbext/rakefile.rb +3 -0
  1788. data/vendor/gems/gems/rake-0.8.7/test/data/sample.mf +14 -0
  1789. data/vendor/gems/gems/rake-0.8.7/test/data/statusreturn/Rakefile +8 -0
  1790. data/vendor/gems/gems/rake-0.8.7/test/data/unittest/Rakefile +1 -0
  1791. data/vendor/gems/gems/rake-0.8.7/test/filecreation.rb +32 -0
  1792. data/vendor/gems/gems/rake-0.8.7/test/functional.rb +15 -0
  1793. data/vendor/gems/gems/rake-0.8.7/test/in_environment.rb +30 -0
  1794. data/vendor/gems/gems/rake-0.8.7/test/rake_test_setup.rb +24 -0
  1795. data/vendor/gems/gems/rake-0.8.7/test/reqfile.rb +3 -0
  1796. data/vendor/gems/gems/rake-0.8.7/test/reqfile2.rb +3 -0
  1797. data/vendor/gems/gems/rake-0.8.7/test/session_functional.rb +339 -0
  1798. data/vendor/gems/gems/rake-0.8.7/test/shellcommand.rb +3 -0
  1799. data/vendor/gems/gems/rake-0.8.7/test/test_application.rb +675 -0
  1800. data/vendor/gems/gems/rake-0.8.7/test/test_clean.rb +14 -0
  1801. data/vendor/gems/gems/rake-0.8.7/test/test_definitions.rb +85 -0
  1802. data/vendor/gems/gems/rake-0.8.7/test/test_earlytime.rb +35 -0
  1803. data/vendor/gems/gems/rake-0.8.7/test/test_extension.rb +63 -0
  1804. data/vendor/gems/gems/rake-0.8.7/test/test_file_creation_task.rb +62 -0
  1805. data/vendor/gems/gems/rake-0.8.7/test/test_file_task.rb +143 -0
  1806. data/vendor/gems/gems/rake-0.8.7/test/test_filelist.rb +623 -0
  1807. data/vendor/gems/gems/rake-0.8.7/test/test_fileutils.rb +251 -0
  1808. data/vendor/gems/gems/rake-0.8.7/test/test_ftp.rb +59 -0
  1809. data/vendor/gems/gems/rake-0.8.7/test/test_invocation_chain.rb +81 -0
  1810. data/vendor/gems/gems/rake-0.8.7/test/test_makefile_loader.rb +26 -0
  1811. data/vendor/gems/gems/rake-0.8.7/test/test_multitask.rb +45 -0
  1812. data/vendor/gems/gems/rake-0.8.7/test/test_namespace.rb +55 -0
  1813. data/vendor/gems/gems/rake-0.8.7/test/test_package_task.rb +118 -0
  1814. data/vendor/gems/gems/rake-0.8.7/test/test_pathmap.rb +210 -0
  1815. data/vendor/gems/gems/rake-0.8.7/test/test_pseudo_status.rb +26 -0
  1816. data/vendor/gems/gems/rake-0.8.7/test/test_rake.rb +41 -0
  1817. data/vendor/gems/gems/rake-0.8.7/test/test_rdoc_task.rb +88 -0
  1818. data/vendor/gems/gems/rake-0.8.7/test/test_require.rb +35 -0
  1819. data/vendor/gems/gems/rake-0.8.7/test/test_rules.rb +349 -0
  1820. data/vendor/gems/gems/rake-0.8.7/test/test_task_arguments.rb +89 -0
  1821. data/vendor/gems/gems/rake-0.8.7/test/test_task_manager.rb +173 -0
  1822. data/vendor/gems/gems/rake-0.8.7/test/test_tasklib.rb +12 -0
  1823. data/vendor/gems/gems/rake-0.8.7/test/test_tasks.rb +374 -0
  1824. data/vendor/gems/gems/rake-0.8.7/test/test_test_task.rb +77 -0
  1825. data/vendor/gems/gems/rake-0.8.7/test/test_top_level_functions.rb +86 -0
  1826. data/vendor/gems/gems/rake-0.8.7/test/test_win32.rb +72 -0
  1827. data/vendor/gems/gems/rdoc-2.4.3/.autotest +14 -0
  1828. data/vendor/gems/gems/rdoc-2.4.3/.document +4 -0
  1829. data/vendor/gems/gems/rdoc-2.4.3/History.txt +260 -0
  1830. data/vendor/gems/gems/rdoc-2.4.3/Manifest.txt +126 -0
  1831. data/vendor/gems/gems/rdoc-2.4.3/README.txt +47 -0
  1832. data/vendor/gems/gems/rdoc-2.4.3/RI.txt +58 -0
  1833. data/vendor/gems/gems/rdoc-2.4.3/Rakefile +71 -0
  1834. data/vendor/gems/gems/rdoc-2.4.3/bin/ri +5 -0
  1835. data/vendor/gems/gems/rdoc-2.4.3/lib/rdoc.rb +398 -0
  1836. data/vendor/gems/gems/rdoc-2.4.3/test/binary.dat +0 -0
  1837. data/vendor/gems/gems/rdoc-2.4.3/test/test.ja.rdoc +8 -0
  1838. data/vendor/gems/gems/rdoc-2.4.3/test/test.ja.txt +8 -0
  1839. data/vendor/gems/gems/rdoc-2.4.3/test/test_attribute_manager.rb +76 -0
  1840. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_any_method.rb +10 -0
  1841. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_code_object.rb +80 -0
  1842. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_constant.rb +15 -0
  1843. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_context.rb +250 -0
  1844. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_include.rb +17 -0
  1845. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_markup.rb +626 -0
  1846. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_markup_attribute_manager.rb +243 -0
  1847. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html.rb +81 -0
  1848. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_markup_to_html_crossref.rb +161 -0
  1849. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_normal_module.rb +26 -0
  1850. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_parser.rb +29 -0
  1851. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_parser_c.rb +401 -0
  1852. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_parser_perl.rb +74 -0
  1853. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_parser_ruby.rb +1040 -0
  1854. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_require.rb +25 -0
  1855. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_ri_attribute_formatter.rb +44 -0
  1856. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_ri_default_display.rb +302 -0
  1857. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_ri_driver.rb +94 -0
  1858. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_ri_formatter.rb +320 -0
  1859. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_ri_html_formatter.rb +141 -0
  1860. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_ri_overstrike_formatter.rb +71 -0
  1861. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_task.rb +64 -0
  1862. data/vendor/gems/gems/rdoc-2.4.3/test/test_rdoc_top_level.rb +85 -0
  1863. data/vendor/gems/gems/rdoc-2.4.3/test/xref_data.rb +46 -0
  1864. data/vendor/gems/gems/rdoc-2.4.3/test/xref_test_case.rb +48 -0
  1865. data/vendor/gems/gems/rspec-1.2.9/.document +7 -0
  1866. data/vendor/gems/gems/rspec-1.2.9/History.rdoc +1496 -0
  1867. data/vendor/gems/gems/rspec-1.2.9/License.txt +22 -0
  1868. data/vendor/gems/gems/rspec-1.2.9/Manifest.txt +377 -0
  1869. data/vendor/gems/gems/rspec-1.2.9/README.rdoc +55 -0
  1870. data/vendor/gems/gems/rspec-1.2.9/Rakefile +145 -0
  1871. data/vendor/gems/gems/rspec-1.2.9/Ruby1.9.rdoc +31 -0
  1872. data/vendor/gems/gems/rspec-1.2.9/TODO.txt +17 -0
  1873. data/vendor/gems/gems/rspec-1.2.9/Upgrade.rdoc +199 -0
  1874. data/vendor/gems/gems/rspec-1.2.9/bin/autospec +4 -0
  1875. data/vendor/gems/gems/rspec-1.2.9/bin/spec +5 -0
  1876. data/vendor/gems/gems/rspec-1.2.9/cucumber.yml +5 -0
  1877. data/vendor/gems/gems/rspec-1.2.9/examples/failing/README.txt +11 -0
  1878. data/vendor/gems/gems/rspec-1.2.9/examples/failing/diffing_spec.rb +36 -0
  1879. data/vendor/gems/gems/rspec-1.2.9/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  1880. data/vendor/gems/gems/rspec-1.2.9/examples/failing/failure_in_after.rb +10 -0
  1881. data/vendor/gems/gems/rspec-1.2.9/examples/failing/failure_in_before.rb +10 -0
  1882. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_example.rb +38 -0
  1883. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_with_flexmock.rb +26 -0
  1884. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_with_mocha.rb +25 -0
  1885. data/vendor/gems/gems/rspec-1.2.9/examples/failing/mocking_with_rr.rb +27 -0
  1886. data/vendor/gems/gems/rspec-1.2.9/examples/failing/partial_mock_example.rb +18 -0
  1887. data/vendor/gems/gems/rspec-1.2.9/examples/failing/pending_example.rb +7 -0
  1888. data/vendor/gems/gems/rspec-1.2.9/examples/failing/predicate_example.rb +32 -0
  1889. data/vendor/gems/gems/rspec-1.2.9/examples/failing/raising_example.rb +47 -0
  1890. data/vendor/gems/gems/rspec-1.2.9/examples/failing/syntax_error_example.rb +7 -0
  1891. data/vendor/gems/gems/rspec-1.2.9/examples/failing/team_spec.rb +41 -0
  1892. data/vendor/gems/gems/rspec-1.2.9/examples/failing/timeout_behaviour.rb +5 -0
  1893. data/vendor/gems/gems/rspec-1.2.9/examples/passing/custom_formatter.rb +11 -0
  1894. data/vendor/gems/gems/rspec-1.2.9/examples/passing/custom_matchers.rb +54 -0
  1895. data/vendor/gems/gems/rspec-1.2.9/examples/passing/dynamic_spec.rb +7 -0
  1896. data/vendor/gems/gems/rspec-1.2.9/examples/passing/file_accessor.rb +18 -0
  1897. data/vendor/gems/gems/rspec-1.2.9/examples/passing/file_accessor_spec.rb +37 -0
  1898. data/vendor/gems/gems/rspec-1.2.9/examples/passing/filtered_formatter.rb +17 -0
  1899. data/vendor/gems/gems/rspec-1.2.9/examples/passing/filtered_formatter_example.rb +31 -0
  1900. data/vendor/gems/gems/rspec-1.2.9/examples/passing/greeter_spec.rb +30 -0
  1901. data/vendor/gems/gems/rspec-1.2.9/examples/passing/helper_method_example.rb +12 -0
  1902. data/vendor/gems/gems/rspec-1.2.9/examples/passing/implicit_docstrings_example.rb +16 -0
  1903. data/vendor/gems/gems/rspec-1.2.9/examples/passing/io_processor.rb +8 -0
  1904. data/vendor/gems/gems/rspec-1.2.9/examples/passing/io_processor_spec.rb +20 -0
  1905. data/vendor/gems/gems/rspec-1.2.9/examples/passing/mocking_example.rb +25 -0
  1906. data/vendor/gems/gems/rspec-1.2.9/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  1907. data/vendor/gems/gems/rspec-1.2.9/examples/passing/nested_classes_example.rb +35 -0
  1908. data/vendor/gems/gems/rspec-1.2.9/examples/passing/options_example.rb +29 -0
  1909. data/vendor/gems/gems/rspec-1.2.9/examples/passing/options_formatter.rb +20 -0
  1910. data/vendor/gems/gems/rspec-1.2.9/examples/passing/partial_mock_example.rb +27 -0
  1911. data/vendor/gems/gems/rspec-1.2.9/examples/passing/pending_example.rb +18 -0
  1912. data/vendor/gems/gems/rspec-1.2.9/examples/passing/predicate_example.rb +25 -0
  1913. data/vendor/gems/gems/rspec-1.2.9/examples/passing/shared_example_group_example.rb +79 -0
  1914. data/vendor/gems/gems/rspec-1.2.9/examples/passing/shared_stack_examples.rb +36 -0
  1915. data/vendor/gems/gems/rspec-1.2.9/examples/passing/simple_matcher_example.rb +29 -0
  1916. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stack.rb +36 -0
  1917. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stack_spec.rb +63 -0
  1918. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  1919. data/vendor/gems/gems/rspec-1.2.9/examples/passing/stubbing_example.rb +67 -0
  1920. data/vendor/gems/gems/rspec-1.2.9/examples/passing/yielding_example.rb +31 -0
  1921. data/vendor/gems/gems/rspec-1.2.9/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  1922. data/vendor/gems/gems/rspec-1.2.9/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  1923. data/vendor/gems/gems/rspec-1.2.9/features/command_line/line_number_option.feature +56 -0
  1924. data/vendor/gems/gems/rspec-1.2.9/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  1925. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/define_example_attribute.feature +41 -0
  1926. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/example_group_with_should_methods.feature +29 -0
  1927. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/implicit_docstrings.feature +59 -0
  1928. data/vendor/gems/gems/rspec-1.2.9/features/example_groups/nested_groups.feature +32 -0
  1929. data/vendor/gems/gems/rspec-1.2.9/features/expectations/customized_message.feature +54 -0
  1930. data/vendor/gems/gems/rspec-1.2.9/features/expectations/expect_change.feature +65 -0
  1931. data/vendor/gems/gems/rspec-1.2.9/features/expectations/expect_error.feature +44 -0
  1932. data/vendor/gems/gems/rspec-1.2.9/features/extensions/custom_example_group.feature +19 -0
  1933. data/vendor/gems/gems/rspec-1.2.9/features/formatters/custom_formatter.feature +30 -0
  1934. data/vendor/gems/gems/rspec-1.2.9/features/interop/examples_and_tests_together.feature +84 -0
  1935. data/vendor/gems/gems/rspec-1.2.9/features/interop/rspec_output.feature +25 -0
  1936. data/vendor/gems/gems/rspec-1.2.9/features/interop/test_but_not_test_unit.feature +26 -0
  1937. data/vendor/gems/gems/rspec-1.2.9/features/interop/test_case_with_should_methods.feature +46 -0
  1938. data/vendor/gems/gems/rspec-1.2.9/features/load_paths/add_lib_to_load_path.feature +20 -0
  1939. data/vendor/gems/gems/rspec-1.2.9/features/load_paths/add_spec_to_load_path.feature +20 -0
  1940. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_diffable_matcher.feature +26 -0
  1941. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_matcher.feature +179 -0
  1942. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_matcher_outside_rspec.feature +38 -0
  1943. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_matcher_with_fluent_interface.feature +27 -0
  1944. data/vendor/gems/gems/rspec-1.2.9/features/matchers/define_wrapped_matcher.feature +29 -0
  1945. data/vendor/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_flexmock.feature +27 -0
  1946. data/vendor/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_mocha.feature +27 -0
  1947. data/vendor/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_rr.feature +27 -0
  1948. data/vendor/gems/gems/rspec-1.2.9/features/mocks/mix_stubs_and_mocks.feature +22 -0
  1949. data/vendor/gems/gems/rspec-1.2.9/features/mocks/stub_implementation.feature +26 -0
  1950. data/vendor/gems/gems/rspec-1.2.9/features/pending/pending_examples.feature +81 -0
  1951. data/vendor/gems/gems/rspec-1.2.9/features/runner/specify_line_number.feature +32 -0
  1952. data/vendor/gems/gems/rspec-1.2.9/features/spec_helper/spec_helper.feature +25 -0
  1953. data/vendor/gems/gems/rspec-1.2.9/features/step_definitions/running_rspec_steps.rb +43 -0
  1954. data/vendor/gems/gems/rspec-1.2.9/features/subject/explicit_subject.feature +31 -0
  1955. data/vendor/gems/gems/rspec-1.2.9/features/subject/implicit_subject.feature +43 -0
  1956. data/vendor/gems/gems/rspec-1.2.9/features/support/env.rb +82 -0
  1957. data/vendor/gems/gems/rspec-1.2.9/features/support/matchers/smart_match.rb +12 -0
  1958. data/vendor/gems/gems/rspec-1.2.9/init.rb +9 -0
  1959. data/vendor/gems/gems/rspec-1.2.9/lib/autotest/discover.rb +3 -0
  1960. data/vendor/gems/gems/rspec-1.2.9/lib/autotest/rspec.rb +47 -0
  1961. data/vendor/gems/gems/rspec-1.2.9/lib/spec.rb +8 -0
  1962. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  1963. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  1964. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  1965. data/vendor/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  1966. data/vendor/gems/gems/rspec-1.2.9/lib/spec/autorun.rb +3 -0
  1967. data/vendor/gems/gems/rspec-1.2.9/lib/spec/deprecation.rb +40 -0
  1968. data/vendor/gems/gems/rspec-1.2.9/lib/spec/dsl.rb +1 -0
  1969. data/vendor/gems/gems/rspec-1.2.9/lib/spec/dsl/main.rb +92 -0
  1970. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example.rb +164 -0
  1971. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/args_and_options.rb +27 -0
  1972. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/before_and_after_hooks.rb +93 -0
  1973. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/errors.rb +25 -0
  1974. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group.rb +10 -0
  1975. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_factory.rb +82 -0
  1976. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_hierarchy.rb +53 -0
  1977. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_methods.rb +282 -0
  1978. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_group_proxy.rb +61 -0
  1979. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_matcher.rb +43 -0
  1980. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_methods.rb +148 -0
  1981. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/example_proxy.rb +41 -0
  1982. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/module_reopening_fix.rb +43 -0
  1983. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/pending.rb +18 -0
  1984. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/predicate_matchers.rb +46 -0
  1985. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/shared_example_group.rb +59 -0
  1986. data/vendor/gems/gems/rspec-1.2.9/lib/spec/example/subject.rb +108 -0
  1987. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations.rb +35 -0
  1988. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/errors.rb +12 -0
  1989. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/extensions.rb +1 -0
  1990. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/extensions/kernel.rb +52 -0
  1991. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/fail_with.rb +45 -0
  1992. data/vendor/gems/gems/rspec-1.2.9/lib/spec/expectations/handler.rb +50 -0
  1993. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test.rb +44 -0
  1994. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/autorunner.rb +6 -0
  1995. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testcase.rb +56 -0
  1996. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testresult.rb +6 -0
  1997. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  1998. data/vendor/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  1999. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers.rb +195 -0
  2000. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be.rb +210 -0
  2001. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be_close.rb +32 -0
  2002. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be_instance_of.rb +26 -0
  2003. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/be_kind_of.rb +26 -0
  2004. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/change.rb +151 -0
  2005. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/compatibility.rb +14 -0
  2006. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/dsl.rb +20 -0
  2007. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/eql.rb +42 -0
  2008. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/equal.rb +53 -0
  2009. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/errors.rb +5 -0
  2010. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/exist.rb +16 -0
  2011. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/extensions/instance_exec.rb +31 -0
  2012. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/generated_descriptions.rb +36 -0
  2013. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/has.rb +35 -0
  2014. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/have.rb +151 -0
  2015. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/include.rb +44 -0
  2016. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/match.rb +21 -0
  2017. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/match_array.rb +71 -0
  2018. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/matcher.rb +87 -0
  2019. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/method_missing.rb +9 -0
  2020. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/operator_matcher.rb +78 -0
  2021. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/pretty.rb +37 -0
  2022. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/raise_error.rb +129 -0
  2023. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/respond_to.rb +71 -0
  2024. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/satisfy.rb +47 -0
  2025. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/simple_matcher.rb +133 -0
  2026. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/throw_symbol.rb +104 -0
  2027. data/vendor/gems/gems/rspec-1.2.9/lib/spec/matchers/wrap_expectation.rb +55 -0
  2028. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks.rb +200 -0
  2029. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/argument_expectation.rb +51 -0
  2030. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/argument_matchers.rb +237 -0
  2031. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/error_generator.rb +92 -0
  2032. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/errors.rb +10 -0
  2033. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/example_methods.rb +69 -0
  2034. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/extensions.rb +1 -0
  2035. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/extensions/object.rb +3 -0
  2036. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/framework.rb +15 -0
  2037. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/message_expectation.rb +329 -0
  2038. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/methods.rb +89 -0
  2039. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/mock.rb +71 -0
  2040. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/order_group.rb +29 -0
  2041. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/proxy.rb +245 -0
  2042. data/vendor/gems/gems/rspec-1.2.9/lib/spec/mocks/space.rb +28 -0
  2043. data/vendor/gems/gems/rspec-1.2.9/lib/spec/rake/spectask.rb +230 -0
  2044. data/vendor/gems/gems/rspec-1.2.9/lib/spec/rake/verify_rcov.rb +52 -0
  2045. data/vendor/gems/gems/rspec-1.2.9/lib/spec/ruby.rb +9 -0
  2046. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner.rb +66 -0
  2047. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/backtrace_tweaker.rb +77 -0
  2048. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  2049. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/command_line.rb +15 -0
  2050. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/configuration.rb +194 -0
  2051. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/differs/default.rb +93 -0
  2052. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  2053. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/drb_command_line.rb +26 -0
  2054. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/example_group_runner.rb +59 -0
  2055. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/extensions/kernel.rb +9 -0
  2056. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/base_formatter.rb +139 -0
  2057. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  2058. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  2059. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  2060. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/html_formatter.rb +338 -0
  2061. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/nested_text_formatter.rb +47 -0
  2062. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  2063. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  2064. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  2065. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  2066. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  2067. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  2068. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  2069. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/heckle_runner.rb +72 -0
  2070. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  2071. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/line_number_query.rb +78 -0
  2072. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/option_parser.rb +223 -0
  2073. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/options.rb +400 -0
  2074. data/vendor/gems/gems/rspec-1.2.9/lib/spec/runner/reporter.rb +171 -0
  2075. data/vendor/gems/gems/rspec-1.2.9/lib/spec/stubs/cucumber.rb +5 -0
  2076. data/vendor/gems/gems/rspec-1.2.9/lib/spec/test/unit.rb +10 -0
  2077. data/vendor/gems/gems/rspec-1.2.9/lib/spec/version.rb +14 -0
  2078. data/vendor/gems/gems/rspec-1.2.9/resources/helpers/cmdline.rb +8 -0
  2079. data/vendor/gems/gems/rspec-1.2.9/resources/rake/examples.rake +7 -0
  2080. data/vendor/gems/gems/rspec-1.2.9/resources/rake/examples_with_rcov.rake +9 -0
  2081. data/vendor/gems/gems/rspec-1.2.9/resources/rake/failing_examples_with_html.rake +9 -0
  2082. data/vendor/gems/gems/rspec-1.2.9/resources/rake/verify_rcov.rake +7 -0
  2083. data/vendor/gems/gems/rspec-1.2.9/spec/README.jruby +15 -0
  2084. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/autotest_helper.rb +8 -0
  2085. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/autotest_matchers.rb +38 -0
  2086. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/discover_spec.rb +8 -0
  2087. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/failed_results_re_spec.rb +31 -0
  2088. data/vendor/gems/gems/rspec-1.2.9/spec/autotest/rspec_spec.rb +111 -0
  2089. data/vendor/gems/gems/rspec-1.2.9/spec/ruby_forker.rb +13 -0
  2090. data/vendor/gems/gems/rspec-1.2.9/spec/spec.opts +6 -0
  2091. data/vendor/gems/gems/rspec-1.2.9/spec/spec/dsl/main_spec.rb +95 -0
  2092. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  2093. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_factory_spec.rb +180 -0
  2094. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_methods_spec.rb +758 -0
  2095. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_proxy_spec.rb +107 -0
  2096. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_group_spec.rb +643 -0
  2097. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_matcher_spec.rb +86 -0
  2098. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_methods_spec.rb +162 -0
  2099. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/example_proxy_spec.rb +57 -0
  2100. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/helper_method_spec.rb +24 -0
  2101. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/nested_example_group_spec.rb +71 -0
  2102. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/pending_module_spec.rb +58 -0
  2103. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/predicate_matcher_spec.rb +41 -0
  2104. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/shared_example_group_spec.rb +257 -0
  2105. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  2106. data/vendor/gems/gems/rspec-1.2.9/spec/spec/example/subject_spec.rb +103 -0
  2107. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/differs/default_spec.rb +194 -0
  2108. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  2109. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/fail_with_spec.rb +96 -0
  2110. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/handler_spec.rb +206 -0
  2111. data/vendor/gems/gems/rspec-1.2.9/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  2112. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  2113. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  2114. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  2115. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  2116. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  2117. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  2118. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  2119. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  2120. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  2121. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  2122. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  2123. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  2124. data/vendor/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  2125. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_close_spec.rb +50 -0
  2126. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  2127. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  2128. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/be_spec.rb +311 -0
  2129. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/change_spec.rb +349 -0
  2130. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/compatibility_spec.rb +28 -0
  2131. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/description_generation_spec.rb +160 -0
  2132. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/dsl_spec.rb +34 -0
  2133. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/eql_spec.rb +33 -0
  2134. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/equal_spec.rb +57 -0
  2135. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/exist_spec.rb +65 -0
  2136. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/has_spec.rb +81 -0
  2137. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/have_spec.rb +396 -0
  2138. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/include_spec.rb +88 -0
  2139. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/match_array_spec.rb +108 -0
  2140. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/match_spec.rb +57 -0
  2141. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_methods_spec.rb +63 -0
  2142. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_spec.rb +228 -0
  2143. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/matchers_spec.rb +2 -0
  2144. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  2145. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/raise_error_spec.rb +333 -0
  2146. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/respond_to_spec.rb +116 -0
  2147. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/satisfy_spec.rb +36 -0
  2148. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  2149. data/vendor/gems/gems/rspec-1.2.9/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  2150. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  2151. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  2152. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  2153. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/at_least_spec.rb +97 -0
  2154. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/at_most_spec.rb +93 -0
  2155. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  2156. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  2157. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  2158. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  2159. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_496_spec.rb +19 -0
  2160. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  2161. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  2162. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  2163. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  2164. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  2165. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  2166. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/double_spec.rb +12 -0
  2167. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  2168. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  2169. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  2170. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  2171. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_space_spec.rb +54 -0
  2172. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_spec.rb +594 -0
  2173. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  2174. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  2175. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  2176. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/once_counts_spec.rb +53 -0
  2177. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/options_hash_spec.rb +35 -0
  2178. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/partial_mock_spec.rb +164 -0
  2179. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  2180. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  2181. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/precise_counts_spec.rb +52 -0
  2182. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/record_messages_spec.rb +26 -0
  2183. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_chain_spec.rb +42 -0
  2184. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  2185. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_spec.rb +203 -0
  2186. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  2187. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/twice_counts_spec.rb +67 -0
  2188. data/vendor/gems/gems/rspec-1.2.9/spec/spec/mocks/unstub_spec.rb +127 -0
  2189. data/vendor/gems/gems/rspec-1.2.9/spec/spec/package/bin_spec_spec.rb +16 -0
  2190. data/vendor/gems/gems/rspec-1.2.9/spec/spec/rake/spectask_spec.rb +150 -0
  2191. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  2192. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/command_line_spec.rb +141 -0
  2193. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/configuration_spec.rb +320 -0
  2194. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/drb_command_line_spec.rb +107 -0
  2195. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/empty_file.txt +0 -0
  2196. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/example_group_runner_spec.rb +26 -0
  2197. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/examples.txt +2 -0
  2198. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/failed.txt +3 -0
  2199. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  2200. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  2201. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  2202. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  2203. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  2204. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  2205. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  2206. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  2207. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  2208. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/nested_text_formatter_spec.rb +305 -0
  2209. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  2210. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  2211. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  2212. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  2213. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  2214. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  2215. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  2216. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  2217. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  2218. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/heckle_runner_spec.rb +78 -0
  2219. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/heckler_spec.rb +20 -0
  2220. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  2221. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/line_number_query_spec.rb +129 -0
  2222. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  2223. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/option_parser_spec.rb +545 -0
  2224. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/options_spec.rb +547 -0
  2225. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_fixture.rb +7 -0
  2226. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  2227. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_spec.rb +15 -0
  2228. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +105 -0
  2229. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/reporter_spec.rb +244 -0
  2230. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_bar.rb +0 -0
  2231. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_foo.rb +0 -0
  2232. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_spec.rb +1 -0
  2233. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  2234. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  2235. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/spec.opts +2 -0
  2236. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/spec_drb.opts +2 -0
  2237. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner/spec_spaced.opts +2 -0
  2238. data/vendor/gems/gems/rspec-1.2.9/spec/spec/runner_spec.rb +13 -0
  2239. data/vendor/gems/gems/rspec-1.2.9/spec/spec_helper.rb +112 -0
  2240. data/vendor/gems/gems/rspec-1.2.9/spec/support/macros.rb +29 -0
  2241. data/vendor/gems/gems/rspec-1.2.9/spec/support/spec_classes.rb +133 -0
  2242. data/vendor/gems/gems/sdoc-0.2.14.1/.gitignore +3 -0
  2243. data/vendor/gems/gems/sdoc-0.2.14.1/LICENSE +21 -0
  2244. data/vendor/gems/gems/sdoc-0.2.14.1/README.rdoc +38 -0
  2245. data/vendor/gems/gems/sdoc-0.2.14.1/Rakefile +44 -0
  2246. data/vendor/gems/gems/sdoc-0.2.14.1/VERSION.yml +4 -0
  2247. data/vendor/gems/gems/sdoc-0.2.14.1/bin/sdoc +11 -0
  2248. data/vendor/gems/gems/sdoc-0.2.14.1/bin/sdoc-merge +12 -0
  2249. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc.rb +23 -0
  2250. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/c_parser_fix.rb +31 -0
  2251. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/shtml.rb +356 -0
  2252. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/_context.rhtml +172 -0
  2253. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/class.rhtml +40 -0
  2254. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/file.rhtml +30 -0
  2255. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/index.rhtml +14 -0
  2256. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/apple-touch-icon.png +0 -0
  2257. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/css/main.css +263 -0
  2258. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/css/panel.css +383 -0
  2259. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/css/reset.css +53 -0
  2260. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/favicon.ico +0 -0
  2261. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/i/arrows.png +0 -0
  2262. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/i/results_bg.png +0 -0
  2263. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/i/tree_bg.png +0 -0
  2264. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/js/jquery-1.3.2.min.js +19 -0
  2265. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/js/jquery-effect.js +593 -0
  2266. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/js/main.js +22 -0
  2267. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/js/searchdoc.js +628 -0
  2268. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/direct/resources/panel/index.html +71 -0
  2269. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/merge/index.rhtml +14 -0
  2270. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/_context.rhtml +164 -0
  2271. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/class.rhtml +46 -0
  2272. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/file.rhtml +37 -0
  2273. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/index.rhtml +14 -0
  2274. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/apple-touch-icon.png +0 -0
  2275. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/css/main.css +191 -0
  2276. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/css/panel.css +383 -0
  2277. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/css/reset.css +53 -0
  2278. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/favicon.ico +0 -0
  2279. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/i/arrows.png +0 -0
  2280. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/i/results_bg.png +0 -0
  2281. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/i/tree_bg.png +0 -0
  2282. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/js/jquery-1.3.2.min.js +19 -0
  2283. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/js/main.js +34 -0
  2284. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/js/searchdoc.js +628 -0
  2285. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/generator/template/shtml/resources/panel/index.html +71 -0
  2286. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/github.rb +64 -0
  2287. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/helpers.rb +26 -0
  2288. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/merge.rb +217 -0
  2289. data/vendor/gems/gems/sdoc-0.2.14.1/lib/sdoc/templatable.rb +58 -0
  2290. data/vendor/gems/gems/sdoc-0.2.14.1/sdoc.gemspec +89 -0
  2291. data/vendor/gems/gems/shotgun-0.4/COPYING +18 -0
  2292. data/vendor/gems/gems/shotgun-0.4/README +46 -0
  2293. data/vendor/gems/gems/shotgun-0.4/Rakefile +56 -0
  2294. data/vendor/gems/gems/shotgun-0.4/bin/shotgun +136 -0
  2295. data/vendor/gems/gems/shotgun-0.4/lib/shotgun.rb +99 -0
  2296. data/vendor/gems/gems/shotgun-0.4/shotgun.gemspec +34 -0
  2297. data/vendor/gems/gems/sinatra-0.9.4/AUTHORS +41 -0
  2298. data/vendor/gems/gems/sinatra-0.9.4/CHANGES +385 -0
  2299. data/vendor/gems/gems/sinatra-0.9.4/LICENSE +22 -0
  2300. data/vendor/gems/gems/sinatra-0.9.4/README.rdoc +573 -0
  2301. data/vendor/gems/gems/sinatra-0.9.4/Rakefile +138 -0
  2302. data/vendor/gems/gems/sinatra-0.9.4/compat/app_test.rb +282 -0
  2303. data/vendor/gems/gems/sinatra-0.9.4/compat/application_test.rb +262 -0
  2304. data/vendor/gems/gems/sinatra-0.9.4/compat/builder_test.rb +101 -0
  2305. data/vendor/gems/gems/sinatra-0.9.4/compat/compat_test.rb +12 -0
  2306. data/vendor/gems/gems/sinatra-0.9.4/compat/custom_error_test.rb +62 -0
  2307. data/vendor/gems/gems/sinatra-0.9.4/compat/erb_test.rb +136 -0
  2308. data/vendor/gems/gems/sinatra-0.9.4/compat/events_test.rb +78 -0
  2309. data/vendor/gems/gems/sinatra-0.9.4/compat/filter_test.rb +30 -0
  2310. data/vendor/gems/gems/sinatra-0.9.4/compat/haml_test.rb +236 -0
  2311. data/vendor/gems/gems/sinatra-0.9.4/compat/helper.rb +33 -0
  2312. data/vendor/gems/gems/sinatra-0.9.4/compat/mapped_error_test.rb +72 -0
  2313. data/vendor/gems/gems/sinatra-0.9.4/compat/pipeline_test.rb +45 -0
  2314. data/vendor/gems/gems/sinatra-0.9.4/compat/public/foo.xml +1 -0
  2315. data/vendor/gems/gems/sinatra-0.9.4/compat/sass_test.rb +67 -0
  2316. data/vendor/gems/gems/sinatra-0.9.4/compat/sessions_test.rb +42 -0
  2317. data/vendor/gems/gems/sinatra-0.9.4/compat/streaming_test.rb +133 -0
  2318. data/vendor/gems/gems/sinatra-0.9.4/compat/sym_params_test.rb +19 -0
  2319. data/vendor/gems/gems/sinatra-0.9.4/compat/template_test.rb +30 -0
  2320. data/vendor/gems/gems/sinatra-0.9.4/compat/use_in_file_templates_test.rb +47 -0
  2321. data/vendor/gems/gems/sinatra-0.9.4/compat/views/foo.builder +1 -0
  2322. data/vendor/gems/gems/sinatra-0.9.4/compat/views/foo.erb +1 -0
  2323. data/vendor/gems/gems/sinatra-0.9.4/compat/views/foo.haml +1 -0
  2324. data/vendor/gems/gems/sinatra-0.9.4/compat/views/foo.sass +2 -0
  2325. data/vendor/gems/gems/sinatra-0.9.4/compat/views/foo_layout.erb +2 -0
  2326. data/vendor/gems/gems/sinatra-0.9.4/compat/views/foo_layout.haml +2 -0
  2327. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/foo.builder +1 -0
  2328. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/foo.erb +1 -0
  2329. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/foo.haml +1 -0
  2330. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/foo.sass +2 -0
  2331. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/layout.builder +3 -0
  2332. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/layout.erb +1 -0
  2333. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/layout.haml +1 -0
  2334. data/vendor/gems/gems/sinatra-0.9.4/compat/views/layout_test/layout.sass +2 -0
  2335. data/vendor/gems/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.builder +1 -0
  2336. data/vendor/gems/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.haml +1 -0
  2337. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra.rb +8 -0
  2338. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/base.rb +1119 -0
  2339. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/compat.rb +266 -0
  2340. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/images/404.png +0 -0
  2341. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/images/500.png +0 -0
  2342. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/main.rb +35 -0
  2343. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/showexceptions.rb +303 -0
  2344. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/test.rb +128 -0
  2345. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/test/bacon.rb +19 -0
  2346. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/test/rspec.rb +13 -0
  2347. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/test/spec.rb +11 -0
  2348. data/vendor/gems/gems/sinatra-0.9.4/lib/sinatra/test/unit.rb +13 -0
  2349. data/vendor/gems/gems/sinatra-0.9.4/sinatra.gemspec +125 -0
  2350. data/vendor/gems/gems/sinatra-0.9.4/test/base_test.rb +160 -0
  2351. data/vendor/gems/gems/sinatra-0.9.4/test/builder_test.rb +65 -0
  2352. data/vendor/gems/gems/sinatra-0.9.4/test/contest.rb +64 -0
  2353. data/vendor/gems/gems/sinatra-0.9.4/test/data/reload_app_file.rb +3 -0
  2354. data/vendor/gems/gems/sinatra-0.9.4/test/erb_test.rb +81 -0
  2355. data/vendor/gems/gems/sinatra-0.9.4/test/extensions_test.rb +100 -0
  2356. data/vendor/gems/gems/sinatra-0.9.4/test/filter_test.rb +99 -0
  2357. data/vendor/gems/gems/sinatra-0.9.4/test/haml_test.rb +90 -0
  2358. data/vendor/gems/gems/sinatra-0.9.4/test/helper.rb +76 -0
  2359. data/vendor/gems/gems/sinatra-0.9.4/test/helpers_test.rb +503 -0
  2360. data/vendor/gems/gems/sinatra-0.9.4/test/mapped_error_test.rb +155 -0
  2361. data/vendor/gems/gems/sinatra-0.9.4/test/middleware_test.rb +68 -0
  2362. data/vendor/gems/gems/sinatra-0.9.4/test/options_test.rb +372 -0
  2363. data/vendor/gems/gems/sinatra-0.9.4/test/render_backtrace_test.rb +145 -0
  2364. data/vendor/gems/gems/sinatra-0.9.4/test/request_test.rb +18 -0
  2365. data/vendor/gems/gems/sinatra-0.9.4/test/response_test.rb +42 -0
  2366. data/vendor/gems/gems/sinatra-0.9.4/test/result_test.rb +98 -0
  2367. data/vendor/gems/gems/sinatra-0.9.4/test/route_added_hook_test.rb +59 -0
  2368. data/vendor/gems/gems/sinatra-0.9.4/test/routing_test.rb +784 -0
  2369. data/vendor/gems/gems/sinatra-0.9.4/test/sass_test.rb +79 -0
  2370. data/vendor/gems/gems/sinatra-0.9.4/test/server_test.rb +47 -0
  2371. data/vendor/gems/gems/sinatra-0.9.4/test/sinatra_test.rb +13 -0
  2372. data/vendor/gems/gems/sinatra-0.9.4/test/static_test.rb +80 -0
  2373. data/vendor/gems/gems/sinatra-0.9.4/test/templates_test.rb +122 -0
  2374. data/vendor/gems/gems/sinatra-0.9.4/test/test_test.rb +152 -0
  2375. data/vendor/gems/gems/sinatra-0.9.4/test/views/error.builder +3 -0
  2376. data/vendor/gems/gems/sinatra-0.9.4/test/views/error.erb +3 -0
  2377. data/vendor/gems/gems/sinatra-0.9.4/test/views/error.haml +3 -0
  2378. data/vendor/gems/gems/sinatra-0.9.4/test/views/error.sass +2 -0
  2379. data/vendor/gems/gems/sinatra-0.9.4/test/views/foo/hello.test +1 -0
  2380. data/vendor/gems/gems/sinatra-0.9.4/test/views/hello.builder +1 -0
  2381. data/vendor/gems/gems/sinatra-0.9.4/test/views/hello.erb +1 -0
  2382. data/vendor/gems/gems/sinatra-0.9.4/test/views/hello.haml +1 -0
  2383. data/vendor/gems/gems/sinatra-0.9.4/test/views/hello.sass +2 -0
  2384. data/vendor/gems/gems/sinatra-0.9.4/test/views/hello.test +1 -0
  2385. data/vendor/gems/gems/sinatra-0.9.4/test/views/layout2.builder +3 -0
  2386. data/vendor/gems/gems/sinatra-0.9.4/test/views/layout2.erb +2 -0
  2387. data/vendor/gems/gems/sinatra-0.9.4/test/views/layout2.haml +2 -0
  2388. data/vendor/gems/gems/sinatra-0.9.4/test/views/layout2.test +1 -0
  2389. data/vendor/gems/gems/sinatra-content-for-0.2/.gitignore +3 -0
  2390. data/vendor/gems/gems/sinatra-content-for-0.2/LICENSE +22 -0
  2391. data/vendor/gems/gems/sinatra-content-for-0.2/README.rdoc +41 -0
  2392. data/vendor/gems/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb +58 -0
  2393. data/vendor/gems/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec +34 -0
  2394. data/vendor/gems/gems/sinatra-content-for-0.2/test/content_for_test.rb +156 -0
  2395. data/vendor/gems/gems/sprockets-1.0.2/Rakefile +19 -0
  2396. data/vendor/gems/gems/sprockets-1.0.2/bin/sprocketize +54 -0
  2397. data/vendor/gems/gems/sprockets-1.0.2/ext/nph-sprockets.cgi +127 -0
  2398. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets.rb +42 -0
  2399. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb +36 -0
  2400. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/environment.rb +52 -0
  2401. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/error.rb +5 -0
  2402. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/pathname.rb +37 -0
  2403. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb +91 -0
  2404. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/secretary.rb +106 -0
  2405. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/source_file.rb +54 -0
  2406. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/source_line.rb +82 -0
  2407. data/vendor/gems/gems/sprockets-1.0.2/lib/sprockets/version.rb +9 -0
  2408. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png +1 -0
  2409. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png +1 -0
  2410. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css +1 -0
  2411. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/constants.yml +1 -0
  2412. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js +8 -0
  2413. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js +2 -0
  2414. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js +4 -0
  2415. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js +5 -0
  2416. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js +1 -0
  2417. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js +3 -0
  2418. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js +1 -0
  2419. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/src/constants.yml +3 -0
  2420. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/src/foo.js +1 -0
  2421. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js +4 -0
  2422. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js +1 -0
  2423. data/vendor/gems/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js +3 -0
  2424. data/vendor/gems/gems/sprockets-1.0.2/test/test_concatenation.rb +28 -0
  2425. data/vendor/gems/gems/sprockets-1.0.2/test/test_environment.rb +64 -0
  2426. data/vendor/gems/gems/sprockets-1.0.2/test/test_helper.rb +55 -0
  2427. data/vendor/gems/gems/sprockets-1.0.2/test/test_pathname.rb +43 -0
  2428. data/vendor/gems/gems/sprockets-1.0.2/test/test_preprocessor.rb +107 -0
  2429. data/vendor/gems/gems/sprockets-1.0.2/test/test_secretary.rb +83 -0
  2430. data/vendor/gems/gems/sprockets-1.0.2/test/test_source_file.rb +34 -0
  2431. data/vendor/gems/gems/sprockets-1.0.2/test/test_source_line.rb +89 -0
  2432. data/vendor/gems/gems/templater-1.0.0/History.txt +3 -0
  2433. data/vendor/gems/gems/templater-1.0.0/Manifest.txt +64 -0
  2434. data/vendor/gems/gems/templater-1.0.0/README.rdoc +266 -0
  2435. data/vendor/gems/gems/templater-1.0.0/Rakefile +23 -0
  2436. data/vendor/gems/gems/templater-1.0.0/lib/templater.rb +49 -0
  2437. data/vendor/gems/gems/templater-1.0.0/lib/templater/actions/action.rb +43 -0
  2438. data/vendor/gems/gems/templater-1.0.0/lib/templater/actions/directory.rb +22 -0
  2439. data/vendor/gems/gems/templater-1.0.0/lib/templater/actions/empty_directory.rb +57 -0
  2440. data/vendor/gems/gems/templater-1.0.0/lib/templater/actions/file.rb +60 -0
  2441. data/vendor/gems/gems/templater-1.0.0/lib/templater/actions/template.rb +61 -0
  2442. data/vendor/gems/gems/templater-1.0.0/lib/templater/capture_helpers.rb +62 -0
  2443. data/vendor/gems/gems/templater-1.0.0/lib/templater/cli/generator.rb +175 -0
  2444. data/vendor/gems/gems/templater-1.0.0/lib/templater/cli/manifold.rb +59 -0
  2445. data/vendor/gems/gems/templater-1.0.0/lib/templater/cli/parser.rb +85 -0
  2446. data/vendor/gems/gems/templater-1.0.0/lib/templater/core_ext/kernel.rb +14 -0
  2447. data/vendor/gems/gems/templater-1.0.0/lib/templater/core_ext/string.rb +17 -0
  2448. data/vendor/gems/gems/templater-1.0.0/lib/templater/description.rb +78 -0
  2449. data/vendor/gems/gems/templater-1.0.0/lib/templater/discovery.rb +86 -0
  2450. data/vendor/gems/gems/templater-1.0.0/lib/templater/generator.rb +644 -0
  2451. data/vendor/gems/gems/templater-1.0.0/lib/templater/manifold.rb +98 -0
  2452. data/vendor/gems/gems/templater-1.0.0/lib/templater/spec/helpers.rb +67 -0
  2453. data/vendor/gems/gems/templater-1.0.0/script/console +10 -0
  2454. data/vendor/gems/gems/templater-1.0.0/script/destroy +14 -0
  2455. data/vendor/gems/gems/templater-1.0.0/script/generate +14 -0
  2456. data/vendor/gems/gems/templater-1.0.0/spec/actions/directory_spec.rb +21 -0
  2457. data/vendor/gems/gems/templater-1.0.0/spec/actions/empty_directory_spec.rb +108 -0
  2458. data/vendor/gems/gems/templater-1.0.0/spec/actions/file_spec.rb +112 -0
  2459. data/vendor/gems/gems/templater-1.0.0/spec/actions/template_spec.rb +141 -0
  2460. data/vendor/gems/gems/templater-1.0.0/spec/core_ext/string_spec.rb +39 -0
  2461. data/vendor/gems/gems/templater-1.0.0/spec/generator/actions_spec.rb +111 -0
  2462. data/vendor/gems/gems/templater-1.0.0/spec/generator/arguments_spec.rb +225 -0
  2463. data/vendor/gems/gems/templater-1.0.0/spec/generator/desc_spec.rb +10 -0
  2464. data/vendor/gems/gems/templater-1.0.0/spec/generator/destination_root_spec.rb +9 -0
  2465. data/vendor/gems/gems/templater-1.0.0/spec/generator/empty_directories_spec.rb +148 -0
  2466. data/vendor/gems/gems/templater-1.0.0/spec/generator/files_spec.rb +199 -0
  2467. data/vendor/gems/gems/templater-1.0.0/spec/generator/generators_spec.rb +63 -0
  2468. data/vendor/gems/gems/templater-1.0.0/spec/generator/glob_spec.rb +94 -0
  2469. data/vendor/gems/gems/templater-1.0.0/spec/generator/invocations_spec.rb +173 -0
  2470. data/vendor/gems/gems/templater-1.0.0/spec/generator/invoke_spec.rb +21 -0
  2471. data/vendor/gems/gems/templater-1.0.0/spec/generator/options_spec.rb +46 -0
  2472. data/vendor/gems/gems/templater-1.0.0/spec/generator/render_spec.rb +21 -0
  2473. data/vendor/gems/gems/templater-1.0.0/spec/generator/source_root_spec.rb +18 -0
  2474. data/vendor/gems/gems/templater-1.0.0/spec/generator/templates_spec.rb +209 -0
  2475. data/vendor/gems/gems/templater-1.0.0/spec/manifold_spec.rb +146 -0
  2476. data/vendor/gems/gems/templater-1.0.0/spec/options_parser_spec.rb +20 -0
  2477. data/vendor/gems/gems/templater-1.0.0/spec/results/erb.rbs +1 -0
  2478. data/vendor/gems/gems/templater-1.0.0/spec/results/file.rbs +1 -0
  2479. data/vendor/gems/gems/templater-1.0.0/spec/results/random.rbs +1 -0
  2480. data/vendor/gems/gems/templater-1.0.0/spec/results/simple_erb.rbs +1 -0
  2481. data/vendor/gems/gems/templater-1.0.0/spec/spec_helper.rb +65 -0
  2482. data/vendor/gems/gems/templater-1.0.0/spec/spec_helpers_spec.rb +85 -0
  2483. data/vendor/gems/gems/templater-1.0.0/spec/templater_spec.rb +7 -0
  2484. data/vendor/gems/gems/templater-1.0.0/spec/templates/erb.rbt +1 -0
  2485. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/README +1 -0
  2486. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/arg.js +3 -0
  2487. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/hellothar.%feh% +1 -0
  2488. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/hellothar.html.%feh% +1 -0
  2489. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/subfolder/jessica_alba.jpg +1 -0
  2490. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/subfolder/monkey.rb +1 -0
  2491. data/vendor/gems/gems/templater-1.0.0/spec/templates/glob/test.rb +1 -0
  2492. data/vendor/gems/gems/templater-1.0.0/spec/templates/literals_erb.rbt +1 -0
  2493. data/vendor/gems/gems/templater-1.0.0/spec/templates/simple.rbt +1 -0
  2494. data/vendor/gems/gems/templater-1.0.0/spec/templates/simple_erb.rbt +1 -0
  2495. data/vendor/gems/gems/templater-1.0.0/templater.gemspec +54 -0
  2496. data/vendor/gems/gems/term-ansicolor-1.0.4/CHANGES +22 -0
  2497. data/vendor/gems/gems/term-ansicolor-1.0.4/COPYING +340 -0
  2498. data/vendor/gems/gems/term-ansicolor-1.0.4/README +31 -0
  2499. data/vendor/gems/gems/term-ansicolor-1.0.4/Rakefile +86 -0
  2500. data/vendor/gems/gems/term-ansicolor-1.0.4/VERSION +1 -0
  2501. data/vendor/gems/gems/term-ansicolor-1.0.4/doc-main.txt +119 -0
  2502. data/vendor/gems/gems/term-ansicolor-1.0.4/examples/cdiff.rb +19 -0
  2503. data/vendor/gems/gems/term-ansicolor-1.0.4/examples/example.rb +89 -0
  2504. data/vendor/gems/gems/term-ansicolor-1.0.4/install.rb +15 -0
  2505. data/vendor/gems/gems/term-ansicolor-1.0.4/lib/term/ansicolor.rb +102 -0
  2506. data/vendor/gems/gems/term-ansicolor-1.0.4/lib/term/ansicolor/version.rb +10 -0
  2507. data/vendor/gems/gems/term-ansicolor-1.0.4/term-ansicolor.gemspec +20 -0
  2508. data/vendor/gems/gems/thin-1.2.5/CHANGELOG +268 -0
  2509. data/vendor/gems/gems/thin-1.2.5/COPYING +18 -0
  2510. data/vendor/gems/gems/thin-1.2.5/README +69 -0
  2511. data/vendor/gems/gems/thin-1.2.5/Rakefile +36 -0
  2512. data/vendor/gems/gems/thin-1.2.5/benchmark/abc +51 -0
  2513. data/vendor/gems/gems/thin-1.2.5/benchmark/benchmarker.rb +80 -0
  2514. data/vendor/gems/gems/thin-1.2.5/benchmark/runner +82 -0
  2515. data/vendor/gems/gems/thin-1.2.5/bin/thin +6 -0
  2516. data/vendor/gems/gems/thin-1.2.5/example/adapter.rb +32 -0
  2517. data/vendor/gems/gems/thin-1.2.5/example/async_app.ru +126 -0
  2518. data/vendor/gems/gems/thin-1.2.5/example/async_chat.ru +247 -0
  2519. data/vendor/gems/gems/thin-1.2.5/example/async_tailer.ru +100 -0
  2520. data/vendor/gems/gems/thin-1.2.5/example/config.ru +22 -0
  2521. data/vendor/gems/gems/thin-1.2.5/example/monit_sockets +20 -0
  2522. data/vendor/gems/gems/thin-1.2.5/example/monit_unixsock +20 -0
  2523. data/vendor/gems/gems/thin-1.2.5/example/myapp.rb +1 -0
  2524. data/vendor/gems/gems/thin-1.2.5/example/ramaze.ru +12 -0
  2525. data/vendor/gems/gems/thin-1.2.5/example/thin.god +80 -0
  2526. data/vendor/gems/gems/thin-1.2.5/example/thin_solaris_smf.erb +36 -0
  2527. data/vendor/gems/gems/thin-1.2.5/example/thin_solaris_smf.readme.txt +150 -0
  2528. data/vendor/gems/gems/thin-1.2.5/example/vlad.rake +64 -0
  2529. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/Makefile +157 -0
  2530. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/common.rl +55 -0
  2531. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/ext_help.h +14 -0
  2532. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/extconf.rb +6 -0
  2533. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/mkmf.log +12 -0
  2534. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/parser.c +452 -0
  2535. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/parser.h +49 -0
  2536. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/parser.o +0 -0
  2537. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/parser.rl +157 -0
  2538. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/thin.c +433 -0
  2539. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/thin.o +0 -0
  2540. data/vendor/gems/gems/thin-1.2.5/ext/thin_parser/thin_parser.bundle +0 -0
  2541. data/vendor/gems/gems/thin-1.2.5/lib/rack/adapter/loader.rb +79 -0
  2542. data/vendor/gems/gems/thin-1.2.5/lib/rack/adapter/rails.rb +180 -0
  2543. data/vendor/gems/gems/thin-1.2.5/lib/thin.rb +46 -0
  2544. data/vendor/gems/gems/thin-1.2.5/lib/thin/backends/base.rb +141 -0
  2545. data/vendor/gems/gems/thin-1.2.5/lib/thin/backends/swiftiply_client.rb +56 -0
  2546. data/vendor/gems/gems/thin-1.2.5/lib/thin/backends/tcp_server.rb +29 -0
  2547. data/vendor/gems/gems/thin-1.2.5/lib/thin/backends/unix_server.rb +51 -0
  2548. data/vendor/gems/gems/thin-1.2.5/lib/thin/command.rb +53 -0
  2549. data/vendor/gems/gems/thin-1.2.5/lib/thin/connection.rb +222 -0
  2550. data/vendor/gems/gems/thin-1.2.5/lib/thin/controllers/cluster.rb +178 -0
  2551. data/vendor/gems/gems/thin-1.2.5/lib/thin/controllers/controller.rb +183 -0
  2552. data/vendor/gems/gems/thin-1.2.5/lib/thin/controllers/service.rb +75 -0
  2553. data/vendor/gems/gems/thin-1.2.5/lib/thin/controllers/service.sh.erb +39 -0
  2554. data/vendor/gems/gems/thin-1.2.5/lib/thin/daemonizing.rb +174 -0
  2555. data/vendor/gems/gems/thin-1.2.5/lib/thin/headers.rb +39 -0
  2556. data/vendor/gems/gems/thin-1.2.5/lib/thin/logging.rb +54 -0
  2557. data/vendor/gems/gems/thin-1.2.5/lib/thin/request.rb +157 -0
  2558. data/vendor/gems/gems/thin-1.2.5/lib/thin/response.rb +101 -0
  2559. data/vendor/gems/gems/thin-1.2.5/lib/thin/runner.rb +212 -0
  2560. data/vendor/gems/gems/thin-1.2.5/lib/thin/server.rb +247 -0
  2561. data/vendor/gems/gems/thin-1.2.5/lib/thin/stats.html.erb +216 -0
  2562. data/vendor/gems/gems/thin-1.2.5/lib/thin/stats.rb +52 -0
  2563. data/vendor/gems/gems/thin-1.2.5/lib/thin/statuses.rb +43 -0
  2564. data/vendor/gems/gems/thin-1.2.5/lib/thin/version.rb +32 -0
  2565. data/vendor/gems/gems/thin-1.2.5/lib/thin_parser.bundle +0 -0
  2566. data/vendor/gems/gems/thin-1.2.5/spec/backends/swiftiply_client_spec.rb +66 -0
  2567. data/vendor/gems/gems/thin-1.2.5/spec/backends/tcp_server_spec.rb +33 -0
  2568. data/vendor/gems/gems/thin-1.2.5/spec/backends/unix_server_spec.rb +37 -0
  2569. data/vendor/gems/gems/thin-1.2.5/spec/command_spec.rb +25 -0
  2570. data/vendor/gems/gems/thin-1.2.5/spec/configs/cluster.yml +9 -0
  2571. data/vendor/gems/gems/thin-1.2.5/spec/configs/single.yml +9 -0
  2572. data/vendor/gems/gems/thin-1.2.5/spec/connection_spec.rb +106 -0
  2573. data/vendor/gems/gems/thin-1.2.5/spec/controllers/cluster_spec.rb +267 -0
  2574. data/vendor/gems/gems/thin-1.2.5/spec/controllers/controller_spec.rb +129 -0
  2575. data/vendor/gems/gems/thin-1.2.5/spec/controllers/service_spec.rb +50 -0
  2576. data/vendor/gems/gems/thin-1.2.5/spec/daemonizing_spec.rb +192 -0
  2577. data/vendor/gems/gems/thin-1.2.5/spec/headers_spec.rb +40 -0
  2578. data/vendor/gems/gems/thin-1.2.5/spec/logging_spec.rb +46 -0
  2579. data/vendor/gems/gems/thin-1.2.5/spec/perf/request_perf_spec.rb +50 -0
  2580. data/vendor/gems/gems/thin-1.2.5/spec/perf/response_perf_spec.rb +19 -0
  2581. data/vendor/gems/gems/thin-1.2.5/spec/perf/server_perf_spec.rb +39 -0
  2582. data/vendor/gems/gems/thin-1.2.5/spec/rack/loader_spec.rb +29 -0
  2583. data/vendor/gems/gems/thin-1.2.5/spec/rack/rails_adapter_spec.rb +106 -0
  2584. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/app/controllers/application.rb +10 -0
  2585. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/app/controllers/simple_controller.rb +19 -0
  2586. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/app/helpers/application_helper.rb +3 -0
  2587. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/app/views/simple/index.html.erb +15 -0
  2588. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/boot.rb +109 -0
  2589. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/environment.rb +64 -0
  2590. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/environments/development.rb +18 -0
  2591. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/environments/production.rb +19 -0
  2592. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/environments/test.rb +22 -0
  2593. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/initializers/inflections.rb +10 -0
  2594. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/initializers/mime_types.rb +5 -0
  2595. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/config/routes.rb +35 -0
  2596. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/404.html +30 -0
  2597. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/422.html +30 -0
  2598. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/500.html +30 -0
  2599. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/dispatch.cgi +10 -0
  2600. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/dispatch.fcgi +24 -0
  2601. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/dispatch.rb +10 -0
  2602. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/favicon.ico +0 -0
  2603. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/images/rails.png +0 -0
  2604. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/index.html +277 -0
  2605. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/javascripts/application.js +2 -0
  2606. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/javascripts/controls.js +963 -0
  2607. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/javascripts/dragdrop.js +972 -0
  2608. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/javascripts/effects.js +1120 -0
  2609. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/javascripts/prototype.js +4225 -0
  2610. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/public/robots.txt +5 -0
  2611. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/about +3 -0
  2612. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/console +3 -0
  2613. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/destroy +3 -0
  2614. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/generate +3 -0
  2615. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/performance/benchmarker +3 -0
  2616. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/performance/profiler +3 -0
  2617. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/performance/request +3 -0
  2618. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/plugin +3 -0
  2619. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/process/inspector +3 -0
  2620. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/process/reaper +3 -0
  2621. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/process/spawner +3 -0
  2622. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/runner +3 -0
  2623. data/vendor/gems/gems/thin-1.2.5/spec/rails_app/script/server +3 -0
  2624. data/vendor/gems/gems/thin-1.2.5/spec/request/mongrel_spec.rb +39 -0
  2625. data/vendor/gems/gems/thin-1.2.5/spec/request/parser_spec.rb +215 -0
  2626. data/vendor/gems/gems/thin-1.2.5/spec/request/persistent_spec.rb +35 -0
  2627. data/vendor/gems/gems/thin-1.2.5/spec/request/processing_spec.rb +49 -0
  2628. data/vendor/gems/gems/thin-1.2.5/spec/response_spec.rb +91 -0
  2629. data/vendor/gems/gems/thin-1.2.5/spec/runner_spec.rb +168 -0
  2630. data/vendor/gems/gems/thin-1.2.5/spec/server/builder_spec.rb +44 -0
  2631. data/vendor/gems/gems/thin-1.2.5/spec/server/pipelining_spec.rb +110 -0
  2632. data/vendor/gems/gems/thin-1.2.5/spec/server/robustness_spec.rb +34 -0
  2633. data/vendor/gems/gems/thin-1.2.5/spec/server/stopping_spec.rb +55 -0
  2634. data/vendor/gems/gems/thin-1.2.5/spec/server/swiftiply.yml +6 -0
  2635. data/vendor/gems/gems/thin-1.2.5/spec/server/swiftiply_spec.rb +32 -0
  2636. data/vendor/gems/gems/thin-1.2.5/spec/server/tcp_spec.rb +57 -0
  2637. data/vendor/gems/gems/thin-1.2.5/spec/server/threaded_spec.rb +27 -0
  2638. data/vendor/gems/gems/thin-1.2.5/spec/server/unix_socket_spec.rb +26 -0
  2639. data/vendor/gems/gems/thin-1.2.5/spec/server_spec.rb +96 -0
  2640. data/vendor/gems/gems/thin-1.2.5/spec/spec_helper.rb +219 -0
  2641. data/vendor/gems/gems/thin-1.2.5/tasks/announce.rake +22 -0
  2642. data/vendor/gems/gems/thin-1.2.5/tasks/deploy.rake +13 -0
  2643. data/vendor/gems/gems/thin-1.2.5/tasks/email.erb +30 -0
  2644. data/vendor/gems/gems/thin-1.2.5/tasks/gem.rake +74 -0
  2645. data/vendor/gems/gems/thin-1.2.5/tasks/rdoc.rake +25 -0
  2646. data/vendor/gems/gems/thin-1.2.5/tasks/site.rake +15 -0
  2647. data/vendor/gems/gems/thin-1.2.5/tasks/spec.rake +43 -0
  2648. data/vendor/gems/gems/thin-1.2.5/tasks/stats.rake +28 -0
  2649. data/vendor/gems/gems/treetop-1.4.2/LICENSE +19 -0
  2650. data/vendor/gems/gems/treetop-1.4.2/README.md +164 -0
  2651. data/vendor/gems/gems/treetop-1.4.2/Rakefile +19 -0
  2652. data/vendor/gems/gems/treetop-1.4.2/bin/tt +112 -0
  2653. data/vendor/gems/gems/treetop-1.4.2/doc/contributing_and_planned_features.markdown +103 -0
  2654. data/vendor/gems/gems/treetop-1.4.2/doc/grammar_composition.markdown +65 -0
  2655. data/vendor/gems/gems/treetop-1.4.2/doc/index.markdown +90 -0
  2656. data/vendor/gems/gems/treetop-1.4.2/doc/pitfalls_and_advanced_techniques.markdown +51 -0
  2657. data/vendor/gems/gems/treetop-1.4.2/doc/semantic_interpretation.markdown +189 -0
  2658. data/vendor/gems/gems/treetop-1.4.2/doc/site.rb +112 -0
  2659. data/vendor/gems/gems/treetop-1.4.2/doc/sitegen.rb +65 -0
  2660. data/vendor/gems/gems/treetop-1.4.2/doc/syntactic_recognition.markdown +100 -0
  2661. data/vendor/gems/gems/treetop-1.4.2/doc/using_in_ruby.markdown +21 -0
  2662. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic.rb +551 -0
  2663. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic.treetop +97 -0
  2664. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic_node_classes.rb +7 -0
  2665. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/arithmetic_test.rb +54 -0
  2666. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus +0 -0
  2667. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus.rb +718 -0
  2668. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus.treetop +132 -0
  2669. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus_node_classes.rb +5 -0
  2670. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/lambda_calculus_test.rb +89 -0
  2671. data/vendor/gems/gems/treetop-1.4.2/examples/lambda_calculus/test_helper.rb +18 -0
  2672. data/vendor/gems/gems/treetop-1.4.2/lib/treetop.rb +16 -0
  2673. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/bootstrap_gen_1_metagrammar.rb +45 -0
  2674. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler.rb +6 -0
  2675. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/grammar_compiler.rb +44 -0
  2676. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/lexical_address_space.rb +17 -0
  2677. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/metagrammar.rb +3258 -0
  2678. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/metagrammar.treetop +436 -0
  2679. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes.rb +20 -0
  2680. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/anything_symbol.rb +18 -0
  2681. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
  2682. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/character_class.rb +28 -0
  2683. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/choice.rb +31 -0
  2684. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
  2685. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/grammar.rb +28 -0
  2686. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
  2687. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
  2688. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/optional.rb +19 -0
  2689. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
  2690. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/parsing_expression.rb +146 -0
  2691. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/parsing_rule.rb +55 -0
  2692. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/predicate.rb +45 -0
  2693. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/predicate_block.rb +16 -0
  2694. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/repetition.rb +55 -0
  2695. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/sequence.rb +71 -0
  2696. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/terminal.rb +20 -0
  2697. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
  2698. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
  2699. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/compiler/ruby_builder.rb +113 -0
  2700. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/ruby_extensions.rb +2 -0
  2701. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/ruby_extensions/string.rb +42 -0
  2702. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime.rb +5 -0
  2703. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/compiled_parser.rb +109 -0
  2704. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list.rb +4 -0
  2705. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
  2706. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
  2707. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
  2708. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/syntax_node.rb +114 -0
  2709. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
  2710. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/terminal_parse_failure_debug.rb +21 -0
  2711. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
  2712. data/vendor/gems/gems/treetop-1.4.2/lib/treetop/version.rb +9 -0
  2713. data/vendor/gems/gems/yui-compressor-0.9.1/Rakefile +21 -0
  2714. data/vendor/gems/gems/yui-compressor-0.9.1/lib/yui/compressor.rb +200 -0
  2715. data/vendor/gems/gems/yui-compressor-0.9.1/test/compressor_test.rb +94 -0
  2716. data/vendor/gems/gems/yui-compressor-0.9.1/vendor/yuicompressor-2.4.2.jar +0 -0
  2717. data/vendor/gems/specifications/builder-2.1.2.gemspec +33 -0
  2718. data/vendor/gems/specifications/compass-0.8.17.gemspec +36 -0
  2719. data/vendor/gems/specifications/configuration-1.1.0.gemspec +27 -0
  2720. data/vendor/gems/specifications/cucumber-0.4.4.gemspec +72 -0
  2721. data/vendor/gems/specifications/daemons-1.0.10.gemspec +30 -0
  2722. data/vendor/gems/specifications/diff-lcs-1.1.2.gemspec +34 -0
  2723. data/vendor/gems/specifications/eventmachine-0.12.10.gemspec +40 -0
  2724. data/vendor/gems/specifications/extlib-0.9.13.gemspec +28 -0
  2725. data/vendor/gems/specifications/haml-2.2.13.gemspec +45 -0
  2726. data/vendor/gems/specifications/highline-1.5.1.gemspec +31 -0
  2727. data/vendor/gems/specifications/json-1.2.0.gemspec +34 -0
  2728. data/vendor/gems/specifications/launchy-0.3.3.gemspec +38 -0
  2729. data/vendor/gems/specifications/polyglot-0.2.9.gemspec +34 -0
  2730. data/vendor/gems/specifications/rack-1.0.1.gemspec +53 -0
  2731. data/vendor/gems/specifications/rack-test-0.5.1.gemspec +36 -0
  2732. data/vendor/gems/specifications/rake-0.8.7.gemspec +32 -0
  2733. data/vendor/gems/specifications/rdoc-2.4.3.gemspec +47 -0
  2734. data/vendor/gems/specifications/rspec-1.2.9.gemspec +58 -0
  2735. data/vendor/gems/specifications/sdoc-0.2.14.1.gemspec +35 -0
  2736. data/vendor/gems/specifications/shotgun-0.4.gemspec +37 -0
  2737. data/vendor/gems/specifications/sinatra-0.9.4.gemspec +40 -0
  2738. data/vendor/gems/specifications/sinatra-content-for-0.2.gemspec +40 -0
  2739. data/vendor/gems/specifications/sprockets-1.0.2.gemspec +31 -0
  2740. data/vendor/gems/specifications/templater-1.0.0.gemspec +54 -0
  2741. data/vendor/gems/specifications/term-ansicolor-1.0.4.gemspec +30 -0
  2742. data/vendor/gems/specifications/thin-1.2.5.gemspec +41 -0
  2743. data/vendor/gems/specifications/treetop-1.4.2.gemspec +32 -0
  2744. data/vendor/gems/specifications/yui-compressor-0.9.1.gemspec +29 -0
  2745. metadata +2684 -2
@@ -0,0 +1,424 @@
1
+ /*****************************************************************************
2
+
3
+ $Id$
4
+
5
+ File: ed.h
6
+ Date: 06Apr06
7
+
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
+
11
+ This program is free software; you can redistribute it and/or modify
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
+
16
+ See the file COPYING for complete licensing information.
17
+
18
+ *****************************************************************************/
19
+
20
+ #ifndef __EventableDescriptor__H_
21
+ #define __EventableDescriptor__H_
22
+
23
+
24
+ class EventMachine_t; // forward reference
25
+ #ifdef WITH_SSL
26
+ class SslBox_t; // forward reference
27
+ #endif
28
+
29
+ bool SetSocketNonblocking (SOCKET);
30
+
31
+
32
+ /*************************
33
+ class EventableDescriptor
34
+ *************************/
35
+
36
+ class EventableDescriptor: public Bindable_t
37
+ {
38
+ public:
39
+ EventableDescriptor (int, EventMachine_t*);
40
+ virtual ~EventableDescriptor();
41
+
42
+ int GetSocket() {return MySocket;}
43
+ void SetSocketInvalid() { MySocket = INVALID_SOCKET; }
44
+ void Close();
45
+
46
+ virtual void Read() = 0;
47
+ virtual void Write() = 0;
48
+ virtual void Heartbeat() = 0;
49
+
50
+ // These methods tell us whether the descriptor
51
+ // should be selected or polled for read/write.
52
+ virtual bool SelectForRead() = 0;
53
+ virtual bool SelectForWrite() = 0;
54
+
55
+ // are we scheduled for a close, or in an error state, or already closed?
56
+ bool ShouldDelete();
57
+ // Do we have any data to write? This is used by ShouldDelete.
58
+ virtual int GetOutboundDataSize() {return 0;}
59
+ virtual bool IsWatchOnly(){ return false; }
60
+
61
+ virtual void ScheduleClose (bool after_writing);
62
+ bool IsCloseScheduled();
63
+ virtual void HandleError(){ ScheduleClose (false); }
64
+
65
+ void SetEventCallback (void (*cb)(const unsigned long, int, const char*, const unsigned long));
66
+
67
+ virtual bool GetPeername (struct sockaddr*) {return false;}
68
+ virtual bool GetSockname (struct sockaddr*) {return false;}
69
+ virtual bool GetSubprocessPid (pid_t*) {return false;}
70
+
71
+ virtual void StartTls() {}
72
+ virtual void SetTlsParms (const char *privkey_filename, const char *certchain_filename, bool verify_peer) {}
73
+
74
+ #ifdef WITH_SSL
75
+ virtual X509 *GetPeerCert() {return NULL;}
76
+ #endif
77
+
78
+ virtual float GetCommInactivityTimeout() {return 0.0;}
79
+ virtual int SetCommInactivityTimeout (float value) {return 0;}
80
+ float GetPendingConnectTimeout();
81
+ int SetPendingConnectTimeout (float value);
82
+
83
+ #ifdef HAVE_EPOLL
84
+ struct epoll_event *GetEpollEvent() { return &EpollEvent; }
85
+ #endif
86
+
87
+ virtual void StartProxy(const unsigned long, const unsigned long);
88
+ virtual void StopProxy();
89
+ virtual void SetProxiedFrom(EventableDescriptor*, const unsigned long);
90
+ virtual int SendOutboundData(const char*,int){ return -1; }
91
+ virtual bool IsPaused(){ return false; }
92
+ virtual bool Pause(){ return false; }
93
+ virtual bool Resume(){ return false; }
94
+
95
+ private:
96
+ bool bCloseNow;
97
+ bool bCloseAfterWriting;
98
+
99
+ protected:
100
+ int MySocket;
101
+
102
+ void (*EventCallback)(const unsigned long, int, const char*, const unsigned long);
103
+ void _GenericInboundDispatch(const char*, int);
104
+
105
+ Int64 CreatedAt;
106
+ bool bCallbackUnbind;
107
+ int UnbindReasonCode;
108
+ EventableDescriptor *ProxyTarget;
109
+ EventableDescriptor *ProxiedFrom;
110
+
111
+ unsigned long MaxOutboundBufSize;
112
+
113
+ #ifdef HAVE_EPOLL
114
+ struct epoll_event EpollEvent;
115
+ #endif
116
+
117
+ EventMachine_t *MyEventMachine;
118
+ int PendingConnectTimeout;
119
+ };
120
+
121
+
122
+
123
+ /*************************
124
+ class LoopbreakDescriptor
125
+ *************************/
126
+
127
+ class LoopbreakDescriptor: public EventableDescriptor
128
+ {
129
+ public:
130
+ LoopbreakDescriptor (int, EventMachine_t*);
131
+ virtual ~LoopbreakDescriptor() {}
132
+
133
+ virtual void Read();
134
+ virtual void Write();
135
+ virtual void Heartbeat() {}
136
+
137
+ virtual bool SelectForRead() {return true;}
138
+ virtual bool SelectForWrite() {return false;}
139
+ };
140
+
141
+
142
+ /**************************
143
+ class ConnectionDescriptor
144
+ **************************/
145
+
146
+ class ConnectionDescriptor: public EventableDescriptor
147
+ {
148
+ public:
149
+ ConnectionDescriptor (int, EventMachine_t*);
150
+ virtual ~ConnectionDescriptor();
151
+
152
+ static int SendDataToConnection (const unsigned long, const char*, int);
153
+ static void CloseConnection (const unsigned long, bool);
154
+ static int ReportErrorStatus (const unsigned long);
155
+
156
+ int SendOutboundData (const char*, int);
157
+
158
+ void SetConnectPending (bool f);
159
+ virtual void ScheduleClose (bool after_writing);
160
+ virtual void HandleError();
161
+
162
+ void SetNotifyReadable (bool);
163
+ void SetNotifyWritable (bool);
164
+ void SetWatchOnly (bool);
165
+
166
+ bool IsPaused(){ return bPaused; }
167
+ bool Pause();
168
+ bool Resume();
169
+
170
+ bool IsNotifyReadable(){ return bNotifyReadable; }
171
+ bool IsNotifyWritable(){ return bNotifyWritable; }
172
+ virtual bool IsWatchOnly(){ return bWatchOnly; }
173
+
174
+ virtual void Read();
175
+ virtual void Write();
176
+ virtual void Heartbeat();
177
+
178
+ virtual bool SelectForRead();
179
+ virtual bool SelectForWrite();
180
+
181
+ // Do we have any data to write? This is used by ShouldDelete.
182
+ virtual int GetOutboundDataSize() {return OutboundDataSize;}
183
+
184
+ virtual void StartTls();
185
+ virtual void SetTlsParms (const char *privkey_filename, const char *certchain_filename, bool verify_peer);
186
+
187
+ #ifdef WITH_SSL
188
+ virtual X509 *GetPeerCert();
189
+ virtual bool VerifySslPeer(const char*);
190
+ virtual void AcceptSslPeer();
191
+ #endif
192
+
193
+ void SetServerMode() {bIsServer = true;}
194
+
195
+ virtual bool GetPeername (struct sockaddr*);
196
+ virtual bool GetSockname (struct sockaddr*);
197
+
198
+ virtual float GetCommInactivityTimeout();
199
+ virtual int SetCommInactivityTimeout (float value);
200
+
201
+
202
+ protected:
203
+ struct OutboundPage {
204
+ OutboundPage (const char *b, int l, int o=0): Buffer(b), Length(l), Offset(o) {}
205
+ void Free() {if (Buffer) free ((char*)Buffer); }
206
+ const char *Buffer;
207
+ int Length;
208
+ int Offset;
209
+ };
210
+
211
+ protected:
212
+ bool bPaused;
213
+ bool bConnectPending;
214
+
215
+ bool bNotifyReadable;
216
+ bool bNotifyWritable;
217
+ bool bWatchOnly;
218
+
219
+ bool bReadAttemptedAfterClose;
220
+ bool bWriteAttemptedAfterClose;
221
+
222
+ deque<OutboundPage> OutboundPages;
223
+ int OutboundDataSize;
224
+
225
+ #ifdef WITH_SSL
226
+ SslBox_t *SslBox;
227
+ std::string CertChainFilename;
228
+ std::string PrivateKeyFilename;
229
+ bool bHandshakeSignaled;
230
+ bool bSslVerifyPeer;
231
+ bool bSslPeerAccepted;
232
+ #endif
233
+
234
+ #ifdef HAVE_KQUEUE
235
+ bool bGotExtraKqueueEvent;
236
+ #endif
237
+
238
+ bool bIsServer;
239
+ Int64 LastIo;
240
+ int InactivityTimeout;
241
+
242
+ private:
243
+ void _UpdateEvents();
244
+ void _UpdateEvents(bool, bool);
245
+ void _WriteOutboundData();
246
+ void _DispatchInboundData (const char *buffer, int size);
247
+ void _DispatchCiphertext();
248
+ int _SendRawOutboundData (const char*, int);
249
+ int _ReportErrorStatus();
250
+ void _CheckHandshakeStatus();
251
+
252
+ };
253
+
254
+
255
+ /************************
256
+ class DatagramDescriptor
257
+ ************************/
258
+
259
+ class DatagramDescriptor: public EventableDescriptor
260
+ {
261
+ public:
262
+ DatagramDescriptor (int, EventMachine_t*);
263
+ virtual ~DatagramDescriptor();
264
+
265
+ virtual void Read();
266
+ virtual void Write();
267
+ virtual void Heartbeat();
268
+
269
+ virtual bool SelectForRead() {return true;}
270
+ virtual bool SelectForWrite();
271
+
272
+ int SendOutboundData (const char*, int);
273
+ int SendOutboundDatagram (const char*, int, const char*, int);
274
+
275
+ // Do we have any data to write? This is used by ShouldDelete.
276
+ virtual int GetOutboundDataSize() {return OutboundDataSize;}
277
+
278
+ virtual bool GetPeername (struct sockaddr*);
279
+ virtual bool GetSockname (struct sockaddr*);
280
+
281
+ virtual float GetCommInactivityTimeout();
282
+ virtual int SetCommInactivityTimeout (float value);
283
+
284
+ static int SendDatagram (const unsigned long, const char*, int, const char*, int);
285
+
286
+
287
+ protected:
288
+ struct OutboundPage {
289
+ OutboundPage (const char *b, int l, struct sockaddr_in f, int o=0): Buffer(b), Length(l), Offset(o), From(f) {}
290
+ void Free() {if (Buffer) free ((char*)Buffer); }
291
+ const char *Buffer;
292
+ int Length;
293
+ int Offset;
294
+ struct sockaddr_in From;
295
+ };
296
+
297
+ deque<OutboundPage> OutboundPages;
298
+ int OutboundDataSize;
299
+
300
+ struct sockaddr_in ReturnAddress;
301
+
302
+ Int64 LastIo;
303
+ int InactivityTimeout;
304
+ };
305
+
306
+
307
+ /************************
308
+ class AcceptorDescriptor
309
+ ************************/
310
+
311
+ class AcceptorDescriptor: public EventableDescriptor
312
+ {
313
+ public:
314
+ AcceptorDescriptor (int, EventMachine_t*);
315
+ virtual ~AcceptorDescriptor();
316
+
317
+ virtual void Read();
318
+ virtual void Write();
319
+ virtual void Heartbeat();
320
+
321
+ virtual bool SelectForRead() {return true;}
322
+ virtual bool SelectForWrite() {return false;}
323
+
324
+ virtual bool GetSockname (struct sockaddr*);
325
+
326
+ static void StopAcceptor (const unsigned long binding);
327
+ };
328
+
329
+ /********************
330
+ class PipeDescriptor
331
+ ********************/
332
+
333
+ #ifdef OS_UNIX
334
+ class PipeDescriptor: public EventableDescriptor
335
+ {
336
+ public:
337
+ PipeDescriptor (int, pid_t, EventMachine_t*);
338
+ virtual ~PipeDescriptor();
339
+
340
+ virtual void Read();
341
+ virtual void Write();
342
+ virtual void Heartbeat();
343
+
344
+ virtual bool SelectForRead();
345
+ virtual bool SelectForWrite();
346
+
347
+ int SendOutboundData (const char*, int);
348
+ virtual int GetOutboundDataSize() {return OutboundDataSize;}
349
+
350
+ virtual bool GetSubprocessPid (pid_t*);
351
+
352
+ protected:
353
+ struct OutboundPage {
354
+ OutboundPage (const char *b, int l, int o=0): Buffer(b), Length(l), Offset(o) {}
355
+ void Free() {if (Buffer) free ((char*)Buffer); }
356
+ const char *Buffer;
357
+ int Length;
358
+ int Offset;
359
+ };
360
+
361
+ protected:
362
+ bool bReadAttemptedAfterClose;
363
+ Int64 LastIo;
364
+ int InactivityTimeout;
365
+
366
+ deque<OutboundPage> OutboundPages;
367
+ int OutboundDataSize;
368
+
369
+ pid_t SubprocessPid;
370
+
371
+ private:
372
+ void _DispatchInboundData (const char *buffer, int size);
373
+ };
374
+ #endif // OS_UNIX
375
+
376
+
377
+ /************************
378
+ class KeyboardDescriptor
379
+ ************************/
380
+
381
+ class KeyboardDescriptor: public EventableDescriptor
382
+ {
383
+ public:
384
+ KeyboardDescriptor (EventMachine_t*);
385
+ virtual ~KeyboardDescriptor();
386
+
387
+ virtual void Read();
388
+ virtual void Write();
389
+ virtual void Heartbeat();
390
+
391
+ virtual bool SelectForRead() {return true;}
392
+ virtual bool SelectForWrite() {return false;}
393
+
394
+ protected:
395
+ bool bReadAttemptedAfterClose;
396
+ Int64 LastIo;
397
+ int InactivityTimeout;
398
+
399
+ private:
400
+ void _DispatchInboundData (const char *buffer, int size);
401
+ };
402
+
403
+
404
+ /***********************
405
+ class InotifyDescriptor
406
+ ************************/
407
+
408
+ class InotifyDescriptor: public EventableDescriptor
409
+ {
410
+ public:
411
+ InotifyDescriptor (EventMachine_t*);
412
+ virtual ~InotifyDescriptor();
413
+
414
+ void Read();
415
+ void Write();
416
+
417
+ virtual void Heartbeat() {}
418
+ virtual bool SelectForRead() {return true;}
419
+ virtual bool SelectForWrite() {return false;}
420
+ };
421
+
422
+ #endif // __EventableDescriptor__H_
423
+
424
+
@@ -0,0 +1,2282 @@
1
+ /*****************************************************************************
2
+
3
+ $Id$
4
+
5
+ File: em.cpp
6
+ Date: 06Apr06
7
+
8
+ Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.
9
+ Gmail: blackhedd
10
+
11
+ This program is free software; you can redistribute it and/or modify
12
+ it under the terms of either: 1) the GNU General Public License
13
+ as published by the Free Software Foundation; either version 2 of the
14
+ License, or (at your option) any later version; or 2) Ruby's License.
15
+
16
+ See the file COPYING for complete licensing information.
17
+
18
+ *****************************************************************************/
19
+
20
+ // THIS ENTIRE FILE WILL EVENTUALLY BE FOR UNIX BUILDS ONLY.
21
+ //#ifdef OS_UNIX
22
+
23
+
24
+ #include "project.h"
25
+
26
+ // Keep a global variable floating around
27
+ // with the current loop time as set by the Event Machine.
28
+ // This avoids the need for frequent expensive calls to time(NULL);
29
+ Int64 gCurrentLoopTime;
30
+
31
+ #ifdef OS_WIN32
32
+ unsigned gTickCountTickover;
33
+ unsigned gLastTickCount;
34
+ #endif
35
+
36
+
37
+ /* The numer of max outstanding timers was once a const enum defined in em.h.
38
+ * Now we define it here so that users can change its value if necessary.
39
+ */
40
+ static unsigned int MaxOutstandingTimers = 10000;
41
+
42
+
43
+ /* Internal helper to convert strings to internet addresses. IPv6-aware.
44
+ * Not reentrant or threadsafe, optimized for speed.
45
+ */
46
+ static struct sockaddr *name2address (const char *server, int port, int *family, int *bind_size);
47
+
48
+ /***************************************
49
+ STATIC EventMachine_t::GetMaxTimerCount
50
+ ***************************************/
51
+
52
+ int EventMachine_t::GetMaxTimerCount()
53
+ {
54
+ return MaxOutstandingTimers;
55
+ }
56
+
57
+
58
+ /***************************************
59
+ STATIC EventMachine_t::SetMaxTimerCount
60
+ ***************************************/
61
+
62
+ void EventMachine_t::SetMaxTimerCount (int count)
63
+ {
64
+ /* Allow a user to increase the maximum number of outstanding timers.
65
+ * If this gets "too high" (a metric that is of course platform dependent),
66
+ * bad things will happen like performance problems and possible overuse
67
+ * of memory.
68
+ * The actual timer mechanism is very efficient so it's hard to know what
69
+ * the practical max, but 100,000 shouldn't be too problematical.
70
+ */
71
+ if (count < 100)
72
+ count = 100;
73
+ MaxOutstandingTimers = count;
74
+ }
75
+
76
+
77
+
78
+ /******************************
79
+ EventMachine_t::EventMachine_t
80
+ ******************************/
81
+
82
+ EventMachine_t::EventMachine_t (void (*event_callback)(const unsigned long, int, const char*, const unsigned long)):
83
+ HeartbeatInterval(2000000),
84
+ EventCallback (event_callback),
85
+ NextHeartbeatTime (0),
86
+ LoopBreakerReader (-1),
87
+ LoopBreakerWriter (-1),
88
+ bEpoll (false),
89
+ epfd (-1),
90
+ bKqueue (false),
91
+ kqfd (-1),
92
+ inotify (NULL)
93
+ {
94
+ // Default time-slice is just smaller than one hundred mills.
95
+ Quantum.tv_sec = 0;
96
+ Quantum.tv_usec = 90000;
97
+
98
+ gTerminateSignalReceived = false;
99
+ // Make sure the current loop time is sane, in case we do any initializations of
100
+ // objects before we start running.
101
+ _UpdateTime();
102
+
103
+ /* We initialize the network library here (only on Windows of course)
104
+ * and initialize "loop breakers." Our destructor also does some network-level
105
+ * cleanup. There's thus an implicit assumption that any given instance of EventMachine_t
106
+ * will only call ::Run once. Is that a good assumption? Should we move some of these
107
+ * inits and de-inits into ::Run?
108
+ */
109
+ #ifdef OS_WIN32
110
+ WSADATA w;
111
+ WSAStartup (MAKEWORD (1, 1), &w);
112
+ #endif
113
+
114
+ _InitializeLoopBreaker();
115
+ }
116
+
117
+
118
+ /*******************************
119
+ EventMachine_t::~EventMachine_t
120
+ *******************************/
121
+
122
+ EventMachine_t::~EventMachine_t()
123
+ {
124
+ // Run down descriptors
125
+ size_t i;
126
+ for (i = 0; i < NewDescriptors.size(); i++)
127
+ delete NewDescriptors[i];
128
+ for (i = 0; i < Descriptors.size(); i++)
129
+ delete Descriptors[i];
130
+
131
+ close (LoopBreakerReader);
132
+ close (LoopBreakerWriter);
133
+
134
+ // Remove any file watch descriptors
135
+ while(!Files.empty()) {
136
+ map<int, Bindable_t*>::iterator f = Files.begin();
137
+ UnwatchFile (f->first);
138
+ }
139
+
140
+ if (epfd != -1)
141
+ close (epfd);
142
+ if (kqfd != -1)
143
+ close (kqfd);
144
+ }
145
+
146
+
147
+ /*************************
148
+ EventMachine_t::_UseEpoll
149
+ *************************/
150
+
151
+ void EventMachine_t::_UseEpoll()
152
+ {
153
+ /* Temporary.
154
+ * Use an internal flag to switch in epoll-based functionality until we determine
155
+ * how it should be integrated properly and the extent of the required changes.
156
+ * A permanent solution needs to allow the integration of additional technologies,
157
+ * like kqueue and Solaris's events.
158
+ */
159
+
160
+ #ifdef HAVE_EPOLL
161
+ bEpoll = true;
162
+ #endif
163
+ }
164
+
165
+ /**************************
166
+ EventMachine_t::_UseKqueue
167
+ **************************/
168
+
169
+ void EventMachine_t::_UseKqueue()
170
+ {
171
+ /* Temporary.
172
+ * See comments under _UseEpoll.
173
+ */
174
+
175
+ #ifdef HAVE_KQUEUE
176
+ bKqueue = true;
177
+ #endif
178
+ }
179
+
180
+
181
+ /****************************
182
+ EventMachine_t::ScheduleHalt
183
+ ****************************/
184
+
185
+ void EventMachine_t::ScheduleHalt()
186
+ {
187
+ /* This is how we stop the machine.
188
+ * This can be called by clients. Signal handlers will probably
189
+ * set the global flag.
190
+ * For now this means there can only be one EventMachine ever running at a time.
191
+ *
192
+ * IMPORTANT: keep this light, fast, and async-safe. Don't do anything frisky in here,
193
+ * because it may be called from signal handlers invoked from code that we don't
194
+ * control. At this writing (20Sep06), EM does NOT install any signal handlers of
195
+ * its own.
196
+ *
197
+ * We need a FAQ. And one of the questions is: how do I stop EM when Ctrl-C happens?
198
+ * The answer is to call evma_stop_machine, which calls here, from a SIGINT handler.
199
+ */
200
+ gTerminateSignalReceived = true;
201
+ }
202
+
203
+
204
+
205
+ /*******************************
206
+ EventMachine_t::SetTimerQuantum
207
+ *******************************/
208
+
209
+ void EventMachine_t::SetTimerQuantum (int interval)
210
+ {
211
+ /* We get a timer-quantum expressed in milliseconds.
212
+ * Don't set a quantum smaller than 5 or larger than 2500.
213
+ */
214
+
215
+ if ((interval < 5) || (interval > 2500))
216
+ throw std::runtime_error ("invalid timer-quantum");
217
+
218
+ Quantum.tv_sec = interval / 1000;
219
+ Quantum.tv_usec = (interval % 1000) * 1000;
220
+ }
221
+
222
+
223
+ /*************************************
224
+ (STATIC) EventMachine_t::SetuidString
225
+ *************************************/
226
+
227
+ void EventMachine_t::SetuidString (const char *username)
228
+ {
229
+ /* This method takes a caller-supplied username and tries to setuid
230
+ * to that user. There is no meaningful implementation (and no error)
231
+ * on Windows. On Unix, a failure to setuid the caller-supplied string
232
+ * causes a fatal abort, because presumably the program is calling here
233
+ * in order to fulfill a security requirement. If we fail silently,
234
+ * the user may continue to run with too much privilege.
235
+ *
236
+ * TODO, we need to decide on and document a way of generating C++ level errors
237
+ * that can be wrapped in documented Ruby exceptions, so users can catch
238
+ * and handle them. And distinguish it from errors that we WON'T let the Ruby
239
+ * user catch (like security-violations and resource-overallocation).
240
+ * A setuid failure here would be in the latter category.
241
+ */
242
+
243
+ #ifdef OS_UNIX
244
+ if (!username || !*username)
245
+ throw std::runtime_error ("setuid_string failed: no username specified");
246
+
247
+ struct passwd *p = getpwnam (username);
248
+ if (!p)
249
+ throw std::runtime_error ("setuid_string failed: unknown username");
250
+
251
+ if (setuid (p->pw_uid) != 0)
252
+ throw std::runtime_error ("setuid_string failed: no setuid");
253
+
254
+ // Success.
255
+ #endif
256
+ }
257
+
258
+
259
+ /****************************************
260
+ (STATIC) EventMachine_t::SetRlimitNofile
261
+ ****************************************/
262
+
263
+ int EventMachine_t::SetRlimitNofile (int nofiles)
264
+ {
265
+ #ifdef OS_UNIX
266
+ struct rlimit rlim;
267
+ getrlimit (RLIMIT_NOFILE, &rlim);
268
+ if (nofiles >= 0) {
269
+ rlim.rlim_cur = nofiles;
270
+ if ((unsigned int)nofiles > rlim.rlim_max)
271
+ rlim.rlim_max = nofiles;
272
+ setrlimit (RLIMIT_NOFILE, &rlim);
273
+ // ignore the error return, for now at least.
274
+ // TODO, emit an error message someday when we have proper debug levels.
275
+ }
276
+ getrlimit (RLIMIT_NOFILE, &rlim);
277
+ return rlim.rlim_cur;
278
+ #endif
279
+
280
+ #ifdef OS_WIN32
281
+ // No meaningful implementation on Windows.
282
+ return 0;
283
+ #endif
284
+ }
285
+
286
+
287
+ /*********************************
288
+ EventMachine_t::SignalLoopBreaker
289
+ *********************************/
290
+
291
+ void EventMachine_t::SignalLoopBreaker()
292
+ {
293
+ #ifdef OS_UNIX
294
+ write (LoopBreakerWriter, "", 1);
295
+ #endif
296
+ #ifdef OS_WIN32
297
+ sendto (LoopBreakerReader, "", 0, 0, (struct sockaddr*)&(LoopBreakerTarget), sizeof(LoopBreakerTarget));
298
+ #endif
299
+ }
300
+
301
+
302
+ /**************************************
303
+ EventMachine_t::_InitializeLoopBreaker
304
+ **************************************/
305
+
306
+ void EventMachine_t::_InitializeLoopBreaker()
307
+ {
308
+ /* A "loop-breaker" is a socket-descriptor that we can write to in order
309
+ * to break the main select loop. Primarily useful for things running on
310
+ * threads other than the main EM thread, so they can trigger processing
311
+ * of events that arise exogenously to the EM.
312
+ * Keep the loop-breaker pipe out of the main descriptor set, otherwise
313
+ * its events will get passed on to user code.
314
+ */
315
+
316
+ #ifdef OS_UNIX
317
+ int fd[2];
318
+ if (pipe (fd))
319
+ throw std::runtime_error ("no loop breaker");
320
+
321
+ LoopBreakerWriter = fd[1];
322
+ LoopBreakerReader = fd[0];
323
+ #endif
324
+
325
+ #ifdef OS_WIN32
326
+ int sd = socket (AF_INET, SOCK_DGRAM, 0);
327
+ if (sd == INVALID_SOCKET)
328
+ throw std::runtime_error ("no loop breaker socket");
329
+ SetSocketNonblocking (sd);
330
+
331
+ memset (&LoopBreakerTarget, 0, sizeof(LoopBreakerTarget));
332
+ LoopBreakerTarget.sin_family = AF_INET;
333
+ LoopBreakerTarget.sin_addr.s_addr = inet_addr ("127.0.0.1");
334
+
335
+ srand ((int)time(NULL));
336
+ int i;
337
+ for (i=0; i < 100; i++) {
338
+ int r = (rand() % 10000) + 20000;
339
+ LoopBreakerTarget.sin_port = htons (r);
340
+ if (bind (sd, (struct sockaddr*)&LoopBreakerTarget, sizeof(LoopBreakerTarget)) == 0)
341
+ break;
342
+ }
343
+
344
+ if (i == 100)
345
+ throw std::runtime_error ("no loop breaker");
346
+ LoopBreakerReader = sd;
347
+ #endif
348
+ }
349
+
350
+ /***************************
351
+ EventMachine_t::_UpdateTime
352
+ ***************************/
353
+
354
+ void EventMachine_t::_UpdateTime()
355
+ {
356
+ #if defined(OS_UNIX)
357
+ struct timeval tv;
358
+ gettimeofday (&tv, NULL);
359
+ gCurrentLoopTime = (((Int64)(tv.tv_sec)) * 1000000LL) + ((Int64)(tv.tv_usec));
360
+
361
+ #elif defined(OS_WIN32)
362
+ unsigned tick = GetTickCount();
363
+ if (tick < gLastTickCount)
364
+ gTickCountTickover += 1;
365
+ gLastTickCount = tick;
366
+ gCurrentLoopTime = ((Int64)gTickCountTickover << 32) + (Int64)tick;
367
+
368
+ #else
369
+ gCurrentLoopTime = (Int64)time(NULL) * 1000000LL;
370
+ #endif
371
+ }
372
+
373
+ /*******************
374
+ EventMachine_t::Run
375
+ *******************/
376
+
377
+ void EventMachine_t::Run()
378
+ {
379
+ #ifdef OS_WIN32
380
+ HookControlC (true);
381
+ #endif
382
+
383
+ #ifdef HAVE_EPOLL
384
+ if (bEpoll) {
385
+ epfd = epoll_create (MaxEpollDescriptors);
386
+ if (epfd == -1) {
387
+ char buf[200];
388
+ snprintf (buf, sizeof(buf)-1, "unable to create epoll descriptor: %s", strerror(errno));
389
+ throw std::runtime_error (buf);
390
+ }
391
+ int cloexec = fcntl (epfd, F_GETFD, 0);
392
+ assert (cloexec >= 0);
393
+ cloexec |= FD_CLOEXEC;
394
+ fcntl (epfd, F_SETFD, cloexec);
395
+
396
+ assert (LoopBreakerReader >= 0);
397
+ LoopbreakDescriptor *ld = new LoopbreakDescriptor (LoopBreakerReader, this);
398
+ assert (ld);
399
+ Add (ld);
400
+ }
401
+ #endif
402
+
403
+ #ifdef HAVE_KQUEUE
404
+ if (bKqueue) {
405
+ kqfd = kqueue();
406
+ if (kqfd == -1) {
407
+ char buf[200];
408
+ snprintf (buf, sizeof(buf)-1, "unable to create kqueue descriptor: %s", strerror(errno));
409
+ throw std::runtime_error (buf);
410
+ }
411
+ // cloexec not needed. By definition, kqueues are not carried across forks.
412
+
413
+ assert (LoopBreakerReader >= 0);
414
+ LoopbreakDescriptor *ld = new LoopbreakDescriptor (LoopBreakerReader, this);
415
+ assert (ld);
416
+ Add (ld);
417
+ }
418
+ #endif
419
+
420
+ while (true) {
421
+ _UpdateTime();
422
+ if (!_RunTimers())
423
+ break;
424
+
425
+ /* _Add must precede _Modify because the same descriptor might
426
+ * be on both lists during the same pass through the machine,
427
+ * and to modify a descriptor before adding it would fail.
428
+ */
429
+ _AddNewDescriptors();
430
+ _ModifyDescriptors();
431
+
432
+ if (!_RunOnce())
433
+ break;
434
+ if (gTerminateSignalReceived)
435
+ break;
436
+ }
437
+
438
+ #ifdef OS_WIN32
439
+ HookControlC (false);
440
+ #endif
441
+ }
442
+
443
+
444
+ /************************
445
+ EventMachine_t::_RunOnce
446
+ ************************/
447
+
448
+ bool EventMachine_t::_RunOnce()
449
+ {
450
+ if (bEpoll)
451
+ return _RunEpollOnce();
452
+ else if (bKqueue)
453
+ return _RunKqueueOnce();
454
+ else
455
+ return _RunSelectOnce();
456
+ }
457
+
458
+
459
+
460
+ /*****************************
461
+ EventMachine_t::_RunEpollOnce
462
+ *****************************/
463
+
464
+ bool EventMachine_t::_RunEpollOnce()
465
+ {
466
+ #ifdef HAVE_EPOLL
467
+ assert (epfd != -1);
468
+ int s;
469
+
470
+ #ifdef BUILD_FOR_RUBY
471
+ TRAP_BEG;
472
+ #endif
473
+ s = epoll_wait (epfd, epoll_events, MaxEvents, 50);
474
+ #ifdef BUILD_FOR_RUBY
475
+ TRAP_END;
476
+ #endif
477
+
478
+ if (s > 0) {
479
+ for (int i=0; i < s; i++) {
480
+ EventableDescriptor *ed = (EventableDescriptor*) epoll_events[i].data.ptr;
481
+
482
+ if (ed->IsWatchOnly() && ed->GetSocket() == INVALID_SOCKET)
483
+ continue;
484
+
485
+ assert(ed->GetSocket() != INVALID_SOCKET);
486
+
487
+ if (epoll_events[i].events & EPOLLIN)
488
+ ed->Read();
489
+ if (epoll_events[i].events & EPOLLOUT)
490
+ ed->Write();
491
+ if (epoll_events[i].events & (EPOLLERR | EPOLLHUP))
492
+ ed->HandleError();
493
+ }
494
+ }
495
+ else if (s < 0) {
496
+ // epoll_wait can fail on error in a handful of ways.
497
+ // If this happens, then wait for a little while to avoid busy-looping.
498
+ // If the error was EINTR, we probably caught SIGCHLD or something,
499
+ // so keep the wait short.
500
+ timeval tv = {0, ((errno == EINTR) ? 5 : 50) * 1000};
501
+ EmSelect (0, NULL, NULL, NULL, &tv);
502
+ }
503
+
504
+ { // cleanup dying sockets
505
+ // vector::pop_back works in constant time.
506
+ // TODO, rip this out and only delete the descriptors we know have died,
507
+ // rather than traversing the whole list.
508
+ // Modified 05Jan08 per suggestions by Chris Heath. It's possible that
509
+ // an EventableDescriptor will have a descriptor value of -1. That will
510
+ // happen if EventableDescriptor::Close was called on it. In that case,
511
+ // don't call epoll_ctl to remove the socket's filters from the epoll set.
512
+ // According to the epoll docs, this happens automatically when the
513
+ // descriptor is closed anyway. This is different from the case where
514
+ // the socket has already been closed but the descriptor in the ED object
515
+ // hasn't yet been set to INVALID_SOCKET.
516
+ int i, j;
517
+ int nSockets = Descriptors.size();
518
+ for (i=0, j=0; i < nSockets; i++) {
519
+ EventableDescriptor *ed = Descriptors[i];
520
+ assert (ed);
521
+ if (ed->ShouldDelete()) {
522
+ if (ed->GetSocket() != INVALID_SOCKET) {
523
+ assert (bEpoll); // wouldn't be in this method otherwise.
524
+ assert (epfd != -1);
525
+ int e = epoll_ctl (epfd, EPOLL_CTL_DEL, ed->GetSocket(), ed->GetEpollEvent());
526
+ // ENOENT or EBADF are not errors because the socket may be already closed when we get here.
527
+ if (e && (errno != ENOENT) && (errno != EBADF) && (errno != EPERM)) {
528
+ char buf [200];
529
+ snprintf (buf, sizeof(buf)-1, "unable to delete epoll event: %s", strerror(errno));
530
+ throw std::runtime_error (buf);
531
+ }
532
+ }
533
+
534
+ ModifiedDescriptors.erase (ed);
535
+ delete ed;
536
+ }
537
+ else
538
+ Descriptors [j++] = ed;
539
+ }
540
+ while ((size_t)j < Descriptors.size())
541
+ Descriptors.pop_back();
542
+
543
+ }
544
+
545
+ // TODO, heartbeats.
546
+ // Added 14Sep07, its absence was noted by Brian Candler. But the comment was here, indicated
547
+ // that this got thought about and not done when EPOLL was originally written. Was there a reason
548
+ // not to do it, or was it an oversight? Certainly, running a heartbeat on 50,000 connections every
549
+ // two seconds can get to be a real bear, especially if all we're doing is timing out dead ones.
550
+ // Maybe there's a better way to do this. (Or maybe it's not that expensive after all.)
551
+ //
552
+ { // dispatch heartbeats
553
+ if (gCurrentLoopTime >= NextHeartbeatTime) {
554
+ NextHeartbeatTime = gCurrentLoopTime + HeartbeatInterval;
555
+
556
+ for (int i=0; i < Descriptors.size(); i++) {
557
+ EventableDescriptor *ed = Descriptors[i];
558
+ assert (ed);
559
+ ed->Heartbeat();
560
+ }
561
+ }
562
+ }
563
+
564
+ #ifdef BUILD_FOR_RUBY
565
+ if (!rb_thread_alone()) {
566
+ rb_thread_schedule();
567
+ }
568
+ #endif
569
+
570
+ return true;
571
+ #else
572
+ throw std::runtime_error ("epoll is not implemented on this platform");
573
+ #endif
574
+ }
575
+
576
+
577
+ /******************************
578
+ EventMachine_t::_RunKqueueOnce
579
+ ******************************/
580
+
581
+ bool EventMachine_t::_RunKqueueOnce()
582
+ {
583
+ #ifdef HAVE_KQUEUE
584
+ assert (kqfd != -1);
585
+ struct timespec ts = {0, 10000000}; // Too frequent. Use blocking_region
586
+
587
+ int k;
588
+ #ifdef BUILD_FOR_RUBY
589
+ TRAP_BEG;
590
+ #endif
591
+ k = kevent (kqfd, NULL, 0, Karray, MaxEvents, &ts);
592
+ #ifdef BUILD_FOR_RUBY
593
+ TRAP_END;
594
+ #endif
595
+
596
+ struct kevent *ke = Karray;
597
+ while (k > 0) {
598
+ switch (ke->filter)
599
+ {
600
+ case EVFILT_VNODE:
601
+ _HandleKqueueFileEvent (ke);
602
+ break;
603
+
604
+ case EVFILT_PROC:
605
+ _HandleKqueuePidEvent (ke);
606
+ break;
607
+
608
+ case EVFILT_READ:
609
+ case EVFILT_WRITE:
610
+ EventableDescriptor *ed = (EventableDescriptor*) (ke->udata);
611
+ assert (ed);
612
+
613
+ if (ed->IsWatchOnly() && ed->GetSocket() == INVALID_SOCKET)
614
+ break;
615
+
616
+ if (ke->filter == EVFILT_READ)
617
+ ed->Read();
618
+ else if (ke->filter == EVFILT_WRITE)
619
+ ed->Write();
620
+ else
621
+ cerr << "Discarding unknown kqueue event " << ke->filter << endl;
622
+
623
+ break;
624
+ }
625
+
626
+ --k;
627
+ ++ke;
628
+ }
629
+
630
+ { // cleanup dying sockets
631
+ // vector::pop_back works in constant time.
632
+ // TODO, rip this out and only delete the descriptors we know have died,
633
+ // rather than traversing the whole list.
634
+ // In kqueue, closing a descriptor automatically removes its event filters.
635
+
636
+ int i, j;
637
+ int nSockets = Descriptors.size();
638
+ for (i=0, j=0; i < nSockets; i++) {
639
+ EventableDescriptor *ed = Descriptors[i];
640
+ assert (ed);
641
+ if (ed->ShouldDelete()) {
642
+ ModifiedDescriptors.erase (ed);
643
+ delete ed;
644
+ }
645
+ else
646
+ Descriptors [j++] = ed;
647
+ }
648
+ while ((size_t)j < Descriptors.size())
649
+ Descriptors.pop_back();
650
+
651
+ }
652
+
653
+ { // dispatch heartbeats
654
+ if (gCurrentLoopTime >= NextHeartbeatTime) {
655
+ NextHeartbeatTime = gCurrentLoopTime + HeartbeatInterval;
656
+
657
+ for (unsigned int i=0; i < Descriptors.size(); i++) {
658
+ EventableDescriptor *ed = Descriptors[i];
659
+ assert (ed);
660
+ ed->Heartbeat();
661
+ }
662
+ }
663
+ }
664
+
665
+
666
+ // TODO, replace this with rb_thread_blocking_region for 1.9 builds.
667
+ #ifdef BUILD_FOR_RUBY
668
+ if (!rb_thread_alone()) {
669
+ rb_thread_schedule();
670
+ }
671
+ #endif
672
+
673
+ return true;
674
+ #else
675
+ throw std::runtime_error ("kqueue is not implemented on this platform");
676
+ #endif
677
+ }
678
+
679
+
680
+ /*********************************
681
+ EventMachine_t::_ModifyEpollEvent
682
+ *********************************/
683
+
684
+ void EventMachine_t::_ModifyEpollEvent (EventableDescriptor *ed)
685
+ {
686
+ #ifdef HAVE_EPOLL
687
+ if (bEpoll) {
688
+ assert (epfd != -1);
689
+ assert (ed);
690
+ assert (ed->GetSocket() != INVALID_SOCKET);
691
+ int e = epoll_ctl (epfd, EPOLL_CTL_MOD, ed->GetSocket(), ed->GetEpollEvent());
692
+ if (e) {
693
+ char buf [200];
694
+ snprintf (buf, sizeof(buf)-1, "unable to modify epoll event: %s", strerror(errno));
695
+ throw std::runtime_error (buf);
696
+ }
697
+ }
698
+ #endif
699
+ }
700
+
701
+
702
+
703
+ /**************************
704
+ SelectData_t::SelectData_t
705
+ **************************/
706
+
707
+ SelectData_t::SelectData_t()
708
+ {
709
+ maxsocket = 0;
710
+ FD_ZERO (&fdreads);
711
+ FD_ZERO (&fdwrites);
712
+ FD_ZERO (&fderrors);
713
+ }
714
+
715
+
716
+ #ifdef BUILD_FOR_RUBY
717
+ /*****************
718
+ _SelectDataSelect
719
+ *****************/
720
+
721
+ #ifdef HAVE_TBR
722
+ static VALUE _SelectDataSelect (void *v)
723
+ {
724
+ SelectData_t *sd = (SelectData_t*)v;
725
+ sd->nSockets = select (sd->maxsocket+1, &(sd->fdreads), &(sd->fdwrites), &(sd->fderrors), &(sd->tv));
726
+ return Qnil;
727
+ }
728
+ #endif
729
+
730
+ /*********************
731
+ SelectData_t::_Select
732
+ *********************/
733
+
734
+ int SelectData_t::_Select()
735
+ {
736
+ #ifdef HAVE_TBR
737
+ rb_thread_blocking_region (_SelectDataSelect, (void*)this, RUBY_UBF_IO, 0);
738
+ return nSockets;
739
+ #endif
740
+
741
+ #ifndef HAVE_TBR
742
+ return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
743
+ #endif
744
+ }
745
+ #endif
746
+
747
+
748
+
749
+ /******************************
750
+ EventMachine_t::_RunSelectOnce
751
+ ******************************/
752
+
753
+ bool EventMachine_t::_RunSelectOnce()
754
+ {
755
+ // Crank the event machine once.
756
+ // If there are no descriptors to process, then sleep
757
+ // for a few hundred mills to avoid busy-looping.
758
+ // Return T/F to indicate whether we should continue.
759
+ // This is based on a select loop. Alternately provide epoll
760
+ // if we know we're running on a 2.6 kernel.
761
+ // epoll will be effective if we provide it as an alternative,
762
+ // however it has the same problem interoperating with Ruby
763
+ // threads that select does.
764
+
765
+ //cerr << "X";
766
+
767
+ /* This protection is now obsolete, because we will ALWAYS
768
+ * have at least one descriptor (the loop-breaker) to read.
769
+ */
770
+ /*
771
+ if (Descriptors.size() == 0) {
772
+ #ifdef OS_UNIX
773
+ timeval tv = {0, 200 * 1000};
774
+ EmSelect (0, NULL, NULL, NULL, &tv);
775
+ return true;
776
+ #endif
777
+ #ifdef OS_WIN32
778
+ Sleep (200);
779
+ return true;
780
+ #endif
781
+ }
782
+ */
783
+
784
+ SelectData_t SelectData;
785
+ /*
786
+ fd_set fdreads, fdwrites;
787
+ FD_ZERO (&fdreads);
788
+ FD_ZERO (&fdwrites);
789
+
790
+ int maxsocket = 0;
791
+ */
792
+
793
+ // Always read the loop-breaker reader.
794
+ // Changed 23Aug06, provisionally implemented for Windows with a UDP socket
795
+ // running on localhost with a randomly-chosen port. (*Puke*)
796
+ // Windows has a version of the Unix pipe() library function, but it doesn't
797
+ // give you back descriptors that are selectable.
798
+ FD_SET (LoopBreakerReader, &(SelectData.fdreads));
799
+ if (SelectData.maxsocket < LoopBreakerReader)
800
+ SelectData.maxsocket = LoopBreakerReader;
801
+
802
+ // prepare the sockets for reading and writing
803
+ size_t i;
804
+ for (i = 0; i < Descriptors.size(); i++) {
805
+ EventableDescriptor *ed = Descriptors[i];
806
+ assert (ed);
807
+ int sd = ed->GetSocket();
808
+ if (ed->IsWatchOnly() && sd == INVALID_SOCKET)
809
+ continue;
810
+ assert (sd != INVALID_SOCKET);
811
+
812
+ if (ed->SelectForRead())
813
+ FD_SET (sd, &(SelectData.fdreads));
814
+ if (ed->SelectForWrite())
815
+ FD_SET (sd, &(SelectData.fdwrites));
816
+
817
+ #ifdef OS_WIN32
818
+ /* 21Sep09: on windows, a non-blocking connect() that fails does not come up as writable.
819
+ Instead, it is added to the error set. See http://www.mail-archive.com/openssl-users@openssl.org/msg58500.html
820
+ */
821
+ FD_SET (sd, &(SelectData.fderrors));
822
+ #endif
823
+
824
+ if (SelectData.maxsocket < sd)
825
+ SelectData.maxsocket = sd;
826
+ }
827
+
828
+
829
+ { // read and write the sockets
830
+ //timeval tv = {1, 0}; // Solaris fails if the microseconds member is >= 1000000.
831
+ //timeval tv = Quantum;
832
+ SelectData.tv = Quantum;
833
+ int s = SelectData._Select();
834
+ //rb_thread_blocking_region(xxx,(void*)&SelectData,RUBY_UBF_IO,0);
835
+ //int s = EmSelect (SelectData.maxsocket+1, &(SelectData.fdreads), &(SelectData.fdwrites), NULL, &(SelectData.tv));
836
+ //int s = SelectData.nSockets;
837
+ if (s > 0) {
838
+ /* Changed 01Jun07. We used to handle the Loop-breaker right here.
839
+ * Now we do it AFTER all the regular descriptors. There's an
840
+ * incredibly important and subtle reason for this. Code on
841
+ * loop breakers is sometimes used to cause the reactor core to
842
+ * cycle (for example, to allow outbound network buffers to drain).
843
+ * If a loop-breaker handler reschedules itself (say, after determining
844
+ * that the write buffers are still too full), then it will execute
845
+ * IMMEDIATELY if _ReadLoopBreaker is done here instead of after
846
+ * the other descriptors are processed. That defeats the whole purpose.
847
+ */
848
+ for (i=0; i < Descriptors.size(); i++) {
849
+ EventableDescriptor *ed = Descriptors[i];
850
+ assert (ed);
851
+ int sd = ed->GetSocket();
852
+ if (ed->IsWatchOnly() && sd == INVALID_SOCKET)
853
+ continue;
854
+ assert (sd != INVALID_SOCKET);
855
+
856
+ if (FD_ISSET (sd, &(SelectData.fdwrites)))
857
+ ed->Write();
858
+ if (FD_ISSET (sd, &(SelectData.fdreads)))
859
+ ed->Read();
860
+ if (FD_ISSET (sd, &(SelectData.fderrors)))
861
+ ed->HandleError();
862
+ }
863
+
864
+ if (FD_ISSET (LoopBreakerReader, &(SelectData.fdreads)))
865
+ _ReadLoopBreaker();
866
+ }
867
+ else if (s < 0) {
868
+ // select can fail on error in a handful of ways.
869
+ // If this happens, then wait for a little while to avoid busy-looping.
870
+ // If the error was EINTR, we probably caught SIGCHLD or something,
871
+ // so keep the wait short.
872
+ timeval tv = {0, ((errno == EINTR) ? 5 : 50) * 1000};
873
+ EmSelect (0, NULL, NULL, NULL, &tv);
874
+ }
875
+ }
876
+
877
+
878
+ { // dispatch heartbeats
879
+ if (gCurrentLoopTime >= NextHeartbeatTime) {
880
+ NextHeartbeatTime = gCurrentLoopTime + HeartbeatInterval;
881
+
882
+ for (i=0; i < Descriptors.size(); i++) {
883
+ EventableDescriptor *ed = Descriptors[i];
884
+ assert (ed);
885
+ ed->Heartbeat();
886
+ }
887
+ }
888
+ }
889
+
890
+ { // cleanup dying sockets
891
+ // vector::pop_back works in constant time.
892
+ int i, j;
893
+ int nSockets = Descriptors.size();
894
+ for (i=0, j=0; i < nSockets; i++) {
895
+ EventableDescriptor *ed = Descriptors[i];
896
+ assert (ed);
897
+ if (ed->ShouldDelete())
898
+ delete ed;
899
+ else
900
+ Descriptors [j++] = ed;
901
+ }
902
+ while ((size_t)j < Descriptors.size())
903
+ Descriptors.pop_back();
904
+
905
+ }
906
+
907
+ return true;
908
+ }
909
+
910
+
911
+ /********************************
912
+ EventMachine_t::_ReadLoopBreaker
913
+ ********************************/
914
+
915
+ void EventMachine_t::_ReadLoopBreaker()
916
+ {
917
+ /* The loop breaker has selected readable.
918
+ * Read it ONCE (it may block if we try to read it twice)
919
+ * and send a loop-break event back to user code.
920
+ */
921
+ char buffer [1024];
922
+ read (LoopBreakerReader, buffer, sizeof(buffer));
923
+ if (EventCallback)
924
+ (*EventCallback)(NULL, EM_LOOPBREAK_SIGNAL, "", 0);
925
+ }
926
+
927
+
928
+ /**************************
929
+ EventMachine_t::_RunTimers
930
+ **************************/
931
+
932
+ bool EventMachine_t::_RunTimers()
933
+ {
934
+ // These are caller-defined timer handlers.
935
+ // Return T/F to indicate whether we should continue the main loop.
936
+ // We rely on the fact that multimaps sort by their keys to avoid
937
+ // inspecting the whole list every time we come here.
938
+ // Just keep inspecting and processing the list head until we hit
939
+ // one that hasn't expired yet.
940
+
941
+ while (true) {
942
+ multimap<Int64,Timer_t>::iterator i = Timers.begin();
943
+ if (i == Timers.end())
944
+ break;
945
+ if (i->first > gCurrentLoopTime)
946
+ break;
947
+ if (EventCallback)
948
+ (*EventCallback) (NULL, EM_TIMER_FIRED, NULL, i->second.GetBinding());
949
+ Timers.erase (i);
950
+ }
951
+ return true;
952
+ }
953
+
954
+
955
+
956
+ /***********************************
957
+ EventMachine_t::InstallOneshotTimer
958
+ ***********************************/
959
+
960
+ const unsigned long EventMachine_t::InstallOneshotTimer (int milliseconds)
961
+ {
962
+ if (Timers.size() > MaxOutstandingTimers)
963
+ return false;
964
+ // Don't use the global loop-time variable here, because we might
965
+ // get called before the main event machine is running.
966
+
967
+ #ifdef OS_UNIX
968
+ struct timeval tv;
969
+ gettimeofday (&tv, NULL);
970
+ Int64 fire_at = (((Int64)(tv.tv_sec)) * 1000000LL) + ((Int64)(tv.tv_usec));
971
+ fire_at += ((Int64)milliseconds) * 1000LL;
972
+ #endif
973
+
974
+ #ifdef OS_WIN32
975
+ unsigned tick = GetTickCount();
976
+ if (tick < gLastTickCount)
977
+ gTickCountTickover += 1;
978
+ gLastTickCount = tick;
979
+
980
+ Int64 fire_at = ((Int64)gTickCountTickover << 32) + (Int64)tick;
981
+ fire_at += (Int64)milliseconds;
982
+ #endif
983
+
984
+ Timer_t t;
985
+ #ifndef HAVE_MAKE_PAIR
986
+ multimap<Int64,Timer_t>::iterator i = Timers.insert (multimap<Int64,Timer_t>::value_type (fire_at, t));
987
+ #else
988
+ multimap<Int64,Timer_t>::iterator i = Timers.insert (make_pair (fire_at, t));
989
+ #endif
990
+ return i->second.GetBinding();
991
+ }
992
+
993
+
994
+ /*******************************
995
+ EventMachine_t::ConnectToServer
996
+ *******************************/
997
+
998
+ const unsigned long EventMachine_t::ConnectToServer (const char *bind_addr, int bind_port, const char *server, int port)
999
+ {
1000
+ /* We want to spend no more than a few seconds waiting for a connection
1001
+ * to a remote host. So we use a nonblocking connect.
1002
+ * Linux disobeys the usual rules for nonblocking connects.
1003
+ * Per Stevens (UNP p.410), you expect a nonblocking connect to select
1004
+ * both readable and writable on error, and not to return EINPROGRESS
1005
+ * if the connect can be fulfilled immediately. Linux violates both
1006
+ * of these expectations.
1007
+ * Any kind of nonblocking connect on Linux returns EINPROGRESS.
1008
+ * The socket will then return writable when the disposition of the
1009
+ * connect is known, but it will not also be readable in case of
1010
+ * error! Weirdly, it will be readable in case there is data to read!!!
1011
+ * (Which can happen with protocols like SSH and SMTP.)
1012
+ * I suppose if you were so inclined you could consider this logical,
1013
+ * but it's not the way Unix has historically done it.
1014
+ * So we ignore the readable flag and read getsockopt to see if there
1015
+ * was an error connecting. A select timeout works as expected.
1016
+ * In regard to getsockopt: Linux does the Berkeley-style thing,
1017
+ * not the Solaris-style, and returns zero with the error code in
1018
+ * the error parameter.
1019
+ * Return the binding-text of the newly-created pending connection,
1020
+ * or NULL if there was a problem.
1021
+ */
1022
+
1023
+ if (!server || !*server || !port)
1024
+ throw std::runtime_error ("invalid server or port");
1025
+
1026
+ int family, bind_size;
1027
+ struct sockaddr bind_as, *bind_as_ptr = name2address (server, port, &family, &bind_size);
1028
+ if (!bind_as_ptr)
1029
+ throw std::runtime_error ("unable to resolve server address");
1030
+ bind_as = *bind_as_ptr; // copy because name2address points to a static
1031
+
1032
+ int sd = socket (family, SOCK_STREAM, 0);
1033
+ if (sd == INVALID_SOCKET)
1034
+ throw std::runtime_error ("unable to create new socket");
1035
+
1036
+ /*
1037
+ sockaddr_in pin;
1038
+ unsigned long HostAddr;
1039
+
1040
+ HostAddr = inet_addr (server);
1041
+ if (HostAddr == INADDR_NONE) {
1042
+ hostent *hp = gethostbyname ((char*)server); // Windows requires (char*)
1043
+ if (!hp) {
1044
+ // TODO: This gives the caller a fatal error. Not good.
1045
+ // They can respond by catching RuntimeError (blecch).
1046
+ // Possibly we need to fire an unbind event and provide
1047
+ // a status code so user code can detect the cause of the
1048
+ // failure.
1049
+ return NULL;
1050
+ }
1051
+ HostAddr = ((in_addr*)(hp->h_addr))->s_addr;
1052
+ }
1053
+
1054
+ memset (&pin, 0, sizeof(pin));
1055
+ pin.sin_family = AF_INET;
1056
+ pin.sin_addr.s_addr = HostAddr;
1057
+ pin.sin_port = htons (port);
1058
+
1059
+ int sd = socket (AF_INET, SOCK_STREAM, 0);
1060
+ if (sd == INVALID_SOCKET)
1061
+ return NULL;
1062
+ */
1063
+
1064
+ // From here on, ALL error returns must close the socket.
1065
+ // Set the new socket nonblocking.
1066
+ if (!SetSocketNonblocking (sd)) {
1067
+ closesocket (sd);
1068
+ throw std::runtime_error ("unable to set socket as non-blocking");
1069
+ }
1070
+ // Disable slow-start (Nagle algorithm).
1071
+ int one = 1;
1072
+ setsockopt (sd, IPPROTO_TCP, TCP_NODELAY, (char*) &one, sizeof(one));
1073
+ // Set reuseaddr to improve performance on restarts
1074
+ setsockopt (sd, SOL_SOCKET, SO_REUSEADDR, (char*) &one, sizeof(one));
1075
+
1076
+ if (bind_addr) {
1077
+ int bind_to_size, bind_to_family;
1078
+ struct sockaddr *bind_to = name2address (bind_addr, bind_port, &bind_to_family, &bind_to_size);
1079
+ if (!bind_to) {
1080
+ closesocket (sd);
1081
+ throw std::runtime_error ("invalid bind address");
1082
+ }
1083
+ if (bind (sd, bind_to, bind_to_size) < 0) {
1084
+ closesocket (sd);
1085
+ throw std::runtime_error ("couldn't bind to address");
1086
+ }
1087
+ }
1088
+
1089
+ unsigned long out = NULL;
1090
+
1091
+ #ifdef OS_UNIX
1092
+ //if (connect (sd, (sockaddr*)&pin, sizeof pin) == 0) {
1093
+ if (connect (sd, &bind_as, bind_size) == 0) {
1094
+ // This is a connect success, which Linux appears
1095
+ // never to give when the socket is nonblocking,
1096
+ // even if the connection is intramachine or to
1097
+ // localhost.
1098
+
1099
+ /* Changed this branch 08Aug06. Evidently some kernels
1100
+ * (FreeBSD for example) will actually return success from
1101
+ * a nonblocking connect. This is a pretty simple case,
1102
+ * just set up the new connection and clear the pending flag.
1103
+ * Thanks to Chris Ochs for helping track this down.
1104
+ * This branch never gets taken on Linux or (oddly) OSX.
1105
+ * The original behavior was to throw an unimplemented,
1106
+ * which the user saw as a fatal exception. Very unfriendly.
1107
+ *
1108
+ * Tweaked 10Aug06. Even though the connect disposition is
1109
+ * known, we still set the connect-pending flag. That way
1110
+ * some needed initialization will happen in the ConnectionDescriptor.
1111
+ * (To wit, the ConnectionCompleted event gets sent to the client.)
1112
+ */
1113
+ ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this);
1114
+ if (!cd)
1115
+ throw std::runtime_error ("no connection allocated");
1116
+ cd->SetConnectPending (true);
1117
+ Add (cd);
1118
+ out = cd->GetBinding();
1119
+ }
1120
+ else if (errno == EINPROGRESS) {
1121
+ // Errno will generally always be EINPROGRESS, but on Linux
1122
+ // we have to look at getsockopt to be sure what really happened.
1123
+ int error;
1124
+ socklen_t len;
1125
+ len = sizeof(error);
1126
+ int o = getsockopt (sd, SOL_SOCKET, SO_ERROR, &error, &len);
1127
+ if ((o == 0) && (error == 0)) {
1128
+ // Here, there's no disposition.
1129
+ // Put the connection on the stack and wait for it to complete
1130
+ // or time out.
1131
+ ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this);
1132
+ if (!cd)
1133
+ throw std::runtime_error ("no connection allocated");
1134
+ cd->SetConnectPending (true);
1135
+ Add (cd);
1136
+ out = cd->GetBinding();
1137
+ }
1138
+ else {
1139
+ /* This could be connection refused or some such thing.
1140
+ * We will come here on Linux if a localhost connection fails.
1141
+ * Changed 16Jul06: Originally this branch was a no-op, and
1142
+ * we'd drop down to the end of the method, close the socket,
1143
+ * and return NULL, which would cause the caller to GET A
1144
+ * FATAL EXCEPTION. Now we keep the socket around but schedule an
1145
+ * immediate close on it, so the caller will get a close-event
1146
+ * scheduled on it. This was only an issue for localhost connections
1147
+ * to non-listening ports. We may eventually need to revise this
1148
+ * revised behavior, in case it causes problems like making it hard
1149
+ * for people to know that a failure occurred.
1150
+ */
1151
+ ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this);
1152
+ if (!cd)
1153
+ throw std::runtime_error ("no connection allocated");
1154
+ cd->ScheduleClose (false);
1155
+ Add (cd);
1156
+ out = cd->GetBinding();
1157
+ }
1158
+ }
1159
+ else {
1160
+ // The error from connect was something other then EINPROGRESS.
1161
+ }
1162
+ #endif
1163
+
1164
+ #ifdef OS_WIN32
1165
+ //if (connect (sd, (sockaddr*)&pin, sizeof pin) == 0) {
1166
+ if (connect (sd, &bind_as, bind_size) == 0) {
1167
+ // This is a connect success, which Windows appears
1168
+ // never to give when the socket is nonblocking,
1169
+ // even if the connection is intramachine or to
1170
+ // localhost.
1171
+ throw std::runtime_error ("unimplemented");
1172
+ }
1173
+ else if (WSAGetLastError() == WSAEWOULDBLOCK) {
1174
+ // Here, there's no disposition.
1175
+ // Windows appears not to surface refused connections or
1176
+ // such stuff at this point.
1177
+ // Put the connection on the stack and wait for it to complete
1178
+ // or time out.
1179
+ ConnectionDescriptor *cd = new ConnectionDescriptor (sd, this);
1180
+ if (!cd)
1181
+ throw std::runtime_error ("no connection allocated");
1182
+ cd->SetConnectPending (true);
1183
+ Add (cd);
1184
+ out = cd->GetBinding();
1185
+ }
1186
+ else {
1187
+ // The error from connect was something other then WSAEWOULDBLOCK.
1188
+ }
1189
+
1190
+ #endif
1191
+
1192
+ if (!out)
1193
+ closesocket (sd);
1194
+ return out;
1195
+ }
1196
+
1197
+ /***********************************
1198
+ EventMachine_t::ConnectToUnixServer
1199
+ ***********************************/
1200
+
1201
+ const unsigned long EventMachine_t::ConnectToUnixServer (const char *server)
1202
+ {
1203
+ /* Connect to a Unix-domain server, which by definition is running
1204
+ * on the same host.
1205
+ * There is no meaningful implementation on Windows.
1206
+ * There's no need to do a nonblocking connect, since the connection
1207
+ * is always local and can always be fulfilled immediately.
1208
+ */
1209
+
1210
+ #ifdef OS_WIN32
1211
+ throw std::runtime_error ("unix-domain connection unavailable on this platform");
1212
+ return NULL;
1213
+ #endif
1214
+
1215
+ // The whole rest of this function is only compiled on Unix systems.
1216
+ #ifdef OS_UNIX
1217
+
1218
+ unsigned long out = NULL;
1219
+
1220
+ if (!server || !*server)
1221
+ return NULL;
1222
+
1223
+ sockaddr_un pun;
1224
+ memset (&pun, 0, sizeof(pun));
1225
+ pun.sun_family = AF_LOCAL;
1226
+
1227
+ // You ordinarily expect the server name field to be at least 1024 bytes long,
1228
+ // but on Linux it can be MUCH shorter.
1229
+ if (strlen(server) >= sizeof(pun.sun_path))
1230
+ throw std::runtime_error ("unix-domain server name is too long");
1231
+
1232
+
1233
+ strcpy (pun.sun_path, server);
1234
+
1235
+ int fd = socket (AF_LOCAL, SOCK_STREAM, 0);
1236
+ if (fd == INVALID_SOCKET)
1237
+ return NULL;
1238
+
1239
+ // From here on, ALL error returns must close the socket.
1240
+ // NOTE: At this point, the socket is still a blocking socket.
1241
+ if (connect (fd, (struct sockaddr*)&pun, sizeof(pun)) != 0) {
1242
+ closesocket (fd);
1243
+ return NULL;
1244
+ }
1245
+
1246
+ // Set the newly-connected socket nonblocking.
1247
+ if (!SetSocketNonblocking (fd)) {
1248
+ closesocket (fd);
1249
+ return NULL;
1250
+ }
1251
+
1252
+ // Set up a connection descriptor and add it to the event-machine.
1253
+ // Observe, even though we know the connection status is connect-success,
1254
+ // we still set the "pending" flag, so some needed initializations take
1255
+ // place.
1256
+ ConnectionDescriptor *cd = new ConnectionDescriptor (fd, this);
1257
+ if (!cd)
1258
+ throw std::runtime_error ("no connection allocated");
1259
+ cd->SetConnectPending (true);
1260
+ Add (cd);
1261
+ out = cd->GetBinding();
1262
+
1263
+ if (!out)
1264
+ closesocket (fd);
1265
+
1266
+ return out;
1267
+ #endif
1268
+ }
1269
+
1270
+ /************************
1271
+ EventMachine_t::AttachFD
1272
+ ************************/
1273
+
1274
+ const unsigned long EventMachine_t::AttachFD (int fd, bool watch_mode)
1275
+ {
1276
+ #ifdef OS_UNIX
1277
+ if (fcntl(fd, F_GETFL, 0) < 0)
1278
+ throw std::runtime_error ("invalid file descriptor");
1279
+ #endif
1280
+
1281
+ #ifdef OS_WIN32
1282
+ // TODO: add better check for invalid file descriptors (see ioctlsocket or getsockopt)
1283
+ if (fd == INVALID_SOCKET)
1284
+ throw std::runtime_error ("invalid file descriptor");
1285
+ #endif
1286
+
1287
+ {// Check for duplicate descriptors
1288
+ size_t i;
1289
+ for (i = 0; i < Descriptors.size(); i++) {
1290
+ EventableDescriptor *ed = Descriptors[i];
1291
+ assert (ed);
1292
+ if (ed->GetSocket() == fd)
1293
+ throw std::runtime_error ("adding existing descriptor");
1294
+ }
1295
+
1296
+ for (i = 0; i < NewDescriptors.size(); i++) {
1297
+ EventableDescriptor *ed = NewDescriptors[i];
1298
+ assert (ed);
1299
+ if (ed->GetSocket() == fd)
1300
+ throw std::runtime_error ("adding existing new descriptor");
1301
+ }
1302
+ }
1303
+
1304
+ if (!watch_mode)
1305
+ SetSocketNonblocking(fd);
1306
+
1307
+ ConnectionDescriptor *cd = new ConnectionDescriptor (fd, this);
1308
+ if (!cd)
1309
+ throw std::runtime_error ("no connection allocated");
1310
+
1311
+ cd->SetWatchOnly(watch_mode);
1312
+ cd->SetConnectPending (false);
1313
+
1314
+ Add (cd);
1315
+
1316
+ const unsigned long out = cd->GetBinding();
1317
+ return out;
1318
+ }
1319
+
1320
+ /************************
1321
+ EventMachine_t::DetachFD
1322
+ ************************/
1323
+
1324
+ int EventMachine_t::DetachFD (EventableDescriptor *ed)
1325
+ {
1326
+ if (!ed)
1327
+ throw std::runtime_error ("detaching bad descriptor");
1328
+
1329
+ int fd = ed->GetSocket();
1330
+
1331
+ #ifdef HAVE_EPOLL
1332
+ if (bEpoll) {
1333
+ if (ed->GetSocket() != INVALID_SOCKET) {
1334
+ assert (epfd != -1);
1335
+ int e = epoll_ctl (epfd, EPOLL_CTL_DEL, ed->GetSocket(), ed->GetEpollEvent());
1336
+ // ENOENT or EBADF are not errors because the socket may be already closed when we get here.
1337
+ if (e && (errno != ENOENT) && (errno != EBADF)) {
1338
+ char buf [200];
1339
+ snprintf (buf, sizeof(buf)-1, "unable to delete epoll event: %s", strerror(errno));
1340
+ throw std::runtime_error (buf);
1341
+ }
1342
+ }
1343
+ }
1344
+ #endif
1345
+
1346
+ #ifdef HAVE_KQUEUE
1347
+ if (bKqueue) {
1348
+ // remove any read/write events for this fd
1349
+ struct kevent k;
1350
+ EV_SET (&k, ed->GetSocket(), EVFILT_READ | EVFILT_WRITE, EV_DELETE, 0, 0, ed);
1351
+ int t = kevent (kqfd, &k, 1, NULL, 0, NULL);
1352
+ if (t < 0 && (errno != ENOENT) && (errno != EBADF)) {
1353
+ char buf [200];
1354
+ snprintf (buf, sizeof(buf)-1, "unable to delete kqueue event: %s", strerror(errno));
1355
+ throw std::runtime_error (buf);
1356
+ }
1357
+ }
1358
+ #endif
1359
+
1360
+ // Prevent the descriptor from being modified, in case DetachFD was called from a timer or next_tick
1361
+ ModifiedDescriptors.erase (ed);
1362
+
1363
+ // Set MySocket = INVALID_SOCKET so ShouldDelete() is true (and the descriptor gets deleted and removed),
1364
+ // and also to prevent anyone from calling close() on the detached fd
1365
+ ed->SetSocketInvalid();
1366
+
1367
+ return fd;
1368
+ }
1369
+
1370
+ /************
1371
+ name2address
1372
+ ************/
1373
+
1374
+ struct sockaddr *name2address (const char *server, int port, int *family, int *bind_size)
1375
+ {
1376
+ // THIS IS NOT RE-ENTRANT OR THREADSAFE. Optimize for speed.
1377
+ // Check the more-common cases first.
1378
+ // Return NULL if no resolution.
1379
+
1380
+ static struct sockaddr_in in4;
1381
+ #ifndef __CYGWIN__
1382
+ static struct sockaddr_in6 in6;
1383
+ #endif
1384
+ struct hostent *hp;
1385
+
1386
+ if (!server || !*server)
1387
+ server = "0.0.0.0";
1388
+
1389
+ memset (&in4, 0, sizeof(in4));
1390
+ if ( (in4.sin_addr.s_addr = inet_addr (server)) != INADDR_NONE) {
1391
+ if (family)
1392
+ *family = AF_INET;
1393
+ if (bind_size)
1394
+ *bind_size = sizeof(in4);
1395
+ in4.sin_family = AF_INET;
1396
+ in4.sin_port = htons (port);
1397
+ return (struct sockaddr*)&in4;
1398
+ }
1399
+
1400
+ #if defined(OS_UNIX) && !defined(__CYGWIN__)
1401
+ memset (&in6, 0, sizeof(in6));
1402
+ if (inet_pton (AF_INET6, server, in6.sin6_addr.s6_addr) > 0) {
1403
+ if (family)
1404
+ *family = AF_INET6;
1405
+ if (bind_size)
1406
+ *bind_size = sizeof(in6);
1407
+ in6.sin6_family = AF_INET6;
1408
+ in6.sin6_port = htons (port);
1409
+ return (struct sockaddr*)&in6;
1410
+ }
1411
+ #endif
1412
+
1413
+ #ifdef OS_WIN32
1414
+ // TODO, must complete this branch. Windows doesn't have inet_pton.
1415
+ // A possible approach is to make a getaddrinfo call with the supplied
1416
+ // server address, constraining the hints to ipv6 and seeing if we
1417
+ // get any addresses.
1418
+ // For the time being, Ipv6 addresses aren't supported on Windows.
1419
+ #endif
1420
+
1421
+ hp = gethostbyname ((char*)server); // Windows requires the cast.
1422
+ if (hp) {
1423
+ in4.sin_addr.s_addr = ((in_addr*)(hp->h_addr))->s_addr;
1424
+ if (family)
1425
+ *family = AF_INET;
1426
+ if (bind_size)
1427
+ *bind_size = sizeof(in4);
1428
+ in4.sin_family = AF_INET;
1429
+ in4.sin_port = htons (port);
1430
+ return (struct sockaddr*)&in4;
1431
+ }
1432
+
1433
+ return NULL;
1434
+ }
1435
+
1436
+
1437
+ /*******************************
1438
+ EventMachine_t::CreateTcpServer
1439
+ *******************************/
1440
+
1441
+ const unsigned long EventMachine_t::CreateTcpServer (const char *server, int port)
1442
+ {
1443
+ /* Create a TCP-acceptor (server) socket and add it to the event machine.
1444
+ * Return the binding of the new acceptor to the caller.
1445
+ * This binding will be referenced when the new acceptor sends events
1446
+ * to indicate accepted connections.
1447
+ */
1448
+
1449
+
1450
+ int family, bind_size;
1451
+ struct sockaddr *bind_here = name2address (server, port, &family, &bind_size);
1452
+ if (!bind_here)
1453
+ return NULL;
1454
+
1455
+ unsigned long output_binding = NULL;
1456
+
1457
+ //struct sockaddr_in sin;
1458
+
1459
+ int sd_accept = socket (family, SOCK_STREAM, 0);
1460
+ if (sd_accept == INVALID_SOCKET) {
1461
+ goto fail;
1462
+ }
1463
+
1464
+ /*
1465
+ memset (&sin, 0, sizeof(sin));
1466
+ sin.sin_family = AF_INET;
1467
+ sin.sin_addr.s_addr = INADDR_ANY;
1468
+ sin.sin_port = htons (port);
1469
+
1470
+ if (server && *server) {
1471
+ sin.sin_addr.s_addr = inet_addr (server);
1472
+ if (sin.sin_addr.s_addr == INADDR_NONE) {
1473
+ hostent *hp = gethostbyname ((char*)server); // Windows requires the cast.
1474
+ if (hp == NULL) {
1475
+ //__warning ("hostname not resolved: ", server);
1476
+ goto fail;
1477
+ }
1478
+ sin.sin_addr.s_addr = ((in_addr*)(hp->h_addr))->s_addr;
1479
+ }
1480
+ }
1481
+ */
1482
+
1483
+ { // set reuseaddr to improve performance on restarts.
1484
+ int oval = 1;
1485
+ if (setsockopt (sd_accept, SOL_SOCKET, SO_REUSEADDR, (char*)&oval, sizeof(oval)) < 0) {
1486
+ //__warning ("setsockopt failed while creating listener","");
1487
+ goto fail;
1488
+ }
1489
+ }
1490
+
1491
+ { // set CLOEXEC. Only makes sense on Unix
1492
+ #ifdef OS_UNIX
1493
+ int cloexec = fcntl (sd_accept, F_GETFD, 0);
1494
+ assert (cloexec >= 0);
1495
+ cloexec |= FD_CLOEXEC;
1496
+ fcntl (sd_accept, F_SETFD, cloexec);
1497
+ #endif
1498
+ }
1499
+
1500
+
1501
+ //if (bind (sd_accept, (struct sockaddr*)&sin, sizeof(sin))) {
1502
+ if (bind (sd_accept, bind_here, bind_size)) {
1503
+ //__warning ("binding failed");
1504
+ goto fail;
1505
+ }
1506
+
1507
+ if (listen (sd_accept, 100)) {
1508
+ //__warning ("listen failed");
1509
+ goto fail;
1510
+ }
1511
+
1512
+ {
1513
+ // Set the acceptor non-blocking.
1514
+ // THIS IS CRUCIALLY IMPORTANT because we read it in a select loop.
1515
+ if (!SetSocketNonblocking (sd_accept)) {
1516
+ //int val = fcntl (sd_accept, F_GETFL, 0);
1517
+ //if (fcntl (sd_accept, F_SETFL, val | O_NONBLOCK) == -1) {
1518
+ goto fail;
1519
+ }
1520
+ }
1521
+
1522
+ { // Looking good.
1523
+ AcceptorDescriptor *ad = new AcceptorDescriptor (sd_accept, this);
1524
+ if (!ad)
1525
+ throw std::runtime_error ("unable to allocate acceptor");
1526
+ Add (ad);
1527
+ output_binding = ad->GetBinding();
1528
+ }
1529
+
1530
+ return output_binding;
1531
+
1532
+ fail:
1533
+ if (sd_accept != INVALID_SOCKET)
1534
+ closesocket (sd_accept);
1535
+ return NULL;
1536
+ }
1537
+
1538
+
1539
+ /**********************************
1540
+ EventMachine_t::OpenDatagramSocket
1541
+ **********************************/
1542
+
1543
+ const unsigned long EventMachine_t::OpenDatagramSocket (const char *address, int port)
1544
+ {
1545
+ unsigned long output_binding = NULL;
1546
+
1547
+ int sd = socket (AF_INET, SOCK_DGRAM, 0);
1548
+ if (sd == INVALID_SOCKET)
1549
+ goto fail;
1550
+ // from here on, early returns must close the socket!
1551
+
1552
+
1553
+ struct sockaddr_in sin;
1554
+ memset (&sin, 0, sizeof(sin));
1555
+ sin.sin_family = AF_INET;
1556
+ sin.sin_port = htons (port);
1557
+
1558
+
1559
+ if (address && *address) {
1560
+ sin.sin_addr.s_addr = inet_addr (address);
1561
+ if (sin.sin_addr.s_addr == INADDR_NONE) {
1562
+ hostent *hp = gethostbyname ((char*)address); // Windows requires the cast.
1563
+ if (hp == NULL)
1564
+ goto fail;
1565
+ sin.sin_addr.s_addr = ((in_addr*)(hp->h_addr))->s_addr;
1566
+ }
1567
+ }
1568
+ else
1569
+ sin.sin_addr.s_addr = htonl (INADDR_ANY);
1570
+
1571
+
1572
+ // Set the new socket nonblocking.
1573
+ {
1574
+ if (!SetSocketNonblocking (sd))
1575
+ //int val = fcntl (sd, F_GETFL, 0);
1576
+ //if (fcntl (sd, F_SETFL, val | O_NONBLOCK) == -1)
1577
+ goto fail;
1578
+ }
1579
+
1580
+ if (bind (sd, (struct sockaddr*)&sin, sizeof(sin)) != 0)
1581
+ goto fail;
1582
+
1583
+ { // Looking good.
1584
+ DatagramDescriptor *ds = new DatagramDescriptor (sd, this);
1585
+ if (!ds)
1586
+ throw std::runtime_error ("unable to allocate datagram-socket");
1587
+ Add (ds);
1588
+ output_binding = ds->GetBinding();
1589
+ }
1590
+
1591
+ return output_binding;
1592
+
1593
+ fail:
1594
+ if (sd != INVALID_SOCKET)
1595
+ closesocket (sd);
1596
+ return NULL;
1597
+ }
1598
+
1599
+
1600
+
1601
+ /*******************
1602
+ EventMachine_t::Add
1603
+ *******************/
1604
+
1605
+ void EventMachine_t::Add (EventableDescriptor *ed)
1606
+ {
1607
+ if (!ed)
1608
+ throw std::runtime_error ("added bad descriptor");
1609
+ ed->SetEventCallback (EventCallback);
1610
+ NewDescriptors.push_back (ed);
1611
+ }
1612
+
1613
+
1614
+ /*******************************
1615
+ EventMachine_t::ArmKqueueWriter
1616
+ *******************************/
1617
+
1618
+ void EventMachine_t::ArmKqueueWriter (EventableDescriptor *ed)
1619
+ {
1620
+ #ifdef HAVE_KQUEUE
1621
+ if (bKqueue) {
1622
+ if (!ed)
1623
+ throw std::runtime_error ("added bad descriptor");
1624
+ struct kevent k;
1625
+ EV_SET (&k, ed->GetSocket(), EVFILT_WRITE, EV_ADD | EV_ONESHOT, 0, 0, ed);
1626
+ int t = kevent (kqfd, &k, 1, NULL, 0, NULL);
1627
+ if (t < 0) {
1628
+ char buf [200];
1629
+ snprintf (buf, sizeof(buf)-1, "arm kqueue writer failed on %d: %s", ed->GetSocket(), strerror(errno));
1630
+ throw std::runtime_error (buf);
1631
+ }
1632
+ }
1633
+ #endif
1634
+ }
1635
+
1636
+ /*******************************
1637
+ EventMachine_t::ArmKqueueReader
1638
+ *******************************/
1639
+
1640
+ void EventMachine_t::ArmKqueueReader (EventableDescriptor *ed)
1641
+ {
1642
+ #ifdef HAVE_KQUEUE
1643
+ if (bKqueue) {
1644
+ if (!ed)
1645
+ throw std::runtime_error ("added bad descriptor");
1646
+ struct kevent k;
1647
+ EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed);
1648
+ int t = kevent (kqfd, &k, 1, NULL, 0, NULL);
1649
+ if (t < 0) {
1650
+ char buf [200];
1651
+ snprintf (buf, sizeof(buf)-1, "arm kqueue reader failed on %d: %s", ed->GetSocket(), strerror(errno));
1652
+ throw std::runtime_error (buf);
1653
+ }
1654
+ }
1655
+ #endif
1656
+ }
1657
+
1658
+ /**********************************
1659
+ EventMachine_t::_AddNewDescriptors
1660
+ **********************************/
1661
+
1662
+ void EventMachine_t::_AddNewDescriptors()
1663
+ {
1664
+ /* Avoid adding descriptors to the main descriptor list
1665
+ * while we're actually traversing the list.
1666
+ * Any descriptors that are added as a result of processing timers
1667
+ * or acceptors should go on a temporary queue and then added
1668
+ * while we're not traversing the main list.
1669
+ * Also, it (rarely) happens that a newly-created descriptor
1670
+ * is immediately scheduled to close. It might be a good
1671
+ * idea not to bother scheduling these for I/O but if
1672
+ * we do that, we might bypass some important processing.
1673
+ */
1674
+
1675
+ for (size_t i = 0; i < NewDescriptors.size(); i++) {
1676
+ EventableDescriptor *ed = NewDescriptors[i];
1677
+ if (ed == NULL)
1678
+ throw std::runtime_error ("adding bad descriptor");
1679
+
1680
+ #if HAVE_EPOLL
1681
+ if (bEpoll) {
1682
+ assert (epfd != -1);
1683
+ int e = epoll_ctl (epfd, EPOLL_CTL_ADD, ed->GetSocket(), ed->GetEpollEvent());
1684
+ if (e) {
1685
+ char buf [200];
1686
+ snprintf (buf, sizeof(buf)-1, "unable to add new descriptor: %s", strerror(errno));
1687
+ throw std::runtime_error (buf);
1688
+ }
1689
+ }
1690
+ #endif
1691
+
1692
+ #if HAVE_KQUEUE
1693
+ /*
1694
+ if (bKqueue) {
1695
+ // INCOMPLETE. Some descriptors don't want to be readable.
1696
+ assert (kqfd != -1);
1697
+ struct kevent k;
1698
+ EV_SET (&k, ed->GetSocket(), EVFILT_READ, EV_ADD, 0, 0, ed);
1699
+ int t = kevent (kqfd, &k, 1, NULL, 0, NULL);
1700
+ assert (t == 0);
1701
+ }
1702
+ */
1703
+ #endif
1704
+
1705
+ Descriptors.push_back (ed);
1706
+ }
1707
+ NewDescriptors.clear();
1708
+ }
1709
+
1710
+
1711
+ /**********************************
1712
+ EventMachine_t::_ModifyDescriptors
1713
+ **********************************/
1714
+
1715
+ void EventMachine_t::_ModifyDescriptors()
1716
+ {
1717
+ /* For implementations which don't level check every descriptor on
1718
+ * every pass through the machine, as select does.
1719
+ * If we're not selecting, then descriptors need a way to signal to the
1720
+ * machine that their readable or writable status has changed.
1721
+ * That's what the ::Modify call is for. We do it this way to avoid
1722
+ * modifying descriptors during the loop traversal, where it can easily
1723
+ * happen that an object (like a UDP socket) gets data written on it by
1724
+ * the application during #post_init. That would take place BEFORE the
1725
+ * descriptor even gets added to the epoll descriptor, so the modify
1726
+ * operation will crash messily.
1727
+ * Another really messy possibility is for a descriptor to put itself
1728
+ * on the Modified list, and then get deleted before we get here.
1729
+ * Remember, deletes happen after the I/O traversal and before the
1730
+ * next pass through here. So we have to make sure when we delete a
1731
+ * descriptor to remove it from the Modified list.
1732
+ */
1733
+
1734
+ #ifdef HAVE_EPOLL
1735
+ if (bEpoll) {
1736
+ set<EventableDescriptor*>::iterator i = ModifiedDescriptors.begin();
1737
+ while (i != ModifiedDescriptors.end()) {
1738
+ assert (*i);
1739
+ _ModifyEpollEvent (*i);
1740
+ ++i;
1741
+ }
1742
+ }
1743
+ #endif
1744
+
1745
+ ModifiedDescriptors.clear();
1746
+ }
1747
+
1748
+
1749
+ /**********************
1750
+ EventMachine_t::Modify
1751
+ **********************/
1752
+
1753
+ void EventMachine_t::Modify (EventableDescriptor *ed)
1754
+ {
1755
+ if (!ed)
1756
+ throw std::runtime_error ("modified bad descriptor");
1757
+ ModifiedDescriptors.insert (ed);
1758
+ }
1759
+
1760
+
1761
+ /***********************************
1762
+ EventMachine_t::_OpenFileForWriting
1763
+ ***********************************/
1764
+
1765
+ const unsigned long EventMachine_t::_OpenFileForWriting (const char *filename)
1766
+ {
1767
+ /*
1768
+ * Return the binding-text of the newly-opened file,
1769
+ * or NULL if there was a problem.
1770
+ */
1771
+
1772
+ if (!filename || !*filename)
1773
+ return NULL;
1774
+
1775
+ int fd = open (filename, O_CREAT|O_TRUNC|O_WRONLY|O_NONBLOCK, 0644);
1776
+
1777
+ FileStreamDescriptor *fsd = new FileStreamDescriptor (fd, this);
1778
+ if (!fsd)
1779
+ throw std::runtime_error ("no file-stream allocated");
1780
+ Add (fsd);
1781
+ return fsd->GetBinding();
1782
+
1783
+ }
1784
+
1785
+
1786
+ /**************************************
1787
+ EventMachine_t::CreateUnixDomainServer
1788
+ **************************************/
1789
+
1790
+ const unsigned long EventMachine_t::CreateUnixDomainServer (const char *filename)
1791
+ {
1792
+ /* Create a UNIX-domain acceptor (server) socket and add it to the event machine.
1793
+ * Return the binding of the new acceptor to the caller.
1794
+ * This binding will be referenced when the new acceptor sends events
1795
+ * to indicate accepted connections.
1796
+ * THERE IS NO MEANINGFUL IMPLEMENTATION ON WINDOWS.
1797
+ */
1798
+
1799
+ #ifdef OS_WIN32
1800
+ throw std::runtime_error ("unix-domain server unavailable on this platform");
1801
+ #endif
1802
+
1803
+ // The whole rest of this function is only compiled on Unix systems.
1804
+ #ifdef OS_UNIX
1805
+ unsigned long output_binding = NULL;
1806
+
1807
+ struct sockaddr_un s_sun;
1808
+
1809
+ int sd_accept = socket (AF_LOCAL, SOCK_STREAM, 0);
1810
+ if (sd_accept == INVALID_SOCKET) {
1811
+ goto fail;
1812
+ }
1813
+
1814
+ if (!filename || !*filename)
1815
+ goto fail;
1816
+ unlink (filename);
1817
+
1818
+ bzero (&s_sun, sizeof(s_sun));
1819
+ s_sun.sun_family = AF_LOCAL;
1820
+ strncpy (s_sun.sun_path, filename, sizeof(s_sun.sun_path)-1);
1821
+
1822
+ // don't bother with reuseaddr for a local socket.
1823
+
1824
+ { // set CLOEXEC. Only makes sense on Unix
1825
+ #ifdef OS_UNIX
1826
+ int cloexec = fcntl (sd_accept, F_GETFD, 0);
1827
+ assert (cloexec >= 0);
1828
+ cloexec |= FD_CLOEXEC;
1829
+ fcntl (sd_accept, F_SETFD, cloexec);
1830
+ #endif
1831
+ }
1832
+
1833
+ if (bind (sd_accept, (struct sockaddr*)&s_sun, sizeof(s_sun))) {
1834
+ //__warning ("binding failed");
1835
+ goto fail;
1836
+ }
1837
+
1838
+ if (listen (sd_accept, 100)) {
1839
+ //__warning ("listen failed");
1840
+ goto fail;
1841
+ }
1842
+
1843
+ {
1844
+ // Set the acceptor non-blocking.
1845
+ // THIS IS CRUCIALLY IMPORTANT because we read it in a select loop.
1846
+ if (!SetSocketNonblocking (sd_accept)) {
1847
+ //int val = fcntl (sd_accept, F_GETFL, 0);
1848
+ //if (fcntl (sd_accept, F_SETFL, val | O_NONBLOCK) == -1) {
1849
+ goto fail;
1850
+ }
1851
+ }
1852
+
1853
+ { // Looking good.
1854
+ AcceptorDescriptor *ad = new AcceptorDescriptor (sd_accept, this);
1855
+ if (!ad)
1856
+ throw std::runtime_error ("unable to allocate acceptor");
1857
+ Add (ad);
1858
+ output_binding = ad->GetBinding();
1859
+ }
1860
+
1861
+ return output_binding;
1862
+
1863
+ fail:
1864
+ if (sd_accept != INVALID_SOCKET)
1865
+ closesocket (sd_accept);
1866
+ return NULL;
1867
+ #endif // OS_UNIX
1868
+ }
1869
+
1870
+
1871
+ /*********************
1872
+ EventMachine_t::Popen
1873
+ *********************/
1874
+ #if OBSOLETE
1875
+ const char *EventMachine_t::Popen (const char *cmd, const char *mode)
1876
+ {
1877
+ #ifdef OS_WIN32
1878
+ throw std::runtime_error ("popen is currently unavailable on this platform");
1879
+ #endif
1880
+
1881
+ // The whole rest of this function is only compiled on Unix systems.
1882
+ // Eventually we need this functionality (or a full-duplex equivalent) on Windows.
1883
+ #ifdef OS_UNIX
1884
+ const char *output_binding = NULL;
1885
+
1886
+ FILE *fp = popen (cmd, mode);
1887
+ if (!fp)
1888
+ return NULL;
1889
+
1890
+ // From here, all early returns must pclose the stream.
1891
+
1892
+ // According to the pipe(2) manpage, descriptors returned from pipe have both
1893
+ // CLOEXEC and NONBLOCK clear. Do NOT set CLOEXEC. DO set nonblocking.
1894
+ if (!SetSocketNonblocking (fileno (fp))) {
1895
+ pclose (fp);
1896
+ return NULL;
1897
+ }
1898
+
1899
+ { // Looking good.
1900
+ PipeDescriptor *pd = new PipeDescriptor (fp, this);
1901
+ if (!pd)
1902
+ throw std::runtime_error ("unable to allocate pipe");
1903
+ Add (pd);
1904
+ output_binding = pd->GetBinding();
1905
+ }
1906
+
1907
+ return output_binding;
1908
+ #endif
1909
+ }
1910
+ #endif // OBSOLETE
1911
+
1912
+ /**************************
1913
+ EventMachine_t::Socketpair
1914
+ **************************/
1915
+
1916
+ const unsigned long EventMachine_t::Socketpair (char * const*cmd_strings)
1917
+ {
1918
+ #ifdef OS_WIN32
1919
+ throw std::runtime_error ("socketpair is currently unavailable on this platform");
1920
+ #endif
1921
+
1922
+ // The whole rest of this function is only compiled on Unix systems.
1923
+ // Eventually we need this functionality (or a full-duplex equivalent) on Windows.
1924
+ #ifdef OS_UNIX
1925
+ // Make sure the incoming array of command strings is sane.
1926
+ if (!cmd_strings)
1927
+ return NULL;
1928
+ int j;
1929
+ for (j=0; j < 100 && cmd_strings[j]; j++)
1930
+ ;
1931
+ if ((j==0) || (j==100))
1932
+ return NULL;
1933
+
1934
+ unsigned long output_binding = NULL;
1935
+
1936
+ int sv[2];
1937
+ if (socketpair (AF_LOCAL, SOCK_STREAM, 0, sv) < 0)
1938
+ return NULL;
1939
+ // from here, all early returns must close the pair of sockets.
1940
+
1941
+ // Set the parent side of the socketpair nonblocking.
1942
+ // We don't care about the child side, and most child processes will expect their
1943
+ // stdout to be blocking. Thanks to Duane Johnson and Bill Kelly for pointing this out.
1944
+ // Obviously DON'T set CLOEXEC.
1945
+ if (!SetSocketNonblocking (sv[0])) {
1946
+ close (sv[0]);
1947
+ close (sv[1]);
1948
+ return NULL;
1949
+ }
1950
+
1951
+ pid_t f = fork();
1952
+ if (f > 0) {
1953
+ close (sv[1]);
1954
+ PipeDescriptor *pd = new PipeDescriptor (sv[0], f, this);
1955
+ if (!pd)
1956
+ throw std::runtime_error ("unable to allocate pipe");
1957
+ Add (pd);
1958
+ output_binding = pd->GetBinding();
1959
+ }
1960
+ else if (f == 0) {
1961
+ close (sv[0]);
1962
+ dup2 (sv[1], STDIN_FILENO);
1963
+ close (sv[1]);
1964
+ dup2 (STDIN_FILENO, STDOUT_FILENO);
1965
+ execvp (cmd_strings[0], cmd_strings+1);
1966
+ exit (-1); // end the child process if the exec doesn't work.
1967
+ }
1968
+ else
1969
+ throw std::runtime_error ("no fork");
1970
+
1971
+ return output_binding;
1972
+ #endif
1973
+ }
1974
+
1975
+
1976
+ /****************************
1977
+ EventMachine_t::OpenKeyboard
1978
+ ****************************/
1979
+
1980
+ const unsigned long EventMachine_t::OpenKeyboard()
1981
+ {
1982
+ KeyboardDescriptor *kd = new KeyboardDescriptor (this);
1983
+ if (!kd)
1984
+ throw std::runtime_error ("no keyboard-object allocated");
1985
+ Add (kd);
1986
+ return kd->GetBinding();
1987
+ }
1988
+
1989
+
1990
+ /**********************************
1991
+ EventMachine_t::GetConnectionCount
1992
+ **********************************/
1993
+
1994
+ int EventMachine_t::GetConnectionCount ()
1995
+ {
1996
+ return Descriptors.size() + NewDescriptors.size();
1997
+ }
1998
+
1999
+
2000
+ /************************
2001
+ EventMachine_t::WatchPid
2002
+ ************************/
2003
+
2004
+ const unsigned long EventMachine_t::WatchPid (int pid)
2005
+ {
2006
+ #ifdef HAVE_KQUEUE
2007
+ if (!bKqueue)
2008
+ throw std::runtime_error("must enable kqueue");
2009
+
2010
+ struct kevent event;
2011
+ int kqres;
2012
+
2013
+ EV_SET(&event, pid, EVFILT_PROC, EV_ADD, NOTE_EXIT | NOTE_FORK, 0, 0);
2014
+
2015
+ // Attempt to register the event
2016
+ kqres = kevent(kqfd, &event, 1, NULL, 0, NULL);
2017
+ if (kqres == -1) {
2018
+ char errbuf[200];
2019
+ sprintf(errbuf, "failed to register file watch descriptor with kqueue: %s", strerror(errno));
2020
+ throw std::runtime_error(errbuf);
2021
+ }
2022
+ #endif
2023
+
2024
+ #ifdef HAVE_KQUEUE
2025
+ Bindable_t* b = new Bindable_t();
2026
+ Pids.insert(make_pair (pid, b));
2027
+
2028
+ return b->GetBinding();
2029
+ #endif
2030
+
2031
+ throw std::runtime_error("no pid watching support on this system");
2032
+ }
2033
+
2034
+ /**************************
2035
+ EventMachine_t::UnwatchPid
2036
+ **************************/
2037
+
2038
+ void EventMachine_t::UnwatchPid (int pid)
2039
+ {
2040
+ Bindable_t *b = Pids[pid];
2041
+ assert(b);
2042
+ Pids.erase(pid);
2043
+
2044
+ #ifdef HAVE_KQUEUE
2045
+ struct kevent k;
2046
+
2047
+ EV_SET(&k, pid, EVFILT_PROC, EV_DELETE, 0, 0, 0);
2048
+ /*int t =*/ kevent (kqfd, &k, 1, NULL, 0, NULL);
2049
+ // t==-1 if the process already exited; ignore this for now
2050
+ #endif
2051
+
2052
+ if (EventCallback)
2053
+ (*EventCallback)(b->GetBinding(), EM_CONNECTION_UNBOUND, NULL, 0);
2054
+
2055
+ delete b;
2056
+ }
2057
+
2058
+ void EventMachine_t::UnwatchPid (const unsigned long sig)
2059
+ {
2060
+ for(map<int, Bindable_t*>::iterator i=Pids.begin(); i != Pids.end(); i++)
2061
+ {
2062
+ if (i->second->GetBinding() == sig) {
2063
+ UnwatchPid (i->first);
2064
+ return;
2065
+ }
2066
+ }
2067
+
2068
+ throw std::runtime_error("attempted to remove invalid pid signature");
2069
+ }
2070
+
2071
+
2072
+ /*************************
2073
+ EventMachine_t::WatchFile
2074
+ *************************/
2075
+
2076
+ const unsigned long EventMachine_t::WatchFile (const char *fpath)
2077
+ {
2078
+ struct stat sb;
2079
+ int sres;
2080
+ int wd = -1;
2081
+
2082
+ sres = stat(fpath, &sb);
2083
+
2084
+ if (sres == -1) {
2085
+ char errbuf[300];
2086
+ sprintf(errbuf, "error registering file %s for watching: %s", fpath, strerror(errno));
2087
+ throw std::runtime_error(errbuf);
2088
+ }
2089
+
2090
+ #ifdef HAVE_INOTIFY
2091
+ if (!inotify) {
2092
+ inotify = new InotifyDescriptor(this);
2093
+ assert (inotify);
2094
+ Add(inotify);
2095
+ }
2096
+
2097
+ wd = inotify_add_watch(inotify->GetSocket(), fpath, IN_MODIFY | IN_DELETE_SELF | IN_MOVE_SELF);
2098
+ if (wd == -1) {
2099
+ char errbuf[300];
2100
+ sprintf(errbuf, "failed to open file %s for registering with inotify: %s", fpath, strerror(errno));
2101
+ throw std::runtime_error(errbuf);
2102
+ }
2103
+ #endif
2104
+
2105
+ #ifdef HAVE_KQUEUE
2106
+ if (!bKqueue)
2107
+ throw std::runtime_error("must enable kqueue");
2108
+
2109
+ // With kqueue we have to open the file first and use the resulting fd to register for events
2110
+ wd = open(fpath, O_RDONLY);
2111
+ if (wd == -1) {
2112
+ char errbuf[300];
2113
+ sprintf(errbuf, "failed to open file %s for registering with kqueue: %s", fpath, strerror(errno));
2114
+ throw std::runtime_error(errbuf);
2115
+ }
2116
+ _RegisterKqueueFileEvent(wd);
2117
+ #endif
2118
+
2119
+ if (wd != -1) {
2120
+ Bindable_t* b = new Bindable_t();
2121
+ Files.insert(make_pair (wd, b));
2122
+
2123
+ return b->GetBinding();
2124
+ }
2125
+
2126
+ throw std::runtime_error("no file watching support on this system"); // is this the right thing to do?
2127
+ }
2128
+
2129
+
2130
+ /***************************
2131
+ EventMachine_t::UnwatchFile
2132
+ ***************************/
2133
+
2134
+ void EventMachine_t::UnwatchFile (int wd)
2135
+ {
2136
+ Bindable_t *b = Files[wd];
2137
+ assert(b);
2138
+ Files.erase(wd);
2139
+
2140
+ #ifdef HAVE_INOTIFY
2141
+ inotify_rm_watch(inotify->GetSocket(), wd);
2142
+ #elif HAVE_KQUEUE
2143
+ // With kqueue, closing the monitored fd automatically clears all registered events for it
2144
+ close(wd);
2145
+ #endif
2146
+
2147
+ if (EventCallback)
2148
+ (*EventCallback)(b->GetBinding(), EM_CONNECTION_UNBOUND, NULL, 0);
2149
+
2150
+ delete b;
2151
+ }
2152
+
2153
+ void EventMachine_t::UnwatchFile (const unsigned long sig)
2154
+ {
2155
+ for(map<int, Bindable_t*>::iterator i=Files.begin(); i != Files.end(); i++)
2156
+ {
2157
+ if (i->second->GetBinding() == sig) {
2158
+ UnwatchFile (i->first);
2159
+ return;
2160
+ }
2161
+ }
2162
+ throw std::runtime_error("attempted to remove invalid watch signature");
2163
+ }
2164
+
2165
+
2166
+ /***********************************
2167
+ EventMachine_t::_ReadInotify_Events
2168
+ ************************************/
2169
+
2170
+ void EventMachine_t::_ReadInotifyEvents()
2171
+ {
2172
+ #ifdef HAVE_INOTIFY
2173
+ struct inotify_event event;
2174
+
2175
+ assert(EventCallback);
2176
+
2177
+ while (read(inotify->GetSocket(), &event, INOTIFY_EVENT_SIZE) > 0) {
2178
+ assert(event.len == 0);
2179
+ if (event.mask & IN_MODIFY)
2180
+ (*EventCallback)(Files [event.wd]->GetBinding(), EM_CONNECTION_READ, "modified", 8);
2181
+ if (event.mask & IN_MOVE_SELF)
2182
+ (*EventCallback)(Files [event.wd]->GetBinding(), EM_CONNECTION_READ, "moved", 5);
2183
+ if (event.mask & IN_DELETE_SELF) {
2184
+ (*EventCallback)(Files [event.wd]->GetBinding(), EM_CONNECTION_READ, "deleted", 7);
2185
+ UnwatchFile ((int)event.wd);
2186
+ }
2187
+ }
2188
+ #endif
2189
+ }
2190
+
2191
+
2192
+ /*************************************
2193
+ EventMachine_t::_HandleKqueuePidEvent
2194
+ *************************************/
2195
+
2196
+ #ifdef HAVE_KQUEUE
2197
+ void EventMachine_t::_HandleKqueuePidEvent(struct kevent *event)
2198
+ {
2199
+ assert(EventCallback);
2200
+
2201
+ if (event->fflags & NOTE_FORK)
2202
+ (*EventCallback)(Pids [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "fork", 4);
2203
+ if (event->fflags & NOTE_EXIT) {
2204
+ (*EventCallback)(Pids [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "exit", 4);
2205
+ // stop watching the pid if it died
2206
+ UnwatchPid ((int)event->ident);
2207
+ }
2208
+ }
2209
+ #endif
2210
+
2211
+
2212
+ /**************************************
2213
+ EventMachine_t::_HandleKqueueFileEvent
2214
+ ***************************************/
2215
+
2216
+ #ifdef HAVE_KQUEUE
2217
+ void EventMachine_t::_HandleKqueueFileEvent(struct kevent *event)
2218
+ {
2219
+ assert(EventCallback);
2220
+
2221
+ if (event->fflags & NOTE_WRITE)
2222
+ (*EventCallback)(Files [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "modified", 8);
2223
+ if (event->fflags & NOTE_RENAME)
2224
+ (*EventCallback)(Files [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "moved", 5);
2225
+ if (event->fflags & NOTE_DELETE) {
2226
+ (*EventCallback)(Files [(int) event->ident]->GetBinding(), EM_CONNECTION_READ, "deleted", 7);
2227
+ UnwatchFile ((int)event->ident);
2228
+ }
2229
+ }
2230
+ #endif
2231
+
2232
+
2233
+ /****************************************
2234
+ EventMachine_t::_RegisterKqueueFileEvent
2235
+ *****************************************/
2236
+
2237
+ #ifdef HAVE_KQUEUE
2238
+ void EventMachine_t::_RegisterKqueueFileEvent(int fd)
2239
+ {
2240
+ struct kevent newevent;
2241
+ int kqres;
2242
+
2243
+ // Setup the event with our fd and proper flags
2244
+ EV_SET(&newevent, fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_DELETE | NOTE_RENAME | NOTE_WRITE, 0, 0);
2245
+
2246
+ // Attempt to register the event
2247
+ kqres = kevent(kqfd, &newevent, 1, NULL, 0, NULL);
2248
+ if (kqres == -1) {
2249
+ char errbuf[200];
2250
+ sprintf(errbuf, "failed to register file watch descriptor with kqueue: %s", strerror(errno));
2251
+ close(fd);
2252
+ throw std::runtime_error(errbuf);
2253
+ }
2254
+ }
2255
+ #endif
2256
+
2257
+
2258
+ /************************************
2259
+ EventMachine_t::GetHeartbeatInterval
2260
+ *************************************/
2261
+
2262
+ float EventMachine_t::GetHeartbeatInterval()
2263
+ {
2264
+ return ((float)HeartbeatInterval / 1000000);
2265
+ }
2266
+
2267
+
2268
+ /************************************
2269
+ EventMachine_t::SetHeartbeatInterval
2270
+ *************************************/
2271
+
2272
+ int EventMachine_t::SetHeartbeatInterval(float interval)
2273
+ {
2274
+ int iv = (int)(interval * 1000000);
2275
+ if (iv > 0) {
2276
+ HeartbeatInterval = iv;
2277
+ return 1;
2278
+ }
2279
+ return 0;
2280
+ }
2281
+ //#endif // OS_UNIX
2282
+