climine 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1075) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +32 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +148 -0
  6. data/Rakefile +4 -0
  7. data/bin/climine +4 -0
  8. data/climine.gemspec +30 -0
  9. data/config.yml +2 -0
  10. data/lib/climine/cli.rb +27 -0
  11. data/lib/climine/command/base.rb +29 -0
  12. data/lib/climine/command/config.rb +34 -0
  13. data/lib/climine/command/issue.rb +101 -0
  14. data/lib/climine/command/member.rb +11 -0
  15. data/lib/climine/command/project.rb +14 -0
  16. data/lib/climine/command/status.rb +24 -0
  17. data/lib/climine/command/tracker.rb +10 -0
  18. data/lib/climine/command/user.rb +15 -0
  19. data/lib/climine/config.rb +8 -0
  20. data/lib/climine/redmine.rb +79 -0
  21. data/lib/climine/template/issue.erb +11 -0
  22. data/lib/climine/template/issues.erb +7 -0
  23. data/lib/climine/template/members.erb +7 -0
  24. data/lib/climine/template/project.erb +7 -0
  25. data/lib/climine/template/projects.erb +7 -0
  26. data/lib/climine/template/statuses.erb +3 -0
  27. data/lib/climine/template/trackers.erb +3 -0
  28. data/lib/climine/template/user.erb +5 -0
  29. data/lib/climine/template/users.erb +8 -0
  30. data/lib/climine/template.rb +28 -0
  31. data/lib/climine/url.rb +4 -0
  32. data/lib/climine/version.rb +3 -0
  33. data/lib/climine.rb +5 -0
  34. data/templates/issue.erb +4 -0
  35. data/vendor/bundle/ruby/2.0.0/bin/climine +23 -0
  36. data/vendor/bundle/ruby/2.0.0/bin/httpclient +23 -0
  37. data/vendor/bundle/ruby/2.0.0/bin/rake +23 -0
  38. data/vendor/bundle/ruby/2.0.0/bin/redcarpet +23 -0
  39. data/vendor/bundle/ruby/2.0.0/bin/thor +23 -0
  40. data/vendor/bundle/ruby/2.0.0/bin/yard +23 -0
  41. data/vendor/bundle/ruby/2.0.0/bin/yardoc +23 -0
  42. data/vendor/bundle/ruby/2.0.0/bin/yri +23 -0
  43. data/vendor/bundle/ruby/2.0.0/build_info/hashie-2.0.5.info +1 -0
  44. data/vendor/bundle/ruby/2.0.0/build_info/hirb-0.7.1.info +1 -0
  45. data/vendor/bundle/ruby/2.0.0/build_info/hirb-unicode-0.0.5.info +1 -0
  46. data/vendor/bundle/ruby/2.0.0/build_info/httpclient-2.3.4.1.info +1 -0
  47. data/vendor/bundle/ruby/2.0.0/build_info/rake-10.1.0.info +1 -0
  48. data/vendor/bundle/ruby/2.0.0/build_info/redcarpet-3.0.0.info +1 -0
  49. data/vendor/bundle/ruby/2.0.0/build_info/thor-0.18.1.info +1 -0
  50. data/vendor/bundle/ruby/2.0.0/build_info/unicode-display_width-0.1.1.info +1 -0
  51. data/vendor/bundle/ruby/2.0.0/build_info/yard-0.8.7.3.info +1 -0
  52. data/vendor/bundle/ruby/2.0.0/cache/hashie-2.0.5.gem +0 -0
  53. data/vendor/bundle/ruby/2.0.0/cache/hirb-0.7.1.gem +0 -0
  54. data/vendor/bundle/ruby/2.0.0/cache/hirb-unicode-0.0.5.gem +0 -0
  55. data/vendor/bundle/ruby/2.0.0/cache/httpclient-2.3.4.1.gem +0 -0
  56. data/vendor/bundle/ruby/2.0.0/cache/rake-10.1.0.gem +0 -0
  57. data/vendor/bundle/ruby/2.0.0/cache/redcarpet-3.0.0.gem +0 -0
  58. data/vendor/bundle/ruby/2.0.0/cache/thor-0.18.1.gem +0 -0
  59. data/vendor/bundle/ruby/2.0.0/cache/unicode-display_width-0.1.1.gem +0 -0
  60. data/vendor/bundle/ruby/2.0.0/cache/yard-0.8.7.3.gem +0 -0
  61. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/CHANGELOG.md +39 -0
  62. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/CONTRIBUTING.md +27 -0
  63. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/Gemfile +2 -0
  64. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/Guardfile +5 -0
  65. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/LICENSE +20 -0
  66. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/README.markdown +236 -0
  67. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/Rakefile +13 -0
  68. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/hashie.gemspec +23 -0
  69. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/clash.rb +86 -0
  70. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/dash.rb +170 -0
  71. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/coercion.rb +115 -0
  72. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/deep_merge.rb +21 -0
  73. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/indifferent_access.rb +120 -0
  74. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/key_conversion.rb +92 -0
  75. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/merge_initializer.rb +26 -0
  76. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/method_access.rb +124 -0
  77. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/extensions/structure.rb +47 -0
  78. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/hash.rb +33 -0
  79. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/hash_extensions.rb +49 -0
  80. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/mash.rb +233 -0
  81. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/trash.rb +91 -0
  82. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie/version.rb +3 -0
  83. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/lib/hashie.rb +23 -0
  84. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/clash_spec.rb +50 -0
  85. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/dash_spec.rb +267 -0
  86. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/extensions/coercion_spec.rb +151 -0
  87. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/extensions/deep_merge_spec.rb +20 -0
  88. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/extensions/indifferent_access_spec.rb +99 -0
  89. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/extensions/key_conversion_spec.rb +102 -0
  90. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/extensions/merge_initializer_spec.rb +20 -0
  91. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/extensions/method_access_spec.rb +112 -0
  92. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/hash_spec.rb +22 -0
  93. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/mash_spec.rb +412 -0
  94. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/hashie/trash_spec.rb +155 -0
  95. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/spec.opts +3 -0
  96. data/vendor/bundle/ruby/2.0.0/gems/hashie-2.0.5/spec/spec_helper.rb +12 -0
  97. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/CHANGELOG.rdoc +158 -0
  98. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/LICENSE.txt +22 -0
  99. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/README.rdoc +201 -0
  100. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/Rakefile +35 -0
  101. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/bond/completions/hirb.rb +15 -0
  102. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/console.rb +43 -0
  103. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/dynamic_view.rb +113 -0
  104. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/formatter.rb +126 -0
  105. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/auto_table.rb +24 -0
  106. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/markdown_table.rb +14 -0
  107. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/object_table.rb +14 -0
  108. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/parent_child_tree.rb +24 -0
  109. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/tab_table.rb +24 -0
  110. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/table/filters.rb +10 -0
  111. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/table/resizer.rb +82 -0
  112. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/table.rb +374 -0
  113. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/tree.rb +181 -0
  114. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/unicode_table.rb +15 -0
  115. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers/vertical_table.rb +37 -0
  116. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/helpers.rb +18 -0
  117. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/import_object.rb +10 -0
  118. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/menu.rb +226 -0
  119. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/pager.rb +105 -0
  120. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/string.rb +44 -0
  121. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/util.rb +96 -0
  122. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/version.rb +3 -0
  123. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/view.rb +270 -0
  124. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/views/couch_db.rb +11 -0
  125. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/views/misc_db.rb +15 -0
  126. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/views/mongo_db.rb +17 -0
  127. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/views/orm.rb +11 -0
  128. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/views/rails.rb +19 -0
  129. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb/views.rb +8 -0
  130. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/hirb.rb +82 -0
  131. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/lib/ripl/hirb.rb +15 -0
  132. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/auto_table_test.rb +33 -0
  133. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/console_test.rb +27 -0
  134. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/deps.rip +4 -0
  135. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/dynamic_view_test.rb +94 -0
  136. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/formatter_test.rb +176 -0
  137. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/hirb_test.rb +39 -0
  138. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/import_test.rb +9 -0
  139. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/menu_test.rb +272 -0
  140. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/object_table_test.rb +79 -0
  141. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/pager_test.rb +162 -0
  142. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/resizer_test.rb +62 -0
  143. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/table_test.rb +667 -0
  144. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/test_helper.rb +60 -0
  145. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/tree_test.rb +184 -0
  146. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/util_test.rb +59 -0
  147. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/view_test.rb +178 -0
  148. data/vendor/bundle/ruby/2.0.0/gems/hirb-0.7.1/test/views_test.rb +22 -0
  149. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/Gemfile +4 -0
  150. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/MIT-LICENSE +19 -0
  151. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/README.md +42 -0
  152. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/Rakefile +25 -0
  153. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/hirb-unicode.gemspec +29 -0
  154. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/lib/hirb/unicode/string_util.rb +39 -0
  155. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/lib/hirb/unicode/version.rb +5 -0
  156. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/lib/hirb/unicode.rb +4 -0
  157. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/lib/hirb-unicode.rb +1 -0
  158. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/test/string_test.rb +51 -0
  159. data/vendor/bundle/ruby/2.0.0/gems/hirb-unicode-0.0.5/test/test_helper.rb +63 -0
  160. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/README.txt +759 -0
  161. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/bin/httpclient +65 -0
  162. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/hexdump.rb +50 -0
  163. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/http-access2/cookie.rb +1 -0
  164. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/http-access2/http.rb +1 -0
  165. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/http-access2.rb +55 -0
  166. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/auth.rb +899 -0
  167. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/cacert.p7s +1912 -0
  168. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/connection.rb +88 -0
  169. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/cookie.rb +438 -0
  170. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/http.rb +1046 -0
  171. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/include_client.rb +83 -0
  172. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/session.rb +1025 -0
  173. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/ssl_config.rb +403 -0
  174. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/timeout.rb +140 -0
  175. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/util.rb +178 -0
  176. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient/version.rb +3 -0
  177. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/httpclient.rb +1156 -0
  178. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/lib/oauthclient.rb +110 -0
  179. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/async.rb +8 -0
  180. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/auth.rb +11 -0
  181. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/cookie.rb +18 -0
  182. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/dav.rb +103 -0
  183. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/howto.rb +49 -0
  184. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/oauth_buzz.rb +57 -0
  185. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/oauth_friendfeed.rb +59 -0
  186. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/oauth_salesforce_10.rb +63 -0
  187. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/oauth_twitter.rb +61 -0
  188. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/0cert.pem +22 -0
  189. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/0key.pem +30 -0
  190. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/1000cert.pem +19 -0
  191. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/1000key.pem +18 -0
  192. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/htdocs/index.html +10 -0
  193. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/ssl_client.rb +22 -0
  194. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/ssl/webrick_httpsd.rb +29 -0
  195. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/stream.rb +21 -0
  196. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/thread.rb +27 -0
  197. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/sample/wcat.rb +21 -0
  198. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/ca-chain.cert +44 -0
  199. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/ca.cert +23 -0
  200. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/client.cert +19 -0
  201. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/client.key +15 -0
  202. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/helper.rb +129 -0
  203. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/htdigest +1 -0
  204. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/htpasswd +2 -0
  205. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/runner.rb +2 -0
  206. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/server.cert +19 -0
  207. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/server.key +15 -0
  208. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/sslsvr.rb +65 -0
  209. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/subca.cert +21 -0
  210. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_auth.rb +321 -0
  211. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_cookie.rb +391 -0
  212. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_hexdump.rb +14 -0
  213. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_http-access2.rb +507 -0
  214. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_httpclient.rb +1783 -0
  215. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_include_client.rb +52 -0
  216. data/vendor/bundle/ruby/2.0.0/gems/httpclient-2.3.4.1/test/test_ssl.rb +235 -0
  217. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/CHANGES +530 -0
  218. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/MIT-LICENSE +21 -0
  219. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/README.rdoc +187 -0
  220. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/Rakefile +375 -0
  221. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/TODO +21 -0
  222. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/bin/rake +33 -0
  223. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/command_line_usage.rdoc +152 -0
  224. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/example/Rakefile1 +38 -0
  225. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/example/Rakefile2 +35 -0
  226. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/example/a.c +6 -0
  227. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/example/b.c +6 -0
  228. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/example/main.c +11 -0
  229. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/glossary.rdoc +51 -0
  230. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/jamis.rb +591 -0
  231. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/proto_rake.rdoc +127 -0
  232. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/rake.1.gz +0 -0
  233. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/rakefile.rdoc +617 -0
  234. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/rational.rdoc +151 -0
  235. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  236. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  237. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  238. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  239. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  240. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  241. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  242. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  243. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  244. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  245. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  246. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  247. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  248. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  249. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  250. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.6.rdoc +55 -0
  251. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  252. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  253. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  254. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  255. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  256. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  257. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.4.rdoc +110 -0
  258. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.5.rdoc +114 -0
  259. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-0.9.6.rdoc +127 -0
  260. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  261. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.1.rdoc +187 -0
  262. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.2.rdoc +191 -0
  263. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  264. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  265. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/install.rb +80 -0
  266. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/alt_system.rb +108 -0
  267. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/application.rb +728 -0
  268. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/backtrace.rb +20 -0
  269. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/clean.rb +55 -0
  270. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/cloneable.rb +16 -0
  271. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/compositepublisher.rb +21 -0
  272. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/ftptools.rb +139 -0
  273. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/publisher.rb +73 -0
  274. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/rubyforgepublisher.rb +16 -0
  275. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/sshpublisher.rb +50 -0
  276. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/contrib/sys.rb +2 -0
  277. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/default_loader.rb +10 -0
  278. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/dsl_definition.rb +157 -0
  279. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/early_time.rb +18 -0
  280. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/core.rb +28 -0
  281. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/module.rb +0 -0
  282. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/string.rb +166 -0
  283. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ext/time.rb +15 -0
  284. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_creation_task.rb +24 -0
  285. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_list.rb +416 -0
  286. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_task.rb +46 -0
  287. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_utils.rb +116 -0
  288. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/file_utils_ext.rb +144 -0
  289. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/gempackagetask.rb +2 -0
  290. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/invocation_chain.rb +57 -0
  291. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/invocation_exception_mixin.rb +16 -0
  292. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/linked_list.rb +103 -0
  293. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/loaders/makefile.rb +40 -0
  294. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/multi_task.rb +13 -0
  295. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/name_space.rb +25 -0
  296. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/packagetask.rb +190 -0
  297. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/pathmap.rb +1 -0
  298. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/phony.rb +15 -0
  299. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/private_reader.rb +20 -0
  300. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/promise.rb +99 -0
  301. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/pseudo_status.rb +29 -0
  302. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rake_module.rb +37 -0
  303. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rake_test_loader.rb +22 -0
  304. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rdoctask.rb +2 -0
  305. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/ruby182_test_unit_fix.rb +27 -0
  306. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  307. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/runtest.rb +22 -0
  308. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/scope.rb +42 -0
  309. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task.rb +378 -0
  310. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task_argument_error.rb +7 -0
  311. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task_arguments.rb +89 -0
  312. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/task_manager.rb +297 -0
  313. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/tasklib.rb +22 -0
  314. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/testtask.rb +201 -0
  315. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/thread_history_display.rb +48 -0
  316. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/thread_pool.rb +161 -0
  317. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/trace_output.rb +22 -0
  318. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/version.rb +9 -0
  319. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake/win32.rb +56 -0
  320. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/lib/rake.rb +73 -0
  321. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/file_creation.rb +34 -0
  322. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/helper.rb +128 -0
  323. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/support/rakefile_definitions.rb +444 -0
  324. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/support/ruby_runner.rb +33 -0
  325. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_private_reader.rb +42 -0
  326. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake.rb +40 -0
  327. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_application.rb +517 -0
  328. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_application_options.rb +457 -0
  329. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_backtrace.rb +113 -0
  330. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_clean.rb +46 -0
  331. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_definitions.rb +79 -0
  332. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_directory_task.rb +57 -0
  333. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_dsl.rb +40 -0
  334. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_early_time.rb +31 -0
  335. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_extension.rb +59 -0
  336. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_creation_task.rb +56 -0
  337. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_list.rb +627 -0
  338. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_list_path_map.rb +8 -0
  339. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_task.rb +122 -0
  340. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_file_utils.rb +309 -0
  341. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_ftp_file.rb +74 -0
  342. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_functional.rb +466 -0
  343. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_invocation_chain.rb +64 -0
  344. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_linked_list.rb +84 -0
  345. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_makefile_loader.rb +46 -0
  346. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_multi_task.rb +58 -0
  347. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_name_space.rb +43 -0
  348. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_package_task.rb +79 -0
  349. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_path_map.rb +168 -0
  350. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_path_map_explode.rb +34 -0
  351. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_path_map_partial.rb +18 -0
  352. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_pseudo_status.rb +21 -0
  353. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_rake_test_loader.rb +20 -0
  354. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_reduce_compat.rb +26 -0
  355. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_require.rb +40 -0
  356. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_rules.rb +362 -0
  357. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_scope.rb +44 -0
  358. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task.rb +376 -0
  359. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_argument_parsing.rb +103 -0
  360. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_arguments.rb +121 -0
  361. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_lib.rb +9 -0
  362. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_manager.rb +158 -0
  363. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  364. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_task_with_arguments.rb +171 -0
  365. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_test_task.rb +119 -0
  366. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_thread_pool.rb +142 -0
  367. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_top_level_functions.rb +71 -0
  368. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_rake_win32.rb +72 -0
  369. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_thread_history_display.rb +101 -0
  370. data/vendor/bundle/ruby/2.0.0/gems/rake-10.1.0/test/test_trace_output.rb +52 -0
  371. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/COPYING +14 -0
  372. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/Gemfile +2 -0
  373. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/README.markdown +364 -0
  374. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/Rakefile +57 -0
  375. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/bin/redcarpet +38 -0
  376. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/Makefile +238 -0
  377. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/autolink.c +296 -0
  378. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/autolink.h +49 -0
  379. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/autolink.o +0 -0
  380. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/buffer.c +225 -0
  381. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/buffer.h +89 -0
  382. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/buffer.o +0 -0
  383. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/extconf.rb +6 -0
  384. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/houdini.h +37 -0
  385. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/houdini_href_e.c +108 -0
  386. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/houdini_href_e.o +0 -0
  387. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/houdini_html_e.c +88 -0
  388. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/houdini_html_e.o +0 -0
  389. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/html.c +679 -0
  390. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/html.h +78 -0
  391. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/html.o +0 -0
  392. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/html_blocks.h +206 -0
  393. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/html_smartypants.c +439 -0
  394. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/html_smartypants.o +0 -0
  395. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/markdown.c +2570 -0
  396. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/markdown.h +141 -0
  397. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/markdown.o +0 -0
  398. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/rc_markdown.c +159 -0
  399. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/rc_markdown.o +0 -0
  400. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/rc_render.c +485 -0
  401. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/rc_render.o +0 -0
  402. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/redcarpet.bundle +0 -0
  403. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/redcarpet.h +30 -0
  404. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/siteconf20131104-49718-1owp5wz.rb +6 -0
  405. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/stack.c +81 -0
  406. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/stack.h +29 -0
  407. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/ext/redcarpet/stack.o +0 -0
  408. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/lib/redcarpet/compat.rb +3 -0
  409. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/lib/redcarpet/render_man.rb +65 -0
  410. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/lib/redcarpet/render_strip.rb +41 -0
  411. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/lib/redcarpet.bundle +0 -0
  412. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/lib/redcarpet.rb +125 -0
  413. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/redcarpet.gemspec +65 -0
  414. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/custom_render_test.rb +28 -0
  415. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/html_render_test.rb +139 -0
  416. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/markdown_test.rb +253 -0
  417. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/pathological_inputs_test.rb +34 -0
  418. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/redcarpet_compat_test.rb +38 -0
  419. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/smarty_html_test.rb +30 -0
  420. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/smarty_pants_test.rb +43 -0
  421. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/stripdown_render_test.rb +31 -0
  422. data/vendor/bundle/ruby/2.0.0/gems/redcarpet-3.0.0/test/test_helper.rb +16 -0
  423. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/CHANGELOG.md +139 -0
  424. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/LICENSE.md +20 -0
  425. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/README.md +35 -0
  426. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/Thorfile +30 -0
  427. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/bin/thor +6 -0
  428. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions/create_file.rb +105 -0
  429. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions/create_link.rb +60 -0
  430. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions/directory.rb +119 -0
  431. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions/empty_directory.rb +137 -0
  432. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions/file_manipulation.rb +314 -0
  433. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions/inject_into_file.rb +109 -0
  434. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/actions.rb +318 -0
  435. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/base.rb +652 -0
  436. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/command.rb +136 -0
  437. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/core_ext/hash_with_indifferent_access.rb +80 -0
  438. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/core_ext/io_binary_read.rb +12 -0
  439. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/core_ext/ordered_hash.rb +100 -0
  440. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/error.rb +28 -0
  441. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/group.rb +282 -0
  442. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/invocation.rb +172 -0
  443. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/parser/argument.rb +74 -0
  444. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/parser/arguments.rb +171 -0
  445. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/parser/option.rb +121 -0
  446. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/parser/options.rb +218 -0
  447. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/parser.rb +4 -0
  448. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/rake_compat.rb +72 -0
  449. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/runner.rb +322 -0
  450. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/shell/basic.rb +393 -0
  451. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/shell/color.rb +148 -0
  452. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/shell/html.rb +127 -0
  453. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/shell.rb +88 -0
  454. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/util.rb +270 -0
  455. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor/version.rb +3 -0
  456. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/lib/thor.rb +473 -0
  457. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions/create_file_spec.rb +170 -0
  458. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions/create_link_spec.rb +95 -0
  459. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions/directory_spec.rb +169 -0
  460. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions/empty_directory_spec.rb +129 -0
  461. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions/file_manipulation_spec.rb +382 -0
  462. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions/inject_into_file_spec.rb +135 -0
  463. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/actions_spec.rb +331 -0
  464. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/base_spec.rb +291 -0
  465. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/command_spec.rb +80 -0
  466. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/core_ext/hash_with_indifferent_access_spec.rb +48 -0
  467. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/core_ext/ordered_hash_spec.rb +115 -0
  468. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/exit_condition_spec.rb +19 -0
  469. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/application.rb +2 -0
  470. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/app{1}/README +3 -0
  471. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/bundle/execute.rb +6 -0
  472. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/bundle/main.thor +1 -0
  473. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/command.thor +10 -0
  474. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/%file_name%.rb.tt +1 -0
  475. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/COMMENTER +11 -0
  476. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/README +3 -0
  477. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/block_helper.rb +3 -0
  478. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/config.rb +1 -0
  479. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/config.yaml.tt +1 -0
  480. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/doc/excluding/%file_name%.rb.tt +1 -0
  481. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/enum.thor +10 -0
  482. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/group.thor +128 -0
  483. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/invoke.thor +112 -0
  484. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/path with spaces +0 -0
  485. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/preserve/script.sh +3 -0
  486. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/script.thor +220 -0
  487. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/fixtures/subcommand.thor +17 -0
  488. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/group_spec.rb +216 -0
  489. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/helper.rb +67 -0
  490. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/invocation_spec.rb +100 -0
  491. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/parser/argument_spec.rb +53 -0
  492. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/parser/arguments_spec.rb +66 -0
  493. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/parser/option_spec.rb +202 -0
  494. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/parser/options_spec.rb +400 -0
  495. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/rake_compat_spec.rb +72 -0
  496. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/register_spec.rb +197 -0
  497. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/runner_spec.rb +241 -0
  498. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/shell/basic_spec.rb +311 -0
  499. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/shell/color_spec.rb +95 -0
  500. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/shell/html_spec.rb +32 -0
  501. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/shell_spec.rb +47 -0
  502. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/subcommand_spec.rb +30 -0
  503. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/thor_spec.rb +491 -0
  504. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/spec/util_spec.rb +196 -0
  505. data/vendor/bundle/ruby/2.0.0/gems/thor-0.18.1/thor.gemspec +24 -0
  506. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/LICENSE.txt +22 -0
  507. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/README.rdoc +36 -0
  508. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/Rakefile +35 -0
  509. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/data/EastAsianWidth.index +0 -0
  510. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/data/EastAsianWidth.txt +23735 -0
  511. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/lib/unicode/display_size.rb +1 -0
  512. data/vendor/bundle/ruby/2.0.0/gems/unicode-display_width-0.1.1/lib/unicode/display_width.rb +76 -0
  513. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/LEGAL +66 -0
  514. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/LICENSE +22 -0
  515. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/README.md +620 -0
  516. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/Rakefile +61 -0
  517. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/builtins_vs_eval.rb +23 -0
  518. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/concat_vs_join.rb +12 -0
  519. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/erb_vs_erubis.rb +53 -0
  520. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/format_args.rb +46 -0
  521. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/generation.rb +37 -0
  522. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/marshal_vs_dbm.rb +63 -0
  523. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/parsing.rb +46 -0
  524. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/pathname_vs_string.rb +50 -0
  525. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/rdoc_vs_yardoc.rb +10 -0
  526. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/registry_store_types.rb +48 -0
  527. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/ri_vs_yri.rb +18 -0
  528. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/ripper_parser.rb +12 -0
  529. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/splat_vs_flatten.rb +12 -0
  530. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/template_erb.rb +22 -0
  531. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/template_format.rb +6 -0
  532. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/template_profile.rb +17 -0
  533. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/benchmarks/yri_cache.rb +19 -0
  534. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/bin/yard +12 -0
  535. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/bin/yardoc +12 -0
  536. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/bin/yri +12 -0
  537. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/CodeObjects.md +115 -0
  538. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/GettingStarted.md +592 -0
  539. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/Handlers.md +152 -0
  540. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/Overview.md +61 -0
  541. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/Parser.md +191 -0
  542. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/Tags.md +282 -0
  543. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/TagsArch.md +123 -0
  544. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/Templates.md +496 -0
  545. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/WhatsNew.md +1244 -0
  546. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/images/code-objects-class-diagram.png +0 -0
  547. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/images/handlers-class-diagram.png +0 -0
  548. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/images/overview-class-diagram.png +0 -0
  549. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/images/parser-class-diagram.png +0 -0
  550. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/images/tags-class-diagram.png +0 -0
  551. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
  552. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/default/fulldoc/html/setup.rb +6 -0
  553. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/default/layout/html/setup.rb +8 -0
  554. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/default/layout/html/tag_list.erb +11 -0
  555. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/default/yard_tags/html/list.erb +18 -0
  556. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/default/yard_tags/html/setup.rb +27 -0
  557. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/docs/templates/plugin.rb +65 -0
  558. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/rubygems_plugin.rb +4 -0
  559. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/autoload.rb +290 -0
  560. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/command.rb +84 -0
  561. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/command_parser.rb +92 -0
  562. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/config.rb +136 -0
  563. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/diff.rb +270 -0
  564. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/display.rb +68 -0
  565. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/gems.rb +83 -0
  566. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/graph.rb +126 -0
  567. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/help.rb +18 -0
  568. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/i18n.rb +69 -0
  569. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/list.rb +22 -0
  570. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/markup_types.rb +33 -0
  571. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/server.rb +253 -0
  572. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/stats.rb +213 -0
  573. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/yardoc.rb +752 -0
  574. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/yardopts_command.rb +109 -0
  575. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/cli/yri.rb +214 -0
  576. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/base.rb +585 -0
  577. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/class_object.rb +143 -0
  578. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/class_variable_object.rb +8 -0
  579. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/constant_object.rb +13 -0
  580. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/extended_method_object.rb +23 -0
  581. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/extra_file_object.rb +128 -0
  582. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/macro_object.rb +172 -0
  583. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/method_object.rb +191 -0
  584. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/module_object.rb +18 -0
  585. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/namespace_object.rb +200 -0
  586. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/proxy.rb +258 -0
  587. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/code_objects/root_object.rb +17 -0
  588. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/config.rb +270 -0
  589. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/array.rb +15 -0
  590. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/file.rb +65 -0
  591. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/hash.rb +15 -0
  592. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/insertion.rb +60 -0
  593. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/module.rb +19 -0
  594. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/string.rb +67 -0
  595. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/core_ext/symbol_hash.rb +73 -0
  596. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/docstring.rb +362 -0
  597. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/docstring_parser.rb +321 -0
  598. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/globals.rb +18 -0
  599. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/base.rb +597 -0
  600. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/alias_handler.rb +15 -0
  601. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/attribute_handler.rb +13 -0
  602. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/base.rb +110 -0
  603. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/class_handler.rb +26 -0
  604. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/constant_handler.rb +12 -0
  605. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/handler_methods.rb +166 -0
  606. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/init_handler.rb +18 -0
  607. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/method_handler.rb +35 -0
  608. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/mixin_handler.rb +13 -0
  609. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/module_handler.rb +16 -0
  610. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/override_comment_handler.rb +30 -0
  611. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/path_handler.rb +10 -0
  612. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/struct_handler.rb +12 -0
  613. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/c/symbol_handler.rb +7 -0
  614. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/processor.rb +201 -0
  615. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/alias_handler.rb +41 -0
  616. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/attribute_handler.rb +82 -0
  617. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/base.rb +164 -0
  618. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/class_condition_handler.rb +86 -0
  619. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/class_handler.rb +121 -0
  620. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/class_variable_handler.rb +16 -0
  621. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/comment_handler.rb +9 -0
  622. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/constant_handler.rb +45 -0
  623. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
  624. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/dsl_handler_methods.rb +77 -0
  625. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/exception_handler.rb +26 -0
  626. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/extend_handler.rb +21 -0
  627. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/alias_handler.rb +35 -0
  628. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/attribute_handler.rb +60 -0
  629. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/base.rb +250 -0
  630. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
  631. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/class_handler.rb +111 -0
  632. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +14 -0
  633. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
  634. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/constant_handler.rb +28 -0
  635. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
  636. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/exception_handler.rb +12 -0
  637. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/extend_handler.rb +20 -0
  638. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/method_handler.rb +85 -0
  639. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
  640. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
  641. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/module_handler.rb +11 -0
  642. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +21 -0
  643. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/visibility_handler.rb +16 -0
  644. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/legacy/yield_handler.rb +28 -0
  645. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/method_condition_handler.rb +8 -0
  646. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/method_handler.rb +92 -0
  647. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/mixin_handler.rb +36 -0
  648. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
  649. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/module_handler.rb +11 -0
  650. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/private_constant_handler.rb +36 -0
  651. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/struct_handler_methods.rb +141 -0
  652. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/visibility_handler.rb +24 -0
  653. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/handlers/ruby/yield_handler.rb +30 -0
  654. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/i18n/locale.rb +66 -0
  655. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/i18n/message.rb +56 -0
  656. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/i18n/messages.rb +55 -0
  657. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/i18n/po_parser.rb +60 -0
  658. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/i18n/pot_generator.rb +280 -0
  659. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/i18n/text.rb +173 -0
  660. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/logging.rb +190 -0
  661. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/options.rb +216 -0
  662. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/base.rb +56 -0
  663. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/c/c_parser.rb +231 -0
  664. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/c/comment_parser.rb +131 -0
  665. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/c/statement.rb +63 -0
  666. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/ast_node.rb +496 -0
  667. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/legacy/ruby_lex.rb +1377 -0
  668. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/legacy/ruby_parser.rb +31 -0
  669. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/legacy/statement.rb +65 -0
  670. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/legacy/statement_list.rb +384 -0
  671. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/legacy/token_list.rb +71 -0
  672. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/ruby/ruby_parser.rb +625 -0
  673. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/parser/source_parser.rb +517 -0
  674. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rake/yardoc_task.rb +74 -0
  675. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/registry.rb +438 -0
  676. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/registry_store.rb +319 -0
  677. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  678. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/backports/MIT.txt +20 -0
  679. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/backports/gem.rb +9 -0
  680. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/backports/source_index.rb +370 -0
  681. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/backports.rb +8 -0
  682. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/doc_manager.rb +88 -0
  683. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/rubygems/specification.rb +41 -0
  684. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/serializers/base.rb +80 -0
  685. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/serializers/file_system_serializer.rb +90 -0
  686. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/serializers/process_serializer.rb +24 -0
  687. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/serializers/stdout_serializer.rb +32 -0
  688. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/serializers/yardoc_serializer.rb +124 -0
  689. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/adapter.rb +100 -0
  690. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/base.rb +192 -0
  691. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/display_file_command.rb +24 -0
  692. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/display_object_command.rb +58 -0
  693. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/frames_command.rb +15 -0
  694. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/library_command.rb +148 -0
  695. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/library_index_command.rb +24 -0
  696. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/list_command.rb +24 -0
  697. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/search_command.rb +78 -0
  698. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/commands/static_file_command.rb +57 -0
  699. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/doc_server_helper.rb +76 -0
  700. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/doc_server_serializer.rb +43 -0
  701. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/library_version.rb +227 -0
  702. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/rack_adapter.rb +88 -0
  703. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/router.rb +176 -0
  704. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/static_caching.rb +45 -0
  705. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/fulldoc/html/css/custom.css +78 -0
  706. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  707. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
  708. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/layout/html/breadcrumb.erb +46 -0
  709. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
  710. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/layout/html/setup.rb +7 -0
  711. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
  712. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/default/method_details/html/setup.rb +4 -0
  713. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/library_list/html/contents.erb +13 -0
  714. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/library_list/html/headers.erb +26 -0
  715. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +12 -0
  716. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/library_list/html/setup.rb +3 -0
  717. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
  718. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/processing/html/processing.erb +51 -0
  719. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/processing/html/setup.rb +3 -0
  720. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
  721. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/templates/doc_server/search/html/setup.rb +8 -0
  722. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server/webrick_adapter.rb +43 -0
  723. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/server.rb +11 -0
  724. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/default_factory.rb +176 -0
  725. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/default_tag.rb +12 -0
  726. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/directives.rb +599 -0
  727. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/library.rb +630 -0
  728. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/option_tag.rb +12 -0
  729. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/overload_tag.rb +66 -0
  730. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/ref_tag.rb +7 -0
  731. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/ref_tag_list.rb +27 -0
  732. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/tag.rb +57 -0
  733. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/tags/tag_format_error.rb +6 -0
  734. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/engine.rb +185 -0
  735. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/erb_cache.rb +22 -0
  736. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/base_helper.rb +212 -0
  737. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/filter_helper.rb +26 -0
  738. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/html_helper.rb +599 -0
  739. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +60 -0
  740. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/markup/rdoc_markdown.rb +22 -0
  741. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/markup/rdoc_markup.rb +106 -0
  742. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/markup_helper.rb +169 -0
  743. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/method_helper.rb +74 -0
  744. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/module_helper.rb +19 -0
  745. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/text_helper.rb +95 -0
  746. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/helpers/uml_helper.rb +46 -0
  747. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/section.rb +106 -0
  748. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/template.rb +407 -0
  749. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/templates/template_options.rb +88 -0
  750. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/verifier.rb +148 -0
  751. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard/version.rb +3 -0
  752. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/lib/yard.rb +71 -0
  753. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/command_parser_spec.rb +43 -0
  754. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/command_spec.rb +36 -0
  755. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/config_spec.rb +92 -0
  756. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/diff_spec.rb +260 -0
  757. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/display_spec.rb +30 -0
  758. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/gems_spec.rb +81 -0
  759. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/graph_spec.rb +17 -0
  760. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/help_spec.rb +22 -0
  761. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/i18n_spec.rb +111 -0
  762. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/list_spec.rb +8 -0
  763. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/markup_types_spec.rb +22 -0
  764. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/server_spec.rb +327 -0
  765. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/stats_spec.rb +90 -0
  766. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/yardoc_spec.rb +804 -0
  767. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/cli/yri_spec.rb +99 -0
  768. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/base_spec.rb +438 -0
  769. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/class_object_spec.rb +225 -0
  770. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/code_object_list_spec.rb +33 -0
  771. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/constants_spec.rb +82 -0
  772. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/extra_file_object_spec.rb +147 -0
  773. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/macro_object_spec.rb +148 -0
  774. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/method_object_spec.rb +175 -0
  775. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/module_object_spec.rb +141 -0
  776. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/namespace_object_spec.rb +170 -0
  777. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/proxy_spec.rb +140 -0
  778. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/code_objects/spec_helper.rb +3 -0
  779. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/config_spec.rb +176 -0
  780. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/array_spec.rb +14 -0
  781. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/file_spec.rb +68 -0
  782. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/hash_spec.rb +14 -0
  783. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/insertion_spec.rb +37 -0
  784. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/module_spec.rb +15 -0
  785. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/string_spec.rb +42 -0
  786. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/core_ext/symbol_hash_spec.rb +86 -0
  787. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/docstring_parser_spec.rb +228 -0
  788. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/docstring_spec.rb +335 -0
  789. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/alias_handler_spec.rb +81 -0
  790. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/attribute_handler_spec.rb +94 -0
  791. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/base_spec.rb +206 -0
  792. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/alias_handler_spec.rb +33 -0
  793. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/attribute_handler_spec.rb +40 -0
  794. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/class_handler_spec.rb +63 -0
  795. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/constant_handler_spec.rb +68 -0
  796. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/init_handler_spec.rb +47 -0
  797. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/method_handler_spec.rb +239 -0
  798. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/mixin_handler_spec.rb +27 -0
  799. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/module_handler_spec.rb +38 -0
  800. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/override_comment_handler_spec.rb +46 -0
  801. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/path_handler_spec.rb +35 -0
  802. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/spec_helper.rb +13 -0
  803. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/c/struct_handler_spec.rb +15 -0
  804. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/class_condition_handler_spec.rb +67 -0
  805. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/class_handler_spec.rb +246 -0
  806. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/class_variable_handler_spec.rb +11 -0
  807. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/constant_handler_spec.rb +64 -0
  808. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/dsl_handler_spec.rb +197 -0
  809. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/alias_handler_001.rb.txt +46 -0
  810. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/attribute_handler_001.rb.txt +32 -0
  811. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/class_condition_handler_001.rb.txt +69 -0
  812. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/class_handler_001.rb.txt +120 -0
  813. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/class_variable_handler_001.rb.txt +10 -0
  814. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/constant_handler_001.rb.txt +25 -0
  815. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/dsl_handler_001.rb.txt +125 -0
  816. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/exception_handler_001.rb.txt +59 -0
  817. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/extend_handler_001.rb.txt +16 -0
  818. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/method_condition_handler_001.rb.txt +10 -0
  819. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/method_handler_001.rb.txt +126 -0
  820. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/mixin_handler_001.rb.txt +37 -0
  821. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/module_handler_001.rb.txt +29 -0
  822. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -0
  823. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/process_handler_001.rb.txt +11 -0
  824. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/visibility_handler_001.rb.txt +32 -0
  825. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/examples/yield_handler_001.rb.txt +54 -0
  826. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/exception_handler_spec.rb +48 -0
  827. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/extend_handler_spec.rb +23 -0
  828. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/legacy_base_spec.rb +128 -0
  829. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/method_condition_handler_spec.rb +14 -0
  830. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/method_handler_spec.rb +184 -0
  831. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/mixin_handler_spec.rb +55 -0
  832. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/module_function_handler_spec.rb +105 -0
  833. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/module_handler_spec.rb +34 -0
  834. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/private_constant_handler_spec.rb +24 -0
  835. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/processor_spec.rb +34 -0
  836. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/ruby/base_spec.rb +94 -0
  837. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/ruby/legacy/base_spec.rb +82 -0
  838. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/spec_helper.rb +33 -0
  839. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/visibility_handler_spec.rb +39 -0
  840. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/handlers/yield_handler_spec.rb +51 -0
  841. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/i18n/locale_spec.rb +81 -0
  842. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/i18n/message_spec.rb +52 -0
  843. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/i18n/messages_spec.rb +67 -0
  844. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/i18n/pot_generator_spec.rb +262 -0
  845. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/i18n/text_spec.rb +180 -0
  846. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/logging_spec.rb +35 -0
  847. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/options_spec.rb +171 -0
  848. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/base_spec.rb +24 -0
  849. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/c_parser_spec.rb +171 -0
  850. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/array.c.txt +3887 -0
  851. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/example1.rb.txt +8 -0
  852. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/extrafile.c.txt +8 -0
  853. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/multifile.c.txt +22 -0
  854. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/override.c.txt +424 -0
  855. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/parse_in_order_001.rb.txt +2 -0
  856. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/parse_in_order_002.rb.txt +2 -0
  857. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/examples/tag_handler_001.rb.txt +8 -0
  858. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/ruby/ast_node_spec.rb +33 -0
  859. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/ruby/legacy/statement_list_spec.rb +299 -0
  860. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/ruby/legacy/token_list_spec.rb +77 -0
  861. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/ruby/ruby_parser_spec.rb +334 -0
  862. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/source_parser_spec.rb +717 -0
  863. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/parser/tag_parsing_spec.rb +18 -0
  864. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/rake/yardoc_task_spec.rb +101 -0
  865. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/registry_spec.rb +393 -0
  866. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/registry_store_spec.rb +315 -0
  867. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/rubygems/doc_manager_spec.rb +112 -0
  868. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/data/serialized_yardoc/checksums +1 -0
  869. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  870. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  871. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  872. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  873. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/data/serialized_yardoc/proxy_types +2 -0
  874. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/file_system_serializer_spec.rb +124 -0
  875. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/spec_helper.rb +2 -0
  876. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/serializers/yardoc_serializer_spec.rb +46 -0
  877. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/adapter_spec.rb +38 -0
  878. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/commands/base_spec.rb +87 -0
  879. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/commands/library_command_spec.rb +39 -0
  880. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/commands/static_file_command_spec.rb +84 -0
  881. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/doc_server_helper_spec.rb +53 -0
  882. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/doc_server_serializer_spec.rb +50 -0
  883. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/rack_adapter_spec.rb +20 -0
  884. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/router_spec.rb +122 -0
  885. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/spec_helper.rb +17 -0
  886. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/static_caching_spec.rb +39 -0
  887. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server/webrick_servlet_spec.rb +20 -0
  888. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/server_spec.rb +10 -0
  889. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/spec_helper.rb +128 -0
  890. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/tags/default_factory_spec.rb +152 -0
  891. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/tags/default_tag_spec.rb +11 -0
  892. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/tags/directives_spec.rb +453 -0
  893. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/tags/library_spec.rb +34 -0
  894. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/tags/overload_tag_spec.rb +53 -0
  895. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/tags/ref_tag_list_spec.rb +53 -0
  896. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/class_spec.rb +44 -0
  897. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/constant_spec.rb +40 -0
  898. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/engine_spec.rb +121 -0
  899. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/class001.html +280 -0
  900. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/class001.txt +36 -0
  901. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/class002.html +35 -0
  902. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/constant001.txt +25 -0
  903. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/constant002.txt +7 -0
  904. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/constant003.txt +11 -0
  905. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method001.html +130 -0
  906. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method001.txt +35 -0
  907. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method002.html +86 -0
  908. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method002.txt +20 -0
  909. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method003.html +159 -0
  910. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method003.txt +45 -0
  911. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method004.html +44 -0
  912. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method004.txt +10 -0
  913. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method005.html +99 -0
  914. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/method005.txt +33 -0
  915. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/module001.dot +33 -0
  916. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/module001.html +825 -0
  917. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/module001.txt +33 -0
  918. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/module002.html +318 -0
  919. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/module003.html +185 -0
  920. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/module004.html +387 -0
  921. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/examples/tag001.txt +82 -0
  922. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/base_helper_spec.rb +175 -0
  923. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/html_helper_spec.rb +612 -0
  924. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +53 -0
  925. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/markup/rdoc_markup_spec.rb +93 -0
  926. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/markup_helper_spec.rb +135 -0
  927. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/method_helper_spec.rb +82 -0
  928. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/shared_signature_examples.rb +123 -0
  929. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/helpers/text_helper_spec.rb +44 -0
  930. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/method_spec.rb +102 -0
  931. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/module_spec.rb +181 -0
  932. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/onefile_spec.rb +64 -0
  933. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/section_spec.rb +146 -0
  934. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/spec_helper.rb +73 -0
  935. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/tag_spec.rb +51 -0
  936. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/templates/template_spec.rb +409 -0
  937. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/spec/verifier_spec.rb +106 -0
  938. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/dot/setup.rb +6 -0
  939. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/dot/superklass.erb +3 -0
  940. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/html/constructor_details.erb +8 -0
  941. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/html/setup.rb +1 -0
  942. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/html/subclasses.erb +4 -0
  943. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/setup.rb +36 -0
  944. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/text/setup.rb +11 -0
  945. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/class/text/subclasses.erb +5 -0
  946. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/constant/text/header.erb +11 -0
  947. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/constant/text/setup.rb +3 -0
  948. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/abstract.erb +4 -0
  949. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/deprecated.erb +1 -0
  950. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/index.erb +5 -0
  951. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/note.erb +6 -0
  952. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/private.erb +4 -0
  953. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/returns_void.erb +1 -0
  954. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/text.erb +1 -0
  955. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/html/todo.erb +6 -0
  956. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/setup.rb +51 -0
  957. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/abstract.erb +2 -0
  958. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/deprecated.erb +2 -0
  959. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/index.erb +2 -0
  960. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/note.erb +4 -0
  961. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/private.erb +2 -0
  962. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/returns_void.erb +1 -0
  963. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/text.erb +1 -0
  964. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/docstring/text/todo.erb +4 -0
  965. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/css/common.css +1 -0
  966. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/css/full_list.css +57 -0
  967. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/css/style.css +338 -0
  968. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/frames.erb +26 -0
  969. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/full_list.erb +40 -0
  970. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/full_list_class.erb +2 -0
  971. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/full_list_file.erb +5 -0
  972. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/full_list_method.erb +8 -0
  973. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/js/app.js +219 -0
  974. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/js/full_list.js +178 -0
  975. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/js/jquery.js +4 -0
  976. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/fulldoc/html/setup.rb +199 -0
  977. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/dot/header.erb +6 -0
  978. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/dot/setup.rb +14 -0
  979. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/breadcrumb.erb +13 -0
  980. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/files.erb +11 -0
  981. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/footer.erb +5 -0
  982. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/headers.erb +14 -0
  983. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/index.erb +2 -0
  984. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/layout.erb +20 -0
  985. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/listing.erb +4 -0
  986. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/objects.erb +32 -0
  987. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/script_setup.erb +5 -0
  988. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/search.erb +8 -0
  989. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/layout/html/setup.rb +71 -0
  990. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method/html/header.erb +16 -0
  991. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method/setup.rb +3 -0
  992. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method/text/header.erb +1 -0
  993. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/html/header.erb +3 -0
  994. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/html/method_signature.erb +25 -0
  995. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/html/source.erb +10 -0
  996. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/setup.rb +10 -0
  997. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/text/header.erb +10 -0
  998. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/text/method_signature.erb +12 -0
  999. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/method_details/text/setup.rb +10 -0
  1000. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/dot/child.erb +1 -0
  1001. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/dot/dependencies.erb +3 -0
  1002. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/dot/header.erb +6 -0
  1003. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/dot/info.erb +14 -0
  1004. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/dot/setup.rb +14 -0
  1005. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/attribute_details.erb +10 -0
  1006. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/attribute_summary.erb +8 -0
  1007. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/box_info.erb +37 -0
  1008. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/children.erb +8 -0
  1009. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/constant_summary.erb +13 -0
  1010. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/defines.erb +3 -0
  1011. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/header.erb +5 -0
  1012. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/inherited_attributes.erb +14 -0
  1013. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/inherited_constants.erb +8 -0
  1014. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/inherited_methods.erb +19 -0
  1015. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/item_summary.erb +40 -0
  1016. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/method_details_list.erb +9 -0
  1017. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/method_summary.erb +14 -0
  1018. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/methodmissing.erb +12 -0
  1019. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/html/pre_docstring.erb +1 -0
  1020. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/setup.rb +164 -0
  1021. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/children.erb +10 -0
  1022. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/class_meths_list.erb +8 -0
  1023. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/extends.erb +8 -0
  1024. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/header.erb +7 -0
  1025. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/includes.erb +8 -0
  1026. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/instance_meths_list.erb +8 -0
  1027. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/module/text/setup.rb +12 -0
  1028. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/onefile/html/files.erb +5 -0
  1029. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/onefile/html/headers.erb +6 -0
  1030. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/onefile/html/layout.erb +17 -0
  1031. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/onefile/html/readme.erb +3 -0
  1032. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/onefile/html/setup.rb +61 -0
  1033. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/root/dot/child.erb +3 -0
  1034. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/root/dot/setup.rb +5 -0
  1035. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/root/html/setup.rb +1 -0
  1036. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/html/example.erb +11 -0
  1037. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/html/index.erb +3 -0
  1038. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/html/option.erb +24 -0
  1039. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/html/overload.erb +14 -0
  1040. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/html/see.erb +8 -0
  1041. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/html/tag.erb +20 -0
  1042. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/setup.rb +55 -0
  1043. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/text/example.erb +12 -0
  1044. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/text/index.erb +1 -0
  1045. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/text/option.erb +20 -0
  1046. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/text/overload.erb +19 -0
  1047. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/text/see.erb +11 -0
  1048. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/default/tags/text/tag.erb +13 -0
  1049. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/class/html/setup.rb +1 -0
  1050. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/docstring/html/setup.rb +1 -0
  1051. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/fulldoc/html/css/style.css +108 -0
  1052. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/fulldoc/html/js/app.js +33 -0
  1053. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/fulldoc/html/setup.rb +73 -0
  1054. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/layout/html/layout.erb +81 -0
  1055. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/layout/html/setup.rb +28 -0
  1056. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/method/html/header.erb +18 -0
  1057. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/method/html/setup.rb +21 -0
  1058. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/module/html/header.erb +7 -0
  1059. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/module/html/method_list.erb +5 -0
  1060. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/module/html/setup.rb +26 -0
  1061. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/onefile/html/files.erb +4 -0
  1062. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/onefile/html/setup.rb +5 -0
  1063. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/onefile/html/toc.erb +3 -0
  1064. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/templates/guide/tags/html/setup.rb +8 -0
  1065. data/vendor/bundle/ruby/2.0.0/gems/yard-0.8.7.3/yard.gemspec +25 -0
  1066. data/vendor/bundle/ruby/2.0.0/specifications/hashie-2.0.5.gemspec +41 -0
  1067. data/vendor/bundle/ruby/2.0.0/specifications/hirb-0.7.1.gemspec +41 -0
  1068. data/vendor/bundle/ruby/2.0.0/specifications/hirb-unicode-0.0.5.gemspec +45 -0
  1069. data/vendor/bundle/ruby/2.0.0/specifications/httpclient-2.3.4.1.gemspec +18 -0
  1070. data/vendor/bundle/ruby/2.0.0/specifications/rake-10.1.0.gemspec +35 -0
  1071. data/vendor/bundle/ruby/2.0.0/specifications/redcarpet-3.0.0.gemspec +45 -0
  1072. data/vendor/bundle/ruby/2.0.0/specifications/thor-0.18.1.gemspec +31 -0
  1073. data/vendor/bundle/ruby/2.0.0/specifications/unicode-display_width-0.1.1.gemspec +20 -0
  1074. data/vendor/bundle/ruby/2.0.0/specifications/yard-0.8.7.3.gemspec +20 -0
  1075. metadata +1231 -0
@@ -0,0 +1,1783 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('helper', File.dirname(__FILE__))
3
+
4
+
5
+ class TestHTTPClient < Test::Unit::TestCase
6
+ include Helper
7
+ include HTTPClient::Util
8
+
9
+ def setup
10
+ super
11
+ setup_server
12
+ setup_client
13
+ end
14
+
15
+ def teardown
16
+ super
17
+ end
18
+
19
+ def test_initialize
20
+ setup_proxyserver
21
+ escape_noproxy do
22
+ @proxyio.string = ""
23
+ @client = HTTPClient.new(proxyurl)
24
+ assert_equal(urify(proxyurl), @client.proxy)
25
+ assert_equal(200, @client.head(serverurl).status)
26
+ assert(/accept/ =~ @proxyio.string)
27
+ end
28
+ end
29
+
30
+ def test_agent_name
31
+ @client = HTTPClient.new(nil, "agent_name_foo")
32
+ str = ""
33
+ @client.debug_dev = str
34
+ @client.get(serverurl)
35
+ lines = str.split(/(?:\r?\n)+/)
36
+ assert_equal("= Request", lines[0])
37
+ assert_match(/^User-Agent: agent_name_foo \(#{HTTPClient::VERSION}/, lines[4])
38
+ end
39
+
40
+ def test_from
41
+ @client = HTTPClient.new(nil, nil, "from_bar")
42
+ str = ""
43
+ @client.debug_dev = str
44
+ @client.get(serverurl)
45
+ lines = str.split(/(?:\r?\n)+/)
46
+ assert_equal("= Request", lines[0])
47
+ assert_match(/^From: from_bar/, lines[5])
48
+ end
49
+
50
+ def test_debug_dev
51
+ str = ""
52
+ @client.debug_dev = str
53
+ assert_equal(str.object_id, @client.debug_dev.object_id)
54
+ assert(str.empty?)
55
+ @client.get(serverurl)
56
+ assert(!str.empty?)
57
+ end
58
+
59
+ def test_debug_dev_stream
60
+ str = ""
61
+ @client.debug_dev = str
62
+ conn = @client.get_async(serverurl)
63
+ Thread.pass while !conn.finished?
64
+ assert(!str.empty?)
65
+ end
66
+
67
+ def test_protocol_version_http09
68
+ @client.protocol_version = 'HTTP/0.9'
69
+ @client.debug_dev = str = ''
70
+ @client.test_loopback_http_response << "hello\nworld\n"
71
+ res = @client.get(serverurl + 'hello')
72
+ assert_equal('0.9', res.http_version)
73
+ assert_equal(nil, res.status)
74
+ assert_equal(nil, res.reason)
75
+ assert_equal("hello\nworld\n", res.content)
76
+ lines = str.split(/(?:\r?\n)+/)
77
+ assert_equal("= Request", lines[0])
78
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
79
+ assert_equal("GET /hello HTTP/0.9", lines[3])
80
+ assert_equal("Connection: close", lines[7])
81
+ assert_equal("= Response", lines[8])
82
+ assert_match(/^hello$/, lines[9])
83
+ assert_match(/^world$/, lines[10])
84
+ end
85
+
86
+ def test_protocol_version_http10
87
+ assert_equal(nil, @client.protocol_version)
88
+ @client.protocol_version = 'HTTP/1.0'
89
+ assert_equal('HTTP/1.0', @client.protocol_version)
90
+ str = ""
91
+ @client.debug_dev = str
92
+ @client.get(serverurl + 'hello')
93
+ lines = str.split(/(?:\r?\n)+/)
94
+ assert_equal("= Request", lines[0])
95
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
96
+ assert_equal("GET /hello HTTP/1.0", lines[3])
97
+ assert_equal("Connection: close", lines[7])
98
+ assert_equal("= Response", lines[8])
99
+ end
100
+
101
+ def test_header_accept_by_default
102
+ str = ""
103
+ @client.debug_dev = str
104
+ @client.get(serverurl)
105
+ lines = str.split(/(?:\r?\n)+/)
106
+ assert_equal("Accept: */*", lines[5])
107
+ end
108
+
109
+ def test_header_accept
110
+ str = ""
111
+ @client.debug_dev = str
112
+ @client.get(serverurl, :header => {:Accept => 'text/html'})
113
+ lines = str.split(/(?:\r?\n)+/)
114
+ assert_equal("Accept: text/html", lines[4])
115
+ end
116
+
117
+ def test_host_given
118
+ str = ""
119
+ @client.debug_dev = str
120
+ @client.get(serverurl)
121
+ lines = str.split(/(?:\r?\n)+/)
122
+ assert_equal("= Request", lines[0])
123
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
124
+ assert_equal("GET / HTTP/1.1", lines[3])
125
+ assert_equal("Host: localhost:#{serverport}", lines[7])
126
+ #
127
+ @client.reset_all
128
+ str = ""
129
+ @client.debug_dev = str
130
+ @client.get(serverurl, nil, {'Host' => 'foo'})
131
+ lines = str.split(/(?:\r?\n)+/)
132
+ assert_equal("= Request", lines[0])
133
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
134
+ assert_equal("GET / HTTP/1.1", lines[3])
135
+ assert_equal("Host: foo", lines[4]) # use given param
136
+ end
137
+
138
+ def test_redirect_returns_not_modified
139
+ assert_nothing_raised do
140
+ timeout(2) do
141
+ @client.get(serverurl + 'status', {:status => 306}, {:follow_redirect => true})
142
+ end
143
+ end
144
+ end
145
+
146
+ def test_protocol_version_http11
147
+ assert_equal(nil, @client.protocol_version)
148
+ str = ""
149
+ @client.debug_dev = str
150
+ @client.get(serverurl)
151
+ lines = str.split(/(?:\r?\n)+/)
152
+ assert_equal("= Request", lines[0])
153
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
154
+ assert_equal("GET / HTTP/1.1", lines[3])
155
+ assert_equal("Host: localhost:#{serverport}", lines[7])
156
+ @client.protocol_version = 'HTTP/1.1'
157
+ assert_equal('HTTP/1.1', @client.protocol_version)
158
+ str = ""
159
+ @client.debug_dev = str
160
+ @client.get(serverurl)
161
+ lines = str.split(/(?:\r?\n)+/)
162
+ assert_equal("= Request", lines[0])
163
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
164
+ assert_equal("GET / HTTP/1.1", lines[3])
165
+ @client.protocol_version = 'HTTP/1.0'
166
+ str = ""
167
+ @client.debug_dev = str
168
+ @client.get(serverurl)
169
+ lines = str.split(/(?:\r?\n)+/)
170
+ assert_equal("= Request", lines[0])
171
+ assert_equal("! CONNECTION ESTABLISHED", lines[2])
172
+ assert_equal("GET / HTTP/1.0", lines[3])
173
+ end
174
+
175
+ def test_proxy
176
+ setup_proxyserver
177
+ escape_noproxy do
178
+ begin
179
+ @client.proxy = "http://"
180
+ rescue
181
+ assert_match(/InvalidURIError/, $!.class.to_s)
182
+ end
183
+ @client.proxy = ""
184
+ assert_nil(@client.proxy)
185
+ @client.proxy = "http://admin:admin@foo:1234"
186
+ assert_equal(urify("http://admin:admin@foo:1234"), @client.proxy)
187
+ uri = urify("http://bar:2345")
188
+ @client.proxy = uri
189
+ assert_equal(uri, @client.proxy)
190
+ #
191
+ @proxyio.string = ""
192
+ @client.proxy = nil
193
+ assert_equal(200, @client.head(serverurl).status)
194
+ assert(/accept/ !~ @proxyio.string)
195
+ #
196
+ @proxyio.string = ""
197
+ @client.proxy = proxyurl
198
+ @client.debug_dev = str = ""
199
+ assert_equal(200, @client.head(serverurl).status)
200
+ assert(/accept/ =~ @proxyio.string)
201
+ assert(/Host: localhost:#{serverport}/ =~ str)
202
+ end
203
+ end
204
+
205
+ def test_host_header
206
+ @client.proxy = proxyurl
207
+ @client.debug_dev = str = ""
208
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
209
+ assert_equal(200, @client.head('http://www.example.com/foo').status)
210
+ # ensure no ':80' is added. some servers dislike that.
211
+ assert(/\r\nHost: www\.example\.com\r\n/ =~ str)
212
+ #
213
+ @client.debug_dev = str = ""
214
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
215
+ assert_equal(200, @client.head('http://www.example.com:12345/foo').status)
216
+ # ensure ':12345' exists.
217
+ assert(/\r\nHost: www\.example\.com:12345\r\n/ =~ str)
218
+ end
219
+
220
+ def test_proxy_env
221
+ setup_proxyserver
222
+ escape_env do
223
+ ENV['http_proxy'] = "http://admin:admin@foo:1234"
224
+ ENV['NO_PROXY'] = "foobar"
225
+ client = HTTPClient.new
226
+ assert_equal(urify("http://admin:admin@foo:1234"), client.proxy)
227
+ assert_equal('foobar', client.no_proxy)
228
+ end
229
+ end
230
+
231
+ def test_proxy_env_cgi
232
+ setup_proxyserver
233
+ escape_env do
234
+ ENV['REQUEST_METHOD'] = 'GET' # CGI environment emulation
235
+ ENV['http_proxy'] = "http://admin:admin@foo:1234"
236
+ ENV['no_proxy'] = "foobar"
237
+ client = HTTPClient.new
238
+ assert_equal(nil, client.proxy)
239
+ ENV['CGI_HTTP_PROXY'] = "http://admin:admin@foo:1234"
240
+ client = HTTPClient.new
241
+ assert_equal(urify("http://admin:admin@foo:1234"), client.proxy)
242
+ end
243
+ end
244
+
245
+ def test_empty_proxy_env
246
+ setup_proxyserver
247
+ escape_env do
248
+ ENV['http_proxy'] = ""
249
+ client = HTTPClient.new
250
+ assert_equal(nil, client.proxy)
251
+ end
252
+ end
253
+
254
+ def test_noproxy_for_localhost
255
+ @proxyio.string = ""
256
+ @client.proxy = proxyurl
257
+ assert_equal(200, @client.head(serverurl).status)
258
+ assert(/accept/ !~ @proxyio.string)
259
+ end
260
+
261
+ def test_no_proxy
262
+ setup_proxyserver
263
+ escape_noproxy do
264
+ # proxy is not set.
265
+ assert_equal(nil, @client.no_proxy)
266
+ @client.no_proxy = 'localhost'
267
+ assert_equal('localhost', @client.no_proxy)
268
+ @proxyio.string = ""
269
+ @client.proxy = nil
270
+ assert_equal(200, @client.head(serverurl).status)
271
+ assert(/accept/ !~ @proxyio.string)
272
+ #
273
+ @proxyio.string = ""
274
+ @client.proxy = proxyurl
275
+ assert_equal(200, @client.head(serverurl).status)
276
+ assert(/accept/ !~ @proxyio.string)
277
+ #
278
+ @client.no_proxy = 'foobar'
279
+ @proxyio.string = ""
280
+ @client.proxy = proxyurl
281
+ assert_equal(200, @client.head(serverurl).status)
282
+ assert(/accept/ =~ @proxyio.string)
283
+ #
284
+ @client.no_proxy = 'foobar,localhost:baz'
285
+ @proxyio.string = ""
286
+ @client.proxy = proxyurl
287
+ assert_equal(200, @client.head(serverurl).status)
288
+ assert(/accept/ !~ @proxyio.string)
289
+ #
290
+ @client.no_proxy = 'foobar,localhost:443'
291
+ @proxyio.string = ""
292
+ @client.proxy = proxyurl
293
+ assert_equal(200, @client.head(serverurl).status)
294
+ assert(/accept/ =~ @proxyio.string)
295
+ #
296
+ @client.no_proxy = "foobar,localhost:443:localhost:#{serverport},baz"
297
+ @proxyio.string = ""
298
+ @client.proxy = proxyurl
299
+ assert_equal(200, @client.head(serverurl).status)
300
+ assert(/accept/ !~ @proxyio.string)
301
+ end
302
+ end
303
+
304
+ def test_no_proxy_with_initial_dot
305
+ @client.debug_dev = str = ""
306
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
307
+ @client.no_proxy = ''
308
+ @client.proxy = proxyurl
309
+ @client.head('http://www.foo.com')
310
+ assert(/CONNECT TO localhost/ =~ str, 'via proxy')
311
+ #
312
+ @client.debug_dev = str = ""
313
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
314
+ @client.no_proxy = '.foo.com'
315
+ @client.proxy = proxyurl
316
+ @client.head('http://www.foo.com')
317
+ assert(/CONNECT TO www.foo.com/ =~ str, 'no proxy because .foo.com matches with www.foo.com')
318
+ #
319
+ @client.debug_dev = str = ""
320
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
321
+ @client.no_proxy = '.foo.com'
322
+ @client.proxy = proxyurl
323
+ @client.head('http://foo.com')
324
+ assert(/CONNECT TO localhost/ =~ str, 'via proxy because .foo.com does not matche with foo.com')
325
+ #
326
+ @client.debug_dev = str = ""
327
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\r\n\r\n"
328
+ @client.no_proxy = 'foo.com'
329
+ @client.proxy = proxyurl
330
+ @client.head('http://foo.com')
331
+ assert(/CONNECT TO foo.com/ =~ str, 'no proxy because foo.com matches with foo.com')
332
+ end
333
+
334
+ def test_cookie_update_while_authentication
335
+ escape_noproxy do
336
+ @client.test_loopback_http_response << <<EOS
337
+ HTTP/1.0 401\r
338
+ Date: Fri, 19 Dec 2008 11:57:29 GMT\r
339
+ Content-Type: text/plain\r
340
+ Content-Length: 0\r
341
+ WWW-Authenticate: Basic realm="hello"\r
342
+ Set-Cookie: foo=bar; path=/; domain=.example.org; expires=#{Time.at(1924873200).httpdate}\r
343
+ \r
344
+ EOS
345
+ @client.test_loopback_http_response << <<EOS
346
+ HTTP/1.1 200 OK\r
347
+ Content-Length: 5\r
348
+ Connection: close\r
349
+ \r
350
+ hello
351
+ EOS
352
+ @client.debug_dev = str = ''
353
+ @client.set_auth("http://www.example.org/baz/", 'admin', 'admin')
354
+ assert_equal('hello', @client.get('http://www.example.org/baz/foo').content)
355
+ assert_match(/^Cookie: foo=bar/, str)
356
+ assert_match(/^Authorization: Basic YWRtaW46YWRtaW4=/, str)
357
+ end
358
+ end
359
+
360
+
361
+ def test_proxy_ssl
362
+ escape_noproxy do
363
+ @client.proxy = 'http://admin:admin@localhost:8080/'
364
+ # disconnected at initial 'CONNECT' so there're 2 loopback responses
365
+ @client.test_loopback_http_response << <<EOS
366
+ HTTP/1.0 407 Proxy Authentication Required\r
367
+ Date: Fri, 19 Dec 2008 11:57:29 GMT\r
368
+ Content-Type: text/plain\r
369
+ Content-Length: 0\r
370
+ Proxy-Authenticate: Basic realm="hello"\r
371
+ Proxy-Connection: close\r
372
+ \r
373
+ EOS
374
+ @client.test_loopback_http_response << <<EOS
375
+ HTTP/1.0 200 Connection established\r
376
+ \r
377
+ HTTP/1.1 200 OK\r
378
+ Content-Length: 5\r
379
+ Connection: close\r
380
+ \r
381
+ hello
382
+ EOS
383
+ assert_equal('hello', @client.get('https://localhost:17171/baz').content)
384
+ end
385
+ end
386
+
387
+ def test_loopback_response
388
+ @client.test_loopback_response << 'message body 1'
389
+ @client.test_loopback_response << 'message body 2'
390
+ assert_equal('message body 1', @client.get_content('http://somewhere'))
391
+ assert_equal('message body 2', @client.get_content('http://somewhere'))
392
+ #
393
+ @client.debug_dev = str = ''
394
+ @client.test_loopback_response << 'message body 3'
395
+ assert_equal('message body 3', @client.get_content('http://somewhere'))
396
+ assert_match(/message body 3/, str)
397
+ end
398
+
399
+ def test_loopback_response_stream
400
+ @client.test_loopback_response << 'message body 1'
401
+ @client.test_loopback_response << 'message body 2'
402
+ conn = @client.get_async('http://somewhere')
403
+ Thread.pass while !conn.finished?
404
+ assert_equal('message body 1', conn.pop.content.read)
405
+ conn = @client.get_async('http://somewhere')
406
+ Thread.pass while !conn.finished?
407
+ assert_equal('message body 2', conn.pop.content.read)
408
+ end
409
+
410
+ def test_loopback_http_response
411
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\ncontent-length: 100\n\nmessage body 1"
412
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\ncontent-length: 100\n\nmessage body 2"
413
+ assert_equal('message body 1', @client.get_content('http://somewhere'))
414
+ assert_equal('message body 2', @client.get_content('http://somewhere'))
415
+ end
416
+
417
+ def test_multiline_header
418
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\nX-Foo: XXX\n YYY\nX-Bar: \n XXX\n\tYYY\ncontent-length: 100\n\nmessage body 1"
419
+ res = @client.get('http://somewhere')
420
+ assert_equal('message body 1', res.content)
421
+ assert_equal(['XXX YYY'], res.header['x-foo'])
422
+ assert_equal(['XXX YYY'], res.header['x-bar'])
423
+ end
424
+
425
+ def test_broken_header
426
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\nXXXXX\ncontent-length: 100\n\nmessage body 1"
427
+ res = @client.get('http://somewhere')
428
+ assert_equal('message body 1', res.content)
429
+ end
430
+
431
+ def test_request_uri_in_response
432
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\ncontent-length: 100\n\nmessage body"
433
+ assert_equal(urify('http://google.com/'), @client.get('http://google.com/').header.request_uri)
434
+ end
435
+
436
+ def test_request_uri_in_response_when_redirect
437
+ expected = urify(serverurl + 'hello')
438
+ assert_equal(expected, @client.get(serverurl + 'redirect1', :follow_redirect => true).header.request_uri)
439
+ assert_equal(expected, @client.get(serverurl + 'redirect2', :follow_redirect => true).header.request_uri)
440
+ end
441
+
442
+ def test_redirect_non_https
443
+ url = serverurl + 'redirect1'
444
+ https_url = urify(url)
445
+ https_url.scheme = 'https'
446
+ #
447
+ redirect_to_http = "HTTP/1.0 302 OK\nLocation: #{url}\n\n"
448
+ redirect_to_https = "HTTP/1.0 302 OK\nLocation: #{https_url}\n\n"
449
+ #
450
+ # https -> http is denied
451
+ @client.test_loopback_http_response << redirect_to_http
452
+ assert_raises(HTTPClient::BadResponseError) do
453
+ @client.get_content(https_url)
454
+ end
455
+ #
456
+ # http -> http is OK
457
+ @client.reset_all
458
+ @client.test_loopback_http_response << redirect_to_http
459
+ assert_equal('hello', @client.get_content(url))
460
+ #
461
+ # http -> https is OK
462
+ @client.reset_all
463
+ @client.test_loopback_http_response << redirect_to_https
464
+ assert_raises(OpenSSL::SSL::SSLError) do
465
+ # trying to normal endpoint with SSL -> SSL negotiation failure
466
+ @client.get_content(url)
467
+ end
468
+ #
469
+ # https -> https is OK
470
+ @client.reset_all
471
+ @client.test_loopback_http_response << redirect_to_https
472
+ assert_raises(OpenSSL::SSL::SSLError) do
473
+ # trying to normal endpoint with SSL -> SSL negotiation failure
474
+ @client.get_content(https_url)
475
+ end
476
+ #
477
+ # https -> http with strict_redirect_uri_callback
478
+ @client.redirect_uri_callback = @client.method(:strict_redirect_uri_callback)
479
+ @client.test_loopback_http_response << redirect_to_http
480
+ assert_raises(HTTPClient::BadResponseError) do
481
+ @client.get_content(https_url)
482
+ end
483
+ end
484
+
485
+ def test_redirect_see_other
486
+ assert_equal('hello', @client.post_content(serverurl + 'redirect_see_other'))
487
+ end
488
+
489
+ def test_redirect_relative
490
+ @client.test_loopback_http_response << "HTTP/1.0 302 OK\nLocation: hello\n\n"
491
+ silent do
492
+ assert_equal('hello', @client.get_content(serverurl + 'redirect1'))
493
+ end
494
+ #
495
+ @client.reset_all
496
+ @client.redirect_uri_callback = @client.method(:strict_redirect_uri_callback)
497
+ assert_equal('hello', @client.get_content(serverurl + 'redirect1'))
498
+ @client.reset_all
499
+ @client.test_loopback_http_response << "HTTP/1.0 302 OK\nLocation: hello\n\n"
500
+ begin
501
+ @client.get_content(serverurl + 'redirect1')
502
+ assert(false)
503
+ rescue HTTPClient::BadResponseError => e
504
+ assert_equal(302, e.res.status)
505
+ end
506
+ end
507
+
508
+ def test_redirect_https_relative
509
+ url = serverurl + 'redirect1'
510
+ https_url = urify(url)
511
+ https_url.scheme = 'https'
512
+ @client.test_loopback_http_response << "HTTP/1.0 302 OK\nLocation: /foo\n\n"
513
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\n\nhello"
514
+ silent do
515
+ assert_equal('hello', @client.get_content(https_url))
516
+ end
517
+ end
518
+
519
+ def test_no_content
520
+ assert_nothing_raised do
521
+ timeout(2) do
522
+ @client.get(serverurl + 'status', :status => 101)
523
+ @client.get(serverurl + 'status', :status => 204)
524
+ @client.get(serverurl + 'status', :status => 304)
525
+ end
526
+ end
527
+ end
528
+
529
+ def test_get_content
530
+ assert_equal('hello', @client.get_content(serverurl + 'hello'))
531
+ assert_equal('hello', @client.get_content(serverurl + 'redirect1'))
532
+ assert_equal('hello', @client.get_content(serverurl + 'redirect2'))
533
+ url = serverurl.sub(/localhost/, '127.0.0.1')
534
+ assert_equal('hello', @client.get_content(url + 'hello'))
535
+ assert_equal('hello', @client.get_content(url + 'redirect1'))
536
+ assert_equal('hello', @client.get_content(url + 'redirect2'))
537
+ @client.reset(serverurl)
538
+ @client.reset(url)
539
+ @client.reset(serverurl)
540
+ @client.reset(url)
541
+ assert_raises(HTTPClient::BadResponseError) do
542
+ @client.get_content(serverurl + 'notfound')
543
+ end
544
+ assert_raises(HTTPClient::BadResponseError) do
545
+ @client.get_content(serverurl + 'redirect_self')
546
+ end
547
+ called = false
548
+ @client.redirect_uri_callback = lambda { |uri, res|
549
+ newuri = res.header['location'][0]
550
+ called = true
551
+ newuri
552
+ }
553
+ assert_equal('hello', @client.get_content(serverurl + 'relative_redirect'))
554
+ assert(called)
555
+ end
556
+
557
+ GZIP_CONTENT = "\x1f\x8b\x08\x00\x1a\x96\xe0\x4c\x00\x03\xcb\x48\xcd\xc9\xc9\x07\x00\x86\xa6\x10\x36\x05\x00\x00\x00"
558
+ DEFLATE_CONTENT = "\x78\x9c\xcb\x48\xcd\xc9\xc9\x07\x00\x06\x2c\x02\x15"
559
+ GZIP_CONTENT.force_encoding('BINARY') if GZIP_CONTENT.respond_to?(:force_encoding)
560
+ DEFLATE_CONTENT.force_encoding('BINARY') if DEFLATE_CONTENT.respond_to?(:force_encoding)
561
+ def test_get_gzipped_content
562
+ @client.transparent_gzip_decompression = false
563
+ content = @client.get_content(serverurl + 'compressed?enc=gzip')
564
+ assert_not_equal('hello', content)
565
+ assert_equal(GZIP_CONTENT, content)
566
+ @client.transparent_gzip_decompression = true
567
+ assert_equal('hello', @client.get_content(serverurl + 'compressed?enc=gzip'))
568
+ assert_equal('hello', @client.get_content(serverurl + 'compressed?enc=deflate'))
569
+ @client.transparent_gzip_decompression = false
570
+ end
571
+
572
+ def test_get_content_with_block
573
+ @client.get_content(serverurl + 'hello') do |str|
574
+ assert_equal('hello', str)
575
+ end
576
+ @client.get_content(serverurl + 'redirect1') do |str|
577
+ assert_equal('hello', str)
578
+ end
579
+ @client.get_content(serverurl + 'redirect2') do |str|
580
+ assert_equal('hello', str)
581
+ end
582
+ end
583
+
584
+ def test_post_content
585
+ assert_equal('hello', @client.post_content(serverurl + 'hello'))
586
+ assert_equal('hello', @client.post_content(serverurl + 'redirect1'))
587
+ assert_equal('hello', @client.post_content(serverurl + 'redirect2'))
588
+ assert_raises(HTTPClient::BadResponseError) do
589
+ @client.post_content(serverurl + 'notfound')
590
+ end
591
+ assert_raises(HTTPClient::BadResponseError) do
592
+ @client.post_content(serverurl + 'redirect_self')
593
+ end
594
+ called = false
595
+ @client.redirect_uri_callback = lambda { |uri, res|
596
+ newuri = res.header['location'][0]
597
+ called = true
598
+ newuri
599
+ }
600
+ assert_equal('hello', @client.post_content(serverurl + 'relative_redirect'))
601
+ assert(called)
602
+ end
603
+
604
+ def test_post_content_io
605
+ post_body = StringIO.new("1234567890")
606
+ assert_equal('post,1234567890', @client.post_content(serverurl + 'servlet', post_body))
607
+ post_body = StringIO.new("1234567890")
608
+ assert_equal('post,1234567890', @client.post_content(serverurl + 'servlet_redirect', post_body))
609
+ #
610
+ post_body = StringIO.new("1234567890")
611
+ post_body.read(5)
612
+ assert_equal('post,67890', @client.post_content(serverurl + 'servlet_redirect', post_body))
613
+ end
614
+
615
+ def test_head
616
+ assert_equal("head", @client.head(serverurl + 'servlet').header["x-head"][0])
617
+ param = {'1'=>'2', '3'=>'4'}
618
+ res = @client.head(serverurl + 'servlet', param)
619
+ assert_equal(param, params(res.header["x-query"][0]))
620
+ end
621
+
622
+ def test_head_async
623
+ param = {'1'=>'2', '3'=>'4'}
624
+ conn = @client.head_async(serverurl + 'servlet', param)
625
+ Thread.pass while !conn.finished?
626
+ res = conn.pop
627
+ assert_equal(param, params(res.header["x-query"][0]))
628
+ end
629
+
630
+ def test_get
631
+ assert_equal("get", @client.get(serverurl + 'servlet').content)
632
+ param = {'1'=>'2', '3'=>'4'}
633
+ res = @client.get(serverurl + 'servlet', param)
634
+ assert_equal(param, params(res.header["x-query"][0]))
635
+ assert_nil(res.contenttype)
636
+ #
637
+ url = serverurl.to_s + 'servlet?5=6&7=8'
638
+ res = @client.get(url, param)
639
+ assert_equal(param.merge("5"=>"6", "7"=>"8"), params(res.header["x-query"][0]))
640
+ assert_nil(res.contenttype)
641
+ end
642
+
643
+ def test_head_follow_redirect
644
+ expected = urify(serverurl + 'hello')
645
+ assert_equal(expected, @client.head(serverurl + 'hello', :follow_redirect => true).header.request_uri)
646
+ assert_equal(expected, @client.head(serverurl + 'redirect1', :follow_redirect => true).header.request_uri)
647
+ assert_equal(expected, @client.head(serverurl + 'redirect2', :follow_redirect => true).header.request_uri)
648
+ end
649
+
650
+ def test_get_follow_redirect
651
+ assert_equal('hello', @client.get(serverurl + 'hello', :follow_redirect => true).body)
652
+ assert_equal('hello', @client.get(serverurl + 'redirect1', :follow_redirect => true).body)
653
+ assert_equal('hello', @client.get(serverurl + 'redirect2', :follow_redirect => true).body)
654
+ end
655
+
656
+ def test_get_async
657
+ param = {'1'=>'2', '3'=>'4'}
658
+ conn = @client.get_async(serverurl + 'servlet', param)
659
+ Thread.pass while !conn.finished?
660
+ res = conn.pop
661
+ assert_equal(param, params(res.header["x-query"][0]))
662
+ end
663
+
664
+ def test_get_async_for_largebody
665
+ conn = @client.get_async(serverurl + 'largebody')
666
+ res = conn.pop
667
+ assert_equal(1000*1000, res.content.read.length)
668
+ end
669
+
670
+ def test_get_with_block
671
+ called = false
672
+ res = @client.get(serverurl + 'servlet') { |str|
673
+ assert_equal('get', str)
674
+ called = true
675
+ }
676
+ assert(called)
677
+ # res does not have a content
678
+ assert_nil(res.content)
679
+ end
680
+
681
+ def test_get_with_block_chunk_string_recycle
682
+ @client.read_block_size = 2
683
+ body = []
684
+ res = @client.get(serverurl + 'servlet') { |str|
685
+ body << str
686
+ }
687
+ assert_equal(2, body.size)
688
+ assert_equal("get", body.join) # Was "tt" by String object recycle...
689
+ end
690
+
691
+ def test_post
692
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4])
693
+ param = {'1'=>'2', '3'=>'4'}
694
+ res = @client.post(serverurl + 'servlet', param)
695
+ assert_equal(param, params(res.header["x-query"][0]))
696
+ end
697
+
698
+ def test_post_follow_redirect
699
+ assert_equal('hello', @client.post(serverurl + 'hello', :follow_redirect => true).body)
700
+ assert_equal('hello', @client.post(serverurl + 'redirect1', :follow_redirect => true).body)
701
+ assert_equal('hello', @client.post(serverurl + 'redirect2', :follow_redirect => true).body)
702
+ end
703
+
704
+ def test_post_with_content_type
705
+ param = [['1', '2'], ['3', '4']]
706
+ ext = {'content-type' => 'application/x-www-form-urlencoded', 'hello' => 'world'}
707
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4], ext)
708
+ res = @client.post(serverurl + 'servlet', param, ext)
709
+ assert_equal(Hash[param], params(res.header["x-query"][0]))
710
+ #
711
+ ext = [['content-type', 'multipart/form-data'], ['hello', 'world']]
712
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4], ext)
713
+ res = @client.post(serverurl + 'servlet', param, ext)
714
+ assert_match(/Content-Disposition: form-data; name="1"/, res.content)
715
+ assert_match(/Content-Disposition: form-data; name="3"/, res.content)
716
+ #
717
+ ext = {'content-type' => 'multipart/form-data; boundary=hello'}
718
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4], ext)
719
+ res = @client.post(serverurl + 'servlet', param, ext)
720
+ assert_match(/Content-Disposition: form-data; name="1"/, res.content)
721
+ assert_match(/Content-Disposition: form-data; name="3"/, res.content)
722
+ assert_equal("post,--hello\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n2\r\n--hello\r\nContent-Disposition: form-data; name=\"3\"\r\n\r\n4\r\n--hello--\r\n\r\n", res.content)
723
+ end
724
+
725
+ def test_post_with_custom_multipart_and_boolean_params
726
+ param = [['boolean_true', true]]
727
+ ext = { 'content-type' => 'multipart/form-data' }
728
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4], ext)
729
+ res = @client.post(serverurl + 'servlet', param, ext)
730
+ assert_match(/Content-Disposition: form-data; name="boolean_true"\r\n\r\ntrue\r\n/, res.content)
731
+ #
732
+ param = [['boolean_false', false]]
733
+ res = @client.post(serverurl + 'servlet', param, ext)
734
+ assert_match(/Content-Disposition: form-data; name="boolean_false"\r\n\r\nfalse\r\n/, res.content)
735
+ #
736
+ param = [['nil', nil]]
737
+ res = @client.post(serverurl + 'servlet', param, ext)
738
+ assert_match(/Content-Disposition: form-data; name="nil"\r\n\r\n\r\n/, res.content)
739
+ end
740
+
741
+ def test_post_with_file
742
+ STDOUT.sync = true
743
+ File.open(__FILE__) do |file|
744
+ res = @client.post(serverurl + 'servlet', {1=>2, 3=>file})
745
+ assert_match(/^Content-Disposition: form-data; name="1"\r\n/nm, res.content)
746
+ assert_match(/^Content-Disposition: form-data; name="3";/, res.content)
747
+ assert_match(/FIND_TAG_IN_THIS_FILE/, res.content)
748
+ end
749
+ end
750
+
751
+ def test_post_with_file_without_size
752
+ STDOUT.sync = true
753
+ File.open(__FILE__) do |file|
754
+ def file.size
755
+ # Simulates some strange Windows behaviour
756
+ raise SystemCallError.new "Unknown Error (20047)"
757
+ end
758
+ assert_nothing_raised do
759
+ @client.post(serverurl + 'servlet', {1=>2, 3=>file})
760
+ end
761
+ end
762
+ end
763
+
764
+ def test_post_with_io # streaming, but not chunked
765
+ myio = StringIO.new("X" * (HTTP::Message::Body::DEFAULT_CHUNK_SIZE + 1))
766
+ def myio.read(*args)
767
+ @called ||= 0
768
+ @called += 1
769
+ super
770
+ end
771
+ def myio.called
772
+ @called
773
+ end
774
+ @client.debug_dev = str = StringIO.new
775
+ res = @client.post(serverurl + 'servlet', {1=>2, 3=>myio})
776
+ assert_match(/\r\nContent-Disposition: form-data; name="1"\r\n/m, res.content)
777
+ assert_match(/\r\n2\r\n/m, res.content)
778
+ assert_match(/\r\nContent-Disposition: form-data; name="3"; filename=""\r\n/m, res.content)
779
+ assert_match(/\r\nContent-Length:/m, str.string)
780
+ assert_equal(3, myio.called)
781
+ end
782
+
783
+ def test_post_with_io_nosize # streaming + chunked post
784
+ myio = StringIO.new("4")
785
+ def myio.size
786
+ nil
787
+ end
788
+ @client.debug_dev = str = StringIO.new
789
+ res = @client.post(serverurl + 'servlet', {1=>2, 3=>myio})
790
+ assert_match(/\r\nContent-Disposition: form-data; name="1"\r\n/m, res.content)
791
+ assert_match(/\r\n2\r\n/m, res.content)
792
+ assert_match(/\r\nContent-Disposition: form-data; name="3"; filename=""\r\n/m, res.content)
793
+ assert_match(/\r\n4\r\n/m, res.content)
794
+ assert_match(/\r\nTransfer-Encoding: chunked\r\n/m, str.string)
795
+ end
796
+
797
+ def test_post_async
798
+ param = {'1'=>'2', '3'=>'4'}
799
+ conn = @client.post_async(serverurl + 'servlet', param)
800
+ Thread.pass while !conn.finished?
801
+ res = conn.pop
802
+ assert_equal(param, params(res.header["x-query"][0]))
803
+ end
804
+
805
+ def test_post_with_block
806
+ called = false
807
+ res = @client.post(serverurl + 'servlet') { |str|
808
+ assert_equal('post,', str)
809
+ called = true
810
+ }
811
+ assert(called)
812
+ assert_nil(res.content)
813
+ #
814
+ called = false
815
+ param = [['1', '2'], ['3', '4']]
816
+ res = @client.post(serverurl + 'servlet', param) { |str|
817
+ assert_equal('post,1=2&3=4', str)
818
+ called = true
819
+ }
820
+ assert(called)
821
+ assert_equal('1=2&3=4', res.header["x-query"][0])
822
+ assert_nil(res.content)
823
+ end
824
+
825
+ def test_post_with_custom_multipart
826
+ ext = {'content-type' => 'multipart/form-data'}
827
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4], ext)
828
+ body = [{ 'Content-Disposition' => 'form-data; name="1"', :content => "2"},
829
+ { 'Content-Disposition' => 'form-data; name="3"', :content => "4"}]
830
+ res = @client.post(serverurl + 'servlet', body, ext)
831
+ assert_match(/Content-Disposition: form-data; name="1"/, res.content)
832
+ assert_match(/Content-Disposition: form-data; name="3"/, res.content)
833
+ #
834
+ ext = {'content-type' => 'multipart/form-data; boundary=hello'}
835
+ assert_equal("post", @client.post(serverurl + 'servlet').content[0, 4], ext)
836
+ res = @client.post(serverurl + 'servlet', body, ext)
837
+ assert_match(/Content-Disposition: form-data; name="1"/, res.content)
838
+ assert_match(/Content-Disposition: form-data; name="3"/, res.content)
839
+ assert_equal("post,--hello\r\nContent-Disposition: form-data; name=\"1\"\r\n\r\n2\r\n--hello\r\nContent-Disposition: form-data; name=\"3\"\r\n\r\n4\r\n--hello--\r\n\r\n", res.content)
840
+ end
841
+
842
+ def test_post_with_custom_multipart_and_file
843
+ STDOUT.sync = true
844
+ File.open(__FILE__) do |file|
845
+ ext = { 'Content-Type' => 'multipart/alternative' }
846
+ body = [{ 'Content-Type' => 'text/plain', :content => "this is only a test" },
847
+ { 'Content-Type' => 'application/x-ruby', :content => file }]
848
+ res = @client.post(serverurl + 'servlet', body, ext)
849
+ assert_match(/^Content-Type: text\/plain\r\n/m, res.content)
850
+ assert_match(/^this is only a test\r\n/m, res.content)
851
+ assert_match(/^Content-Type: application\/x-ruby\r\n/m, res.content)
852
+ assert_match(/FIND_TAG_IN_THIS_FILE/, res.content)
853
+ end
854
+ end
855
+
856
+ def test_put
857
+ assert_equal("put", @client.put(serverurl + 'servlet').content)
858
+ param = {'1'=>'2', '3'=>'4'}
859
+ @client.debug_dev = str = ''
860
+ res = @client.put(serverurl + 'servlet', param)
861
+ assert_equal(param, params(res.header["x-query"][0]))
862
+ assert_equal('Content-Type: application/x-www-form-urlencoded', str.split(/\r?\n/)[5])
863
+ end
864
+
865
+ def test_put_bytesize
866
+ res = @client.put(serverurl + 'servlet', 'txt' => 'あいうえお')
867
+ assert_equal('txt=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A', res.header["x-query"][0])
868
+ assert_equal('15', res.header["x-size"][0])
869
+ end
870
+
871
+ def test_put_async
872
+ param = {'1'=>'2', '3'=>'4'}
873
+ conn = @client.put_async(serverurl + 'servlet', param)
874
+ Thread.pass while !conn.finished?
875
+ res = conn.pop
876
+ assert_equal(param, params(res.header["x-query"][0]))
877
+ end
878
+
879
+ def test_delete
880
+ assert_equal("delete", @client.delete(serverurl + 'servlet').content)
881
+ end
882
+
883
+ # Not prohibited by spec, but normally it's ignored
884
+ def test_delete_with_body
885
+ param = {'1'=>'2', '3'=>'4'}
886
+ @client.debug_dev = str = ''
887
+ assert_equal("delete", @client.delete(serverurl + 'servlet', param).content)
888
+ assert_equal({'1' => ['2'], '3' => ['4']}, HTTP::Message.parse(str.split(/\r?\n\r?\n/)[2]))
889
+ end
890
+
891
+ def test_delete_async
892
+ conn = @client.delete_async(serverurl + 'servlet')
893
+ Thread.pass while !conn.finished?
894
+ res = conn.pop
895
+ assert_equal('delete', res.content.read)
896
+ end
897
+
898
+ def test_options
899
+ assert_equal("options", @client.options(serverurl + 'servlet').content)
900
+ end
901
+
902
+ def test_options_async
903
+ conn = @client.options_async(serverurl + 'servlet')
904
+ Thread.pass while !conn.finished?
905
+ res = conn.pop
906
+ assert_equal('options', res.content.read)
907
+ end
908
+
909
+ def test_propfind
910
+ assert_equal("propfind", @client.propfind(serverurl + 'servlet').content)
911
+ end
912
+
913
+ def test_propfind_async
914
+ conn = @client.propfind_async(serverurl + 'servlet')
915
+ Thread.pass while !conn.finished?
916
+ res = conn.pop
917
+ assert_equal('propfind', res.content.read)
918
+ end
919
+
920
+ def test_proppatch
921
+ assert_equal("proppatch", @client.proppatch(serverurl + 'servlet').content)
922
+ param = {'1'=>'2', '3'=>'4'}
923
+ res = @client.proppatch(serverurl + 'servlet', param)
924
+ assert_equal('proppatch', res.content)
925
+ assert_equal(param, params(res.header["x-query"][0]))
926
+ end
927
+
928
+ def test_proppatch_async
929
+ param = {'1'=>'2', '3'=>'4'}
930
+ conn = @client.proppatch_async(serverurl + 'servlet', param)
931
+ Thread.pass while !conn.finished?
932
+ res = conn.pop
933
+ assert_equal('proppatch', res.content.read)
934
+ assert_equal(param, params(res.header["x-query"][0]))
935
+ end
936
+
937
+ def test_trace
938
+ assert_equal("trace", @client.trace(serverurl + 'servlet').content)
939
+ param = {'1'=>'2', '3'=>'4'}
940
+ res = @client.trace(serverurl + 'servlet', param)
941
+ assert_equal(param, params(res.header["x-query"][0]))
942
+ end
943
+
944
+ def test_trace_async
945
+ param = {'1'=>'2', '3'=>'4'}
946
+ conn = @client.trace_async(serverurl + 'servlet', param)
947
+ Thread.pass while !conn.finished?
948
+ res = conn.pop
949
+ assert_equal(param, params(res.header["x-query"][0]))
950
+ end
951
+
952
+ def test_chunked
953
+ assert_equal('chunked', @client.get_content(serverurl + 'chunked', { 'msg' => 'chunked' }))
954
+ assert_equal('あいうえお', @client.get_content(serverurl + 'chunked', { 'msg' => 'あいうえお' }))
955
+ end
956
+
957
+ def test_chunked_empty
958
+ assert_equal('', @client.get_content(serverurl + 'chunked', { 'msg' => '' }))
959
+ end
960
+
961
+ def test_get_query
962
+ assert_equal({'1'=>'2'}, check_query_get({1=>2}))
963
+ assert_equal({'a'=>'A', 'B'=>'b'}, check_query_get({"a"=>"A", "B"=>"b"}))
964
+ assert_equal({'&'=>'&'}, check_query_get({"&"=>"&"}))
965
+ assert_equal({'= '=>' =+'}, check_query_get({"= "=>" =+"}))
966
+ assert_equal(
967
+ ['=', '&'].sort,
968
+ check_query_get([["=", "="], ["=", "&"]])['='].to_ary.sort
969
+ )
970
+ assert_equal({'123'=>'45'}, check_query_get('123=45'))
971
+ assert_equal({'12 3'=>'45', ' '=>' '}, check_query_get('12+3=45&+=+'))
972
+ assert_equal({}, check_query_get(''))
973
+ assert_equal({'1'=>'2'}, check_query_get({1=>StringIO.new('2')}))
974
+ assert_equal({'1'=>'2', '3'=>'4'}, check_query_get(StringIO.new('3=4&1=2')))
975
+
976
+ hash = check_query_get({"a"=>["A","a"], "B"=>"b"})
977
+ assert_equal({'a'=>'A', 'B'=>'b'}, hash)
978
+ assert_equal(['A','a'], hash['a'].to_ary)
979
+
980
+ hash = check_query_get({"a"=>WEBrick::HTTPUtils::FormData.new("A","a"), "B"=>"b"})
981
+ assert_equal({'a'=>'A', 'B'=>'b'}, hash)
982
+ assert_equal(['A','a'], hash['a'].to_ary)
983
+
984
+ hash = check_query_get({"a"=>[StringIO.new("A"),StringIO.new("a")], "B"=>StringIO.new("b")})
985
+ assert_equal({'a'=>'A', 'B'=>'b'}, hash)
986
+ assert_equal(['A','a'], hash['a'].to_ary)
987
+ end
988
+
989
+ def test_post_body
990
+ assert_equal({'1'=>'2'}, check_query_post({1=>2}))
991
+ assert_equal({'a'=>'A', 'B'=>'b'}, check_query_post({"a"=>"A", "B"=>"b"}))
992
+ assert_equal({'&'=>'&'}, check_query_post({"&"=>"&"}))
993
+ assert_equal({'= '=>' =+'}, check_query_post({"= "=>" =+"}))
994
+ assert_equal(
995
+ ['=', '&'].sort,
996
+ check_query_post([["=", "="], ["=", "&"]])['='].to_ary.sort
997
+ )
998
+ assert_equal({'123'=>'45'}, check_query_post('123=45'))
999
+ assert_equal({'12 3'=>'45', ' '=>' '}, check_query_post('12+3=45&+=+'))
1000
+ assert_equal({}, check_query_post(''))
1001
+ #
1002
+ post_body = StringIO.new("foo=bar&foo=baz")
1003
+ assert_equal(
1004
+ ["bar", "baz"],
1005
+ check_query_post(post_body)["foo"].to_ary.sort
1006
+ )
1007
+ end
1008
+
1009
+ def test_extra_headers
1010
+ str = ""
1011
+ @client.debug_dev = str
1012
+ @client.head(serverurl, nil, {"ABC" => "DEF"})
1013
+ lines = str.split(/(?:\r?\n)+/)
1014
+ assert_equal("= Request", lines[0])
1015
+ assert_match("ABC: DEF", lines[4])
1016
+ #
1017
+ str = ""
1018
+ @client.debug_dev = str
1019
+ @client.get(serverurl, nil, [["ABC", "DEF"], ["ABC", "DEF"]])
1020
+ lines = str.split(/(?:\r?\n)+/)
1021
+ assert_equal("= Request", lines[0])
1022
+ assert_match("ABC: DEF", lines[4])
1023
+ assert_match("ABC: DEF", lines[5])
1024
+ end
1025
+
1026
+ def test_http_custom_date_header
1027
+ @client.debug_dev = (str = "")
1028
+ res = @client.get(serverurl + 'hello', :header => {'Date' => 'foo'})
1029
+ lines = str.split(/(?:\r?\n)+/)
1030
+ assert_equal('Date: foo', lines[4])
1031
+ end
1032
+
1033
+ def test_timeout
1034
+ assert_equal(60, @client.connect_timeout)
1035
+ assert_equal(120, @client.send_timeout)
1036
+ assert_equal(60, @client.receive_timeout)
1037
+ #
1038
+ @client.connect_timeout = 1
1039
+ @client.send_timeout = 2
1040
+ @client.receive_timeout = 3
1041
+ assert_equal(1, @client.connect_timeout)
1042
+ assert_equal(2, @client.send_timeout)
1043
+ assert_equal(3, @client.receive_timeout)
1044
+ end
1045
+
1046
+ def test_connect_timeout
1047
+ # ToDo
1048
+ end
1049
+
1050
+ def test_send_timeout
1051
+ # ToDo
1052
+ end
1053
+
1054
+ def test_receive_timeout
1055
+ # this test takes 2 sec
1056
+ assert_equal('hello', @client.get_content(serverurl + 'sleep?sec=2'))
1057
+ @client.receive_timeout = 1
1058
+ assert_equal('hello', @client.get_content(serverurl + 'sleep?sec=0'))
1059
+ assert_raise(HTTPClient::ReceiveTimeoutError) do
1060
+ @client.get_content(serverurl + 'sleep?sec=2')
1061
+ end
1062
+ @client.receive_timeout = 3
1063
+ assert_equal('hello', @client.get_content(serverurl + 'sleep?sec=2'))
1064
+ end
1065
+
1066
+ def test_receive_timeout_post
1067
+ # this test takes 2 sec
1068
+ assert_equal('hello', @client.post(serverurl + 'sleep', :sec => 2).content)
1069
+ @client.receive_timeout = 1
1070
+ assert_equal('hello', @client.post(serverurl + 'sleep', :sec => 0).content)
1071
+ assert_raise(HTTPClient::ReceiveTimeoutError) do
1072
+ @client.post(serverurl + 'sleep', :sec => 2)
1073
+ end
1074
+ @client.receive_timeout = 3
1075
+ assert_equal('hello', @client.post(serverurl + 'sleep', :sec => 2).content)
1076
+ end
1077
+
1078
+ def test_reset
1079
+ url = serverurl + 'servlet'
1080
+ assert_nothing_raised do
1081
+ 5.times do
1082
+ @client.get(url)
1083
+ @client.reset(url)
1084
+ end
1085
+ end
1086
+ end
1087
+
1088
+ def test_reset_all
1089
+ assert_nothing_raised do
1090
+ 5.times do
1091
+ @client.get(serverurl + 'servlet')
1092
+ @client.reset_all
1093
+ end
1094
+ end
1095
+ end
1096
+
1097
+ def test_cookies
1098
+ cookiefile = File.join(File.dirname(File.expand_path(__FILE__)), 'test_cookies_file')
1099
+ File.open(cookiefile, "wb") do |f|
1100
+ f << "http://rubyforge.org/account/login.php\tsession_ser\tLjEwMy45Ni40Ni0q%2A-fa0537de8cc31\t2000000000\t.rubyforge.org\t/\t13\n"
1101
+ end
1102
+ @client.set_cookie_store(cookiefile)
1103
+ cookie = @client.cookie_manager.cookies.first
1104
+ url = cookie.url
1105
+ assert(cookie.domain_match(url.host, cookie.domain))
1106
+ #
1107
+ @client.reset_all
1108
+ @client.test_loopback_http_response << "HTTP/1.0 200 OK\nSet-Cookie: foo=bar; expires=#{Time.at(1924873200).gmtime.httpdate}\n\nOK"
1109
+ @client.get_content('http://rubyforge.org/account/login.php')
1110
+ @client.save_cookie_store
1111
+ str = File.read(cookiefile)
1112
+ assert_match(%r(http://rubyforge.org/account/login.php\tfoo\tbar\t1924873200\trubyforge.org\t/account\t1), str)
1113
+ File.unlink(cookiefile)
1114
+ end
1115
+
1116
+ def test_eof_error_length
1117
+ io = StringIO.new('')
1118
+ def io.gets(*arg)
1119
+ @buf ||= ["HTTP/1.0 200 OK\n", "content-length: 123\n", "\n"]
1120
+ @buf.shift
1121
+ end
1122
+ def io.readpartial(size, buf)
1123
+ @second ||= false
1124
+ if !@second
1125
+ @second = '1st'
1126
+ buf << "abc"
1127
+ buf
1128
+ elsif @second == '1st'
1129
+ @second = '2nd'
1130
+ raise EOFError.new
1131
+ else
1132
+ raise Exception.new
1133
+ end
1134
+ end
1135
+ def io.eof?
1136
+ true
1137
+ end
1138
+ @client.test_loopback_http_response << io
1139
+ assert_nothing_raised do
1140
+ @client.get('http://foo/bar')
1141
+ end
1142
+ end
1143
+
1144
+ def test_eof_error_rest
1145
+ io = StringIO.new('')
1146
+ def io.gets(*arg)
1147
+ @buf ||= ["HTTP/1.0 200 OK\n", "\n"]
1148
+ @buf.shift
1149
+ end
1150
+ def io.readpartial(size, buf)
1151
+ @second ||= false
1152
+ if !@second
1153
+ @second = '1st'
1154
+ buf << "abc"
1155
+ buf
1156
+ elsif @second == '1st'
1157
+ @second = '2nd'
1158
+ raise EOFError.new
1159
+ else
1160
+ raise Exception.new
1161
+ end
1162
+ end
1163
+ def io.eof?
1164
+ true
1165
+ end
1166
+ @client.test_loopback_http_response << io
1167
+ assert_nothing_raised do
1168
+ @client.get('http://foo/bar')
1169
+ end
1170
+ end
1171
+
1172
+ def test_urify
1173
+ extend HTTPClient::Util
1174
+ assert_nil(urify(nil))
1175
+ uri = 'http://foo'
1176
+ assert_equal(urify(uri), urify(uri))
1177
+ assert_equal(urify(uri), urify(urify(uri)))
1178
+ end
1179
+
1180
+ def test_connection
1181
+ c = HTTPClient::Connection.new
1182
+ assert(c.finished?)
1183
+ assert_nil(c.join)
1184
+ end
1185
+
1186
+ def test_site
1187
+ site = HTTPClient::Site.new
1188
+ assert_equal('tcp', site.scheme)
1189
+ assert_equal('0.0.0.0', site.host)
1190
+ assert_equal(0, site.port)
1191
+ assert_equal('tcp://0.0.0.0:0', site.addr)
1192
+ assert_equal('tcp://0.0.0.0:0', site.to_s)
1193
+ assert_nothing_raised do
1194
+ site.inspect
1195
+ end
1196
+ #
1197
+ site = HTTPClient::Site.new(urify('http://localhost:12345/foo'))
1198
+ assert_equal('http', site.scheme)
1199
+ assert_equal('localhost', site.host)
1200
+ assert_equal(12345, site.port)
1201
+ assert_equal('http://localhost:12345', site.addr)
1202
+ assert_equal('http://localhost:12345', site.to_s)
1203
+ assert_nothing_raised do
1204
+ site.inspect
1205
+ end
1206
+ #
1207
+ site1 = HTTPClient::Site.new(urify('http://localhost:12341/'))
1208
+ site2 = HTTPClient::Site.new(urify('http://localhost:12342/'))
1209
+ site3 = HTTPClient::Site.new(urify('http://localhost:12342/'))
1210
+ assert(!(site1 == site2))
1211
+ h = { site1 => 'site1', site2 => 'site2' }
1212
+ h[site3] = 'site3'
1213
+ assert_equal('site1', h[site1])
1214
+ assert_equal('site3', h[site2])
1215
+ end
1216
+
1217
+ def test_http_header
1218
+ res = @client.get(serverurl + 'hello')
1219
+ assert_equal('text/html', res.contenttype)
1220
+ assert_equal(5, res.header.get(nil).size)
1221
+ #
1222
+ res.header.delete('connection')
1223
+ assert_equal(4, res.header.get(nil).size)
1224
+ #
1225
+ res.header['foo'] = 'bar'
1226
+ assert_equal(['bar'], res.header['foo'])
1227
+ #
1228
+ assert_equal([['foo', 'bar']], res.header.get('foo'))
1229
+ res.header['foo'] = ['bar', 'bar2']
1230
+ assert_equal([['foo', 'bar'], ['foo', 'bar2']], res.header.get('foo'))
1231
+ end
1232
+
1233
+ def test_mime_type
1234
+ assert_equal('text/plain', HTTP::Message.mime_type('foo.txt'))
1235
+ assert_equal('text/html', HTTP::Message.mime_type('foo.html'))
1236
+ assert_equal('text/html', HTTP::Message.mime_type('foo.htm'))
1237
+ assert_equal('application/msword', HTTP::Message.mime_type('foo.doc'))
1238
+ assert_equal('image/png', HTTP::Message.mime_type('foo.png'))
1239
+ assert_equal('image/gif', HTTP::Message.mime_type('foo.gif'))
1240
+ assert_equal('image/jpeg', HTTP::Message.mime_type('foo.jpg'))
1241
+ assert_equal('image/jpeg', HTTP::Message.mime_type('foo.jpeg'))
1242
+ assert_equal('application/octet-stream', HTTP::Message.mime_type('foo.unknown'))
1243
+ #
1244
+ handler = lambda { |path| 'hello/world' }
1245
+ assert_nil(HTTP::Message.mime_type_handler)
1246
+ assert_nil(HTTP::Message.get_mime_type_func)
1247
+ HTTP::Message.mime_type_handler = handler
1248
+ assert_not_nil(HTTP::Message.mime_type_handler)
1249
+ assert_not_nil(HTTP::Message.get_mime_type_func)
1250
+ assert_equal('hello/world', HTTP::Message.mime_type('foo.txt'))
1251
+ HTTP::Message.mime_type_handler = nil
1252
+ assert_equal('text/plain', HTTP::Message.mime_type('foo.txt'))
1253
+ HTTP::Message.set_mime_type_func(nil)
1254
+ assert_equal('text/plain', HTTP::Message.mime_type('foo.txt'))
1255
+ #
1256
+ handler = lambda { |path| nil }
1257
+ HTTP::Message.mime_type_handler = handler
1258
+ assert_equal('application/octet-stream', HTTP::Message.mime_type('foo.txt'))
1259
+ end
1260
+
1261
+ def test_connect_request
1262
+ req = HTTP::Message.new_connect_request(urify('https://foo/bar'))
1263
+ assert_equal("CONNECT foo:443 HTTP/1.0\r\n\r\n", req.dump)
1264
+ req = HTTP::Message.new_connect_request(urify('https://example.com/'))
1265
+ assert_equal("CONNECT example.com:443 HTTP/1.0\r\n\r\n", req.dump)
1266
+ end
1267
+
1268
+ def test_response
1269
+ res = HTTP::Message.new_response('response')
1270
+ res.contenttype = 'text/plain'
1271
+ res.header.body_date = Time.at(946652400)
1272
+ assert_equal(
1273
+ [
1274
+ "",
1275
+ "Content-Length: 8",
1276
+ "Content-Type: text/plain",
1277
+ "Last-Modified: Fri, 31 Dec 1999 15:00:00 GMT",
1278
+ "Status: 200 OK",
1279
+ "response"
1280
+ ],
1281
+ res.dump.split(/\r\n/).sort
1282
+ )
1283
+ assert_equal(['8'], res.header['Content-Length'])
1284
+ assert_equal('8', res.headers['Content-Length'])
1285
+ res.header.set('foo', 'bar')
1286
+ assert_equal(
1287
+ [
1288
+ "",
1289
+ "Content-Length: 8",
1290
+ "Content-Type: text/plain",
1291
+ "Last-Modified: Fri, 31 Dec 1999 15:00:00 GMT",
1292
+ "Status: 200 OK",
1293
+ "foo: bar",
1294
+ "response"
1295
+ ],
1296
+ res.dump.split(/\r\n/).sort
1297
+ )
1298
+ # nil body
1299
+ res = HTTP::Message.new_response(nil)
1300
+ assert_equal(
1301
+ [
1302
+ "Content-Length: 0",
1303
+ "Content-Type: text/html; charset=us-ascii",
1304
+ "Status: 200 OK"
1305
+ ],
1306
+ res.dump.split(/\r\n/).sort
1307
+ )
1308
+ # for mod_ruby env
1309
+ Object.const_set('Apache', nil)
1310
+ begin
1311
+ res = HTTP::Message.new_response('response')
1312
+ assert(res.dump.split(/\r\n/).any? { |line| /^Date/ =~ line })
1313
+ #
1314
+ res = HTTP::Message.new_response('response')
1315
+ res.contenttype = 'text/plain'
1316
+ res.header.body_date = Time.at(946652400)
1317
+ res.header['Date'] = Time.at(946652400).httpdate
1318
+ assert_equal(
1319
+ [
1320
+ "",
1321
+ "Content-Length: 8",
1322
+ "Content-Type: text/plain",
1323
+ "Date: Fri, 31 Dec 1999 15:00:00 GMT",
1324
+ "HTTP/1.1 200 OK",
1325
+ "Last-Modified: Fri, 31 Dec 1999 15:00:00 GMT",
1326
+ "response"
1327
+ ],
1328
+ res.dump.split(/\r\n/).sort
1329
+ )
1330
+ ensure
1331
+ Object.instance_eval { remove_const('Apache') }
1332
+ end
1333
+ end
1334
+
1335
+ def test_response_cookies
1336
+ res = HTTP::Message.new_response('response')
1337
+ res.contenttype = 'text/plain'
1338
+ res.header.body_date = Time.at(946652400)
1339
+ assert_nil(res.cookies)
1340
+ #
1341
+ res.header['Set-Cookie'] = [
1342
+ 'CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT',
1343
+ 'PART_NUMBER=ROCKET_LAUNCHER_0001; path=/'
1344
+ ]
1345
+ assert_equal(
1346
+ [
1347
+ "",
1348
+ "Content-Length: 8",
1349
+ "Content-Type: text/plain",
1350
+ "Last-Modified: Fri, 31 Dec 1999 15:00:00 GMT",
1351
+ "Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT",
1352
+ "Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/",
1353
+ "Status: 200 OK",
1354
+ "response"
1355
+ ],
1356
+ res.dump.split(/\r\n/).sort
1357
+ )
1358
+ assert_equal(2, res.cookies.size)
1359
+ assert_equal('CUSTOMER', res.cookies[0].name)
1360
+ assert_equal('PART_NUMBER', res.cookies[1].name)
1361
+ end
1362
+
1363
+ def test_ok_response_success
1364
+ res = HTTP::Message.new_response('response')
1365
+ assert_equal(true, res.ok?)
1366
+ res.status = 404
1367
+ assert_equal(false, res.ok?)
1368
+ res.status = 500
1369
+ assert_equal(false, res.ok?)
1370
+ res.status = 302
1371
+ assert_equal(false, res.ok?)
1372
+ end
1373
+
1374
+ if !defined?(JRUBY_VERSION) and RUBY_VERSION < '1.9'
1375
+ def test_timeout_scheduler
1376
+ assert_equal('hello', @client.get_content(serverurl + 'hello'))
1377
+ status = HTTPClient.timeout_scheduler.instance_eval { @thread.kill; @thread.join; @thread.status }
1378
+ assert(!status) # dead
1379
+ assert_equal('hello', @client.get_content(serverurl + 'hello'))
1380
+ end
1381
+ end
1382
+
1383
+ def test_session_manager
1384
+ mgr = HTTPClient::SessionManager.new(@client)
1385
+ assert_nil(mgr.instance_eval { @proxy })
1386
+ assert_nil(mgr.debug_dev)
1387
+ @client.debug_dev = Object.new
1388
+ @client.proxy = 'http://myproxy:12345'
1389
+ mgr = HTTPClient::SessionManager.new(@client)
1390
+ assert_equal('http://myproxy:12345', mgr.instance_eval { @proxy }.to_s)
1391
+ assert_equal(@client.debug_dev, mgr.debug_dev)
1392
+ end
1393
+
1394
+ def create_keepalive_disconnected_thread(idx, sock)
1395
+ Thread.new {
1396
+ # return "12345" for the first connection
1397
+ sock.gets
1398
+ sock.gets
1399
+ sock.write("HTTP/1.1 200 OK\r\n")
1400
+ sock.write("Content-Length: 5\r\n")
1401
+ sock.write("\r\n")
1402
+ sock.write("12345")
1403
+ # for the next connection, close while reading the request for emulating
1404
+ # KeepAliveDisconnected
1405
+ sock.gets
1406
+ sock.close
1407
+ }
1408
+ end
1409
+
1410
+ def test_keepalive_disconnected
1411
+ client = HTTPClient.new
1412
+ server = TCPServer.open('127.0.0.1', 0)
1413
+ server.listen(30) # set enough backlogs
1414
+ endpoint = "http://127.0.0.1:#{server.addr[1]}/"
1415
+ Thread.new {
1416
+ Thread.abort_on_exception = true
1417
+ # emulate 10 keep-alive connections
1418
+ 10.times do |idx|
1419
+ sock = server.accept
1420
+ create_keepalive_disconnected_thread(idx, sock)
1421
+ end
1422
+ # return "23456" for the request which gets KeepAliveDisconnected
1423
+ 5.times do
1424
+ sock = server.accept
1425
+ sock.gets
1426
+ sock.gets
1427
+ sock.write("HTTP/1.1 200 OK\r\n")
1428
+ sock.write("\r\n")
1429
+ sock.write("23456")
1430
+ sock.close
1431
+ end
1432
+ # return "34567" for the rest requests
1433
+ while true
1434
+ sock = server.accept
1435
+ sock.gets
1436
+ sock.gets
1437
+ sock.write("HTTP/1.1 200 OK\r\n")
1438
+ sock.write("Connection: close\r\n")
1439
+ sock.write("Content-Length: 5\r\n")
1440
+ sock.write("\r\n")
1441
+ sock.write("34567")
1442
+ sock.close
1443
+ end
1444
+ }
1445
+ # allocate 10 keep-alive connections
1446
+ (0...10).to_a.map {
1447
+ Thread.new {
1448
+ assert_equal("12345", client.get(endpoint).content)
1449
+ }
1450
+ }.each { |th| th.join }
1451
+ # send 5 requests, which should get KeepAliveDesconnected.
1452
+ # doing these requests, rest keep-alive connections are invalidated.
1453
+ (0...5).to_a.map {
1454
+ Thread.new {
1455
+ assert_equal("23456", client.get(endpoint).content)
1456
+ }
1457
+ }.each { |th| th.join }
1458
+ # rest requests won't get KeepAliveDisconnected; how can I check this?
1459
+ (0...10).to_a.map {
1460
+ Thread.new {
1461
+ assert_equal("34567", client.get(endpoint).content)
1462
+ }
1463
+ }.each { |th| th.join }
1464
+ end
1465
+
1466
+ def create_keepalive_thread(count, sock)
1467
+ Thread.new {
1468
+ Thread.abort_on_exception = true
1469
+ count.times do
1470
+ req = sock.gets
1471
+ while line = sock.gets
1472
+ break if line.chomp.empty?
1473
+ end
1474
+ case req
1475
+ when /chunked/
1476
+ sock.write("HTTP/1.1 200 OK\r\n")
1477
+ sock.write("Transfer-Encoding: chunked\r\n")
1478
+ sock.write("\r\n")
1479
+ sock.write("1a\r\n")
1480
+ sock.write("abcdefghijklmnopqrstuvwxyz\r\n")
1481
+ sock.write("10\r\n")
1482
+ sock.write("1234567890abcdef\r\n")
1483
+ sock.write("0\r\n")
1484
+ sock.write("\r\n")
1485
+ else
1486
+ sock.write("HTTP/1.1 200 OK\r\n")
1487
+ sock.write("Content-Length: 5\r\n")
1488
+ sock.write("\r\n")
1489
+ sock.write("12345")
1490
+ end
1491
+ end
1492
+ sock.close
1493
+ }
1494
+ end
1495
+
1496
+ def test_keepalive
1497
+ server = TCPServer.open('localhost', 0)
1498
+ server_thread = Thread.new {
1499
+ Thread.abort_on_exception = true
1500
+ sock = server.accept
1501
+ create_keepalive_thread(10, sock)
1502
+ }
1503
+ url = "http://localhost:#{server.addr[1]}/"
1504
+ begin
1505
+ # content-length
1506
+ 5.times do
1507
+ assert_equal('12345', @client.get(url).body)
1508
+ end
1509
+ # chunked
1510
+ 5.times do
1511
+ assert_equal('abcdefghijklmnopqrstuvwxyz1234567890abcdef', @client.get(url + 'chunked').body)
1512
+ end
1513
+ ensure
1514
+ server.close
1515
+ server_thread.join
1516
+ end
1517
+ end
1518
+
1519
+ def test_socket_local
1520
+ @client.socket_local.host = '127.0.0.1'
1521
+ assert_equal('hello', @client.get_content(serverurl + 'hello'))
1522
+ @client.reset_all
1523
+ @client.socket_local.port = serverport
1524
+ begin
1525
+ @client.get_content(serverurl + 'hello')
1526
+ rescue Errno::EADDRINUSE, SocketError
1527
+ assert(true)
1528
+ end
1529
+ end
1530
+
1531
+ def test_body_param_order
1532
+ ary = ('b'..'d').map { |k| ['key2', k] } << ['key1', 'a'] << ['key3', 'z']
1533
+ assert_equal("key2=b&key2=c&key2=d&key1=a&key3=z", HTTP::Message.escape_query(ary))
1534
+ end
1535
+
1536
+ if RUBY_VERSION > "1.9"
1537
+ def test_charset
1538
+ body = @client.get(serverurl + 'charset').body
1539
+ assert_equal(Encoding::EUC_JP, body.encoding)
1540
+ assert_equal('あいうえお'.encode(Encoding::EUC_JP), body)
1541
+ end
1542
+ end
1543
+
1544
+ if RUBY_VERSION >= "1.9.3"
1545
+ def test_continue
1546
+ @client.debug_dev = str = ''
1547
+ res = @client.get(serverurl + 'continue', :header => {:Expect => '100-continue'})
1548
+ assert_equal(200, res.status)
1549
+ assert_equal('done!', res.body)
1550
+ assert_match(/Expect: 100-continue/, str)
1551
+ end
1552
+ end
1553
+
1554
+ def test_ipv6literaladdress_in_uri
1555
+ server = TCPServer.open('::1', 0) rescue return # Skip if IPv6 is unavailable.
1556
+ server_thread = Thread.new {
1557
+ Thread.abort_on_exception = true
1558
+ sock = server.accept
1559
+ while line = sock.gets
1560
+ break if line.chomp.empty?
1561
+ end
1562
+ sock.write("HTTP/1.1 200 OK\r\n")
1563
+ sock.write("Content-Length: 5\r\n")
1564
+ sock.write("\r\n")
1565
+ sock.write("12345")
1566
+ sock.close
1567
+ }
1568
+ uri = "http://[::1]:#{server.addr[1]}/"
1569
+ begin
1570
+ assert_equal('12345', @client.get(uri).body)
1571
+ ensure
1572
+ server.close
1573
+ server_thread.kill
1574
+ server_thread.join
1575
+ end
1576
+ end
1577
+
1578
+ private
1579
+
1580
+ def check_query_get(query)
1581
+ WEBrick::HTTPUtils.parse_query(
1582
+ @client.get(serverurl + 'servlet', query).header["x-query"][0]
1583
+ )
1584
+ end
1585
+
1586
+ def check_query_post(query)
1587
+ WEBrick::HTTPUtils.parse_query(
1588
+ @client.post(serverurl + 'servlet', query).header["x-query"][0]
1589
+ )
1590
+ end
1591
+
1592
+ def setup_server
1593
+ @server = WEBrick::HTTPServer.new(
1594
+ :BindAddress => "localhost",
1595
+ :Logger => @logger,
1596
+ :Port => 0,
1597
+ :AccessLog => [],
1598
+ :DocumentRoot => File.dirname(File.expand_path(__FILE__))
1599
+ )
1600
+ @serverport = @server.config[:Port]
1601
+ [
1602
+ :hello, :sleep, :servlet_redirect, :redirect1, :redirect2, :redirect3,
1603
+ :redirect_self, :relative_redirect, :redirect_see_other, :chunked,
1604
+ :largebody, :status, :compressed, :charset, :continue
1605
+ ].each do |sym|
1606
+ @server.mount(
1607
+ "/#{sym}",
1608
+ WEBrick::HTTPServlet::ProcHandler.new(method("do_#{sym}").to_proc)
1609
+ )
1610
+ end
1611
+ @server.mount('/servlet', TestServlet.new(@server))
1612
+ @server_thread = start_server_thread(@server)
1613
+ end
1614
+
1615
+ def escape_noproxy
1616
+ backup = HTTPClient::NO_PROXY_HOSTS.dup
1617
+ HTTPClient::NO_PROXY_HOSTS.clear
1618
+ yield
1619
+ ensure
1620
+ HTTPClient::NO_PROXY_HOSTS.replace(backup)
1621
+ end
1622
+
1623
+ def do_hello(req, res)
1624
+ res['content-type'] = 'text/html'
1625
+ res.body = "hello"
1626
+ end
1627
+
1628
+ def do_sleep(req, res)
1629
+ sec = req.query['sec'].to_i
1630
+ sleep sec
1631
+ res['content-type'] = 'text/html'
1632
+ res.body = "hello"
1633
+ end
1634
+
1635
+ def do_servlet_redirect(req, res)
1636
+ res.set_redirect(WEBrick::HTTPStatus::Found, serverurl + "servlet")
1637
+ end
1638
+
1639
+ def do_redirect1(req, res)
1640
+ res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, serverurl + "hello")
1641
+ end
1642
+
1643
+ def do_redirect2(req, res)
1644
+ res.set_redirect(WEBrick::HTTPStatus::TemporaryRedirect, serverurl + "redirect3")
1645
+ end
1646
+
1647
+ def do_redirect3(req, res)
1648
+ res.set_redirect(WEBrick::HTTPStatus::Found, serverurl + "hello")
1649
+ end
1650
+
1651
+ def do_redirect_self(req, res)
1652
+ res.set_redirect(WEBrick::HTTPStatus::Found, serverurl + "redirect_self")
1653
+ end
1654
+
1655
+ def do_relative_redirect(req, res)
1656
+ res.set_redirect(WEBrick::HTTPStatus::Found, "hello")
1657
+ end
1658
+
1659
+ def do_redirect_see_other(req, res)
1660
+ if req.request_method == 'POST'
1661
+ res.set_redirect(WEBrick::HTTPStatus::SeeOther, serverurl + "redirect_see_other") # self
1662
+ else
1663
+ res.body = 'hello'
1664
+ end
1665
+ end
1666
+
1667
+ def do_chunked(req, res)
1668
+ res.chunked = true
1669
+ res['content-type'] = 'text/plain; charset=UTF-8'
1670
+ piper, pipew = IO.pipe
1671
+ res.body = piper
1672
+ pipew << req.query['msg']
1673
+ pipew.close
1674
+ end
1675
+
1676
+ def do_largebody(req, res)
1677
+ res['content-type'] = 'text/html'
1678
+ res.body = "a" * 1000 * 1000
1679
+ end
1680
+
1681
+ def do_compressed(req, res)
1682
+ res['content-type'] = 'application/octet-stream'
1683
+ if req.query['enc'] == 'gzip'
1684
+ res['content-encoding'] = 'gzip'
1685
+ res.body = GZIP_CONTENT
1686
+ elsif req.query['enc'] == 'deflate'
1687
+ res['content-encoding'] = 'deflate'
1688
+ res.body = DEFLATE_CONTENT
1689
+ end
1690
+ end
1691
+
1692
+ def do_charset(req, res)
1693
+ if RUBY_VERSION > "1.9"
1694
+ res.body = 'あいうえお'.encode("euc-jp")
1695
+ res['Content-Type'] = 'text/plain; charset=euc-jp'
1696
+ else
1697
+ res.body = 'this endpoint is for 1.9 or later'
1698
+ end
1699
+ end
1700
+
1701
+ def do_status(req, res)
1702
+ res.status = req.query['status'].to_i
1703
+ end
1704
+
1705
+ def do_continue(req, res)
1706
+ req.continue
1707
+ res.body = 'done!'
1708
+ end
1709
+
1710
+ class TestServlet < WEBrick::HTTPServlet::AbstractServlet
1711
+ def get_instance(*arg)
1712
+ self
1713
+ end
1714
+
1715
+ def do_HEAD(req, res)
1716
+ res["x-head"] = 'head' # use this for test purpose only.
1717
+ res["x-query"] = query_response(req)
1718
+ end
1719
+
1720
+ def do_GET(req, res)
1721
+ res.body = 'get'
1722
+ res["x-query"] = query_response(req)
1723
+ end
1724
+
1725
+ def do_POST(req, res)
1726
+ res["content-type"] = "text/plain" # iso-8859-1, not US-ASCII
1727
+ res.body = 'post,' + req.body.to_s
1728
+ res["x-query"] = body_response(req)
1729
+ end
1730
+
1731
+ def do_PUT(req, res)
1732
+ res["x-query"] = body_response(req)
1733
+ param = WEBrick::HTTPUtils.parse_query(req.body) || {}
1734
+ res["x-size"] = (param['txt'] || '').size
1735
+ res.body = param['txt'] || 'put'
1736
+ end
1737
+
1738
+ def do_DELETE(req, res)
1739
+ res.body = 'delete'
1740
+ end
1741
+
1742
+ def do_OPTIONS(req, res)
1743
+ # check RFC for legal response.
1744
+ res.body = 'options'
1745
+ end
1746
+
1747
+ def do_PROPFIND(req, res)
1748
+ res.body = 'propfind'
1749
+ end
1750
+
1751
+ def do_PROPPATCH(req, res)
1752
+ res.body = 'proppatch'
1753
+ res["x-query"] = body_response(req)
1754
+ end
1755
+
1756
+ def do_TRACE(req, res)
1757
+ # client SHOULD reflect the message received back to the client as the
1758
+ # entity-body of a 200 (OK) response. [RFC2616]
1759
+ res.body = 'trace'
1760
+ res["x-query"] = query_response(req)
1761
+ end
1762
+
1763
+ private
1764
+
1765
+ def query_response(req)
1766
+ query_escape(WEBrick::HTTPUtils.parse_query(req.query_string))
1767
+ end
1768
+
1769
+ def body_response(req)
1770
+ query_escape(WEBrick::HTTPUtils.parse_query(req.body))
1771
+ end
1772
+
1773
+ def query_escape(query)
1774
+ escaped = []
1775
+ query.sort_by { |k, v| k }.collect do |k, v|
1776
+ v.to_ary.each do |ve|
1777
+ escaped << CGI.escape(k) + '=' + CGI.escape(ve)
1778
+ end
1779
+ end
1780
+ escaped.join('&')
1781
+ end
1782
+ end
1783
+ end