tdiary 5.0.14 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3660) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +12 -0
  3. data/Gemfile.lock +44 -42
  4. data/lib/aws/pa_api.rb +72 -0
  5. data/lib/aws/sig_v4.rb +45 -0
  6. data/lib/tdiary/comment_manager.rb +1 -1
  7. data/lib/tdiary/tasks/release.rake +2 -2
  8. data/lib/tdiary/version.rb +1 -1
  9. data/misc/paas/heroku/Gemfile.local +1 -1
  10. data/misc/paas/heroku/Gemfile.lock +55 -52
  11. data/misc/plugin/amazon.rb +63 -180
  12. data/misc/plugin/makerss.rb +1 -4
  13. data/public/assets/00default.js +104 -0
  14. data/public/assets/01conf.js +78 -0
  15. data/public/assets/02edit.js +15 -0
  16. data/public/assets/amazon.js +13 -0
  17. data/public/assets/amazon_bitly.js +43 -0
  18. data/public/assets/base.css +284 -0
  19. data/public/assets/calendar3.js +130 -0
  20. data/public/assets/caretposition.js +170 -0
  21. data/public/assets/category.js +29 -0
  22. data/public/assets/category_autocomplete.js +96 -0
  23. data/public/assets/comment_ajax.js +27 -0
  24. data/public/assets/comment_emoji_autocomplete.js +138 -0
  25. data/public/assets/conf.block.png +0 -0
  26. data/public/assets/conf.css +254 -0
  27. data/public/assets/default/README +11 -0
  28. data/public/assets/default/body.png +0 -0
  29. data/public/assets/default/default.css +753 -0
  30. data/public/assets/default/default/README +11 -0
  31. data/public/assets/default/default/body.png +0 -0
  32. data/public/assets/default/default/default.css +753 -0
  33. data/public/assets/draft.js +149 -0
  34. data/public/assets/help.png +0 -0
  35. data/public/assets/highlight.js +36 -0
  36. data/public/assets/image.js +181 -0
  37. data/public/assets/loading.gif +0 -0
  38. data/public/assets/ogimage.png +0 -0
  39. data/public/assets/preview.js +69 -0
  40. data/public/assets/tdiary1/README +7 -0
  41. data/public/assets/tdiary1/tdiary1.css +394 -0
  42. data/public/assets/tdiary1/tdiary1/README +7 -0
  43. data/public/assets/tdiary1/tdiary1/tdiary1.css +394 -0
  44. data/public/assets/tdiary2/README +19 -0
  45. data/public/assets/tdiary2/tdiary2.css +624 -0
  46. data/public/assets/tdiary2/tdiary2/README +19 -0
  47. data/public/assets/tdiary2/tdiary2/tdiary2.css +624 -0
  48. data/public/index.rdf +1 -3
  49. data/vendor/bundle/bin/coveralls +27 -0
  50. data/vendor/bundle/bin/emot +27 -0
  51. data/vendor/bundle/bin/hikidoc +27 -0
  52. data/vendor/bundle/bin/htmldiff +29 -0
  53. data/vendor/bundle/bin/jasmine +27 -0
  54. data/vendor/bundle/bin/launchy +27 -0
  55. data/vendor/bundle/bin/ldiff +29 -0
  56. data/vendor/bundle/bin/nokogiri +27 -0
  57. data/vendor/bundle/bin/pit +27 -0
  58. data/vendor/bundle/bin/racksh +27 -0
  59. data/vendor/bundle/bin/rackup +27 -0
  60. data/vendor/bundle/bin/rake +27 -0
  61. data/vendor/bundle/bin/redcarpet +27 -0
  62. data/vendor/bundle/bin/rspec +27 -0
  63. data/vendor/bundle/bin/sequel +27 -0
  64. data/vendor/bundle/bin/term_cdiff +27 -0
  65. data/vendor/bundle/bin/term_colortab +27 -0
  66. data/vendor/bundle/bin/term_decolor +27 -0
  67. data/vendor/bundle/bin/term_display +27 -0
  68. data/vendor/bundle/bin/term_mandel +27 -0
  69. data/vendor/bundle/bin/term_snow +27 -0
  70. data/vendor/bundle/bin/thor +27 -0
  71. data/vendor/bundle/cache/addressable-2.7.0.gem +0 -0
  72. data/vendor/bundle/cache/capybara-3.29.0.gem +0 -0
  73. data/vendor/bundle/cache/childprocess-3.0.0.gem +0 -0
  74. data/vendor/bundle/cache/coveralls-0.8.23.gem +0 -0
  75. data/vendor/bundle/cache/diff-lcs-1.3.gem +0 -0
  76. data/vendor/bundle/cache/docile-1.3.2.gem +0 -0
  77. data/vendor/bundle/cache/emot-0.0.4.gem +0 -0
  78. data/vendor/bundle/cache/faraday-0.17.1.gem +0 -0
  79. data/vendor/bundle/cache/fastimage-2.1.7.gem +0 -0
  80. data/vendor/bundle/cache/hikidoc-0.1.0.gem +0 -0
  81. data/vendor/bundle/cache/jasmine-2.99.0.gem +0 -0
  82. data/vendor/bundle/cache/jasmine-core-2.99.2.gem +0 -0
  83. data/vendor/bundle/cache/json-2.2.0.gem +0 -0
  84. data/vendor/bundle/cache/launchy-2.4.3.gem +0 -0
  85. data/vendor/bundle/cache/mail-2.7.1.gem +0 -0
  86. data/vendor/bundle/cache/mime-types-3.3.gem +0 -0
  87. data/vendor/bundle/cache/mime-types-data-3.2019.1009.gem +0 -0
  88. data/vendor/bundle/cache/mini_mime-1.0.2.gem +0 -0
  89. data/vendor/bundle/cache/mini_portile2-2.4.0.gem +0 -0
  90. data/vendor/bundle/cache/multipart-post-2.1.1.gem +0 -0
  91. data/vendor/bundle/cache/nokogiri-1.10.5.gem +0 -0
  92. data/vendor/bundle/cache/octokit-4.14.0.gem +0 -0
  93. data/vendor/bundle/cache/phantomjs-2.1.1.0.gem +0 -0
  94. data/vendor/bundle/cache/pit-0.0.7.gem +0 -0
  95. data/vendor/bundle/cache/power_assert-1.1.5.gem +0 -0
  96. data/vendor/bundle/cache/public_suffix-4.0.1.gem +0 -0
  97. data/vendor/bundle/cache/rack-2.0.7.gem +0 -0
  98. data/vendor/bundle/cache/rack-test-1.1.0.gem +0 -0
  99. data/vendor/bundle/cache/racksh-1.0.0.gem +0 -0
  100. data/vendor/bundle/cache/rake-13.0.1.gem +0 -0
  101. data/vendor/bundle/cache/redcarpet-3.5.0.gem +0 -0
  102. data/vendor/bundle/cache/regexp_parser-1.6.0.gem +0 -0
  103. data/vendor/bundle/cache/rspec-3.9.0.gem +0 -0
  104. data/vendor/bundle/cache/rspec-core-3.9.0.gem +0 -0
  105. data/vendor/bundle/cache/rspec-expectations-3.9.0.gem +0 -0
  106. data/vendor/bundle/cache/rspec-mocks-3.9.0.gem +0 -0
  107. data/vendor/bundle/cache/rspec-support-3.9.0.gem +0 -0
  108. data/vendor/bundle/cache/rubyzip-2.0.0.gem +0 -0
  109. data/vendor/bundle/cache/sawyer-0.8.2.gem +0 -0
  110. data/vendor/bundle/cache/selenium-webdriver-3.142.6.gem +0 -0
  111. data/vendor/bundle/cache/sequel-5.26.0.gem +0 -0
  112. data/vendor/bundle/cache/simplecov-0.16.1.gem +0 -0
  113. data/vendor/bundle/cache/simplecov-html-0.10.2.gem +0 -0
  114. data/vendor/bundle/cache/sqlite3-1.4.1.gem +0 -0
  115. data/vendor/bundle/cache/term-ansicolor-1.7.1.gem +0 -0
  116. data/vendor/bundle/cache/test-unit-3.3.4.gem +0 -0
  117. data/vendor/bundle/cache/thor-0.20.3.gem +0 -0
  118. data/vendor/bundle/cache/tins-1.22.2.gem +0 -0
  119. data/vendor/bundle/cache/xpath-3.2.0.gem +0 -0
  120. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/json-2.2.0/gem.build_complete +0 -0
  121. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/json-2.2.0/gem_make.out +13 -0
  122. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/json-2.2.0/json/ext/generator.so +0 -0
  123. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/json-2.2.0/json/ext/parser.so +0 -0
  124. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/json-2.2.0/mkmf.log +69 -0
  125. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/nokogiri-1.10.5/gem.build_complete +0 -0
  126. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/nokogiri-1.10.5/gem_make.out +449 -0
  127. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/nokogiri-1.10.5/mkmf.log +566 -0
  128. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/nokogiri-1.10.5/nokogiri/nokogiri.so +0 -0
  129. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/redcarpet-3.5.0/gem.build_complete +0 -0
  130. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/redcarpet-3.5.0/gem_make.out +119 -0
  131. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/redcarpet-3.5.0/redcarpet.so +0 -0
  132. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/sqlite3-1.4.1/gem.build_complete +0 -0
  133. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/sqlite3-1.4.1/gem_make.out +77 -0
  134. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/sqlite3-1.4.1/mkmf.log +631 -0
  135. data/vendor/bundle/extensions/x86_64-linux/2.6.0-static/sqlite3-1.4.1/sqlite3/sqlite3_native.so +0 -0
  136. data/vendor/bundle/gems/addressable-2.7.0/CHANGELOG.md +235 -0
  137. data/vendor/bundle/gems/addressable-2.7.0/Gemfile +32 -0
  138. data/vendor/bundle/gems/addressable-2.7.0/LICENSE.txt +202 -0
  139. data/vendor/bundle/gems/addressable-2.7.0/README.md +121 -0
  140. data/vendor/bundle/gems/addressable-2.7.0/Rakefile +34 -0
  141. data/vendor/bundle/gems/addressable-2.7.0/data/unicode.data +0 -0
  142. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable.rb +4 -0
  143. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable/idna.rb +27 -0
  144. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable/idna/native.rb +61 -0
  145. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable/idna/pure.rb +676 -0
  146. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable/template.rb +1045 -0
  147. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable/uri.rb +2529 -0
  148. data/vendor/bundle/gems/addressable-2.7.0/lib/addressable/version.rb +32 -0
  149. data/vendor/bundle/gems/addressable-2.7.0/spec/addressable/idna_spec.rb +300 -0
  150. data/vendor/bundle/gems/addressable-2.7.0/spec/addressable/net_http_compat_spec.rb +30 -0
  151. data/vendor/bundle/gems/addressable-2.7.0/spec/addressable/rack_mount_compat_spec.rb +106 -0
  152. data/vendor/bundle/gems/addressable-2.7.0/spec/addressable/security_spec.rb +59 -0
  153. data/vendor/bundle/gems/addressable-2.7.0/spec/addressable/template_spec.rb +1451 -0
  154. data/vendor/bundle/gems/addressable-2.7.0/spec/addressable/uri_spec.rb +6603 -0
  155. data/vendor/bundle/gems/addressable-2.7.0/spec/spec_helper.rb +24 -0
  156. data/vendor/bundle/gems/addressable-2.7.0/tasks/clobber.rake +4 -0
  157. data/vendor/bundle/gems/addressable-2.7.0/tasks/gem.rake +93 -0
  158. data/vendor/bundle/gems/addressable-2.7.0/tasks/git.rake +47 -0
  159. data/vendor/bundle/gems/addressable-2.7.0/tasks/metrics.rake +24 -0
  160. data/vendor/bundle/gems/addressable-2.7.0/tasks/rspec.rake +23 -0
  161. data/vendor/bundle/gems/addressable-2.7.0/tasks/yard.rake +29 -0
  162. data/vendor/bundle/gems/capybara-3.29.0/History.md +1743 -0
  163. data/vendor/bundle/gems/capybara-3.29.0/License.txt +22 -0
  164. data/vendor/bundle/gems/capybara-3.29.0/README.md +1099 -0
  165. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara.rb +511 -0
  166. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/config.rb +90 -0
  167. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/cucumber.rb +27 -0
  168. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/driver/base.rb +170 -0
  169. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/driver/node.rb +139 -0
  170. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/dsl.rb +57 -0
  171. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/helpers.rb +106 -0
  172. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/minitest.rb +297 -0
  173. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/minitest/spec.rb +208 -0
  174. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/actions.rb +416 -0
  175. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/base.rb +143 -0
  176. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/document.rb +48 -0
  177. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/document_matchers.rb +67 -0
  178. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/element.rb +599 -0
  179. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/finders.rb +319 -0
  180. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/matchers.rb +868 -0
  181. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/node/simple.rb +206 -0
  182. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/ancestor_query.rb +27 -0
  183. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/base_query.rb +105 -0
  184. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/current_path_query.rb +51 -0
  185. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/match_query.rb +26 -0
  186. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/selector_query.rb +697 -0
  187. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/sibling_query.rb +26 -0
  188. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/style_query.rb +45 -0
  189. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/text_query.rb +110 -0
  190. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/queries/title_query.rb +39 -0
  191. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rack_test/browser.rb +135 -0
  192. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rack_test/css_handlers.rb +13 -0
  193. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rack_test/driver.rb +109 -0
  194. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rack_test/errors.rb +6 -0
  195. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rack_test/form.rb +127 -0
  196. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rack_test/node.rb +300 -0
  197. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rails.rb +16 -0
  198. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/registrations/drivers.rb +36 -0
  199. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/registrations/patches/puma_ssl.rb +27 -0
  200. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/registrations/servers.rb +44 -0
  201. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/result.rb +166 -0
  202. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec.rb +29 -0
  203. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/features.rb +23 -0
  204. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matcher_proxies.rb +82 -0
  205. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers.rb +201 -0
  206. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/base.rb +105 -0
  207. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/become_closed.rb +33 -0
  208. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/compound.rb +88 -0
  209. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/count_sugar.rb +36 -0
  210. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/have_ancestor.rb +27 -0
  211. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/have_current_path.rb +29 -0
  212. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/have_selector.rb +69 -0
  213. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/have_sibling.rb +27 -0
  214. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/have_text.rb +33 -0
  215. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/have_title.rb +29 -0
  216. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/match_selector.rb +27 -0
  217. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/match_style.rb +38 -0
  218. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/rspec/matchers/spatial_sugar.rb +38 -0
  219. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector.rb +225 -0
  220. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/builders/css_builder.rb +84 -0
  221. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/builders/xpath_builder.rb +69 -0
  222. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/css.rb +102 -0
  223. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition.rb +276 -0
  224. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/button.rb +46 -0
  225. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/checkbox.rb +26 -0
  226. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/css.rb +8 -0
  227. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/datalist_input.rb +35 -0
  228. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/datalist_option.rb +25 -0
  229. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/element.rb +27 -0
  230. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/field.rb +40 -0
  231. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/fieldset.rb +14 -0
  232. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/file_field.rb +13 -0
  233. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/fillable_field.rb +33 -0
  234. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/frame.rb +17 -0
  235. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/id.rb +6 -0
  236. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/label.rb +60 -0
  237. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/link.rb +46 -0
  238. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/link_or_button.rb +16 -0
  239. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/option.rb +27 -0
  240. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/radio_button.rb +27 -0
  241. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/select.rb +62 -0
  242. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/table.rb +106 -0
  243. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/table_row.rb +21 -0
  244. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/definition/xpath.rb +5 -0
  245. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/filter.rb +5 -0
  246. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/filter_set.rb +122 -0
  247. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/filters/base.rb +72 -0
  248. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/filters/expression_filter.rb +22 -0
  249. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/filters/locator_filter.rb +29 -0
  250. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/filters/node_filter.rb +31 -0
  251. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/regexp_disassembler.rb +214 -0
  252. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/selector.rb +145 -0
  253. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selector/xpath_extensions.rb +17 -0
  254. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/atoms/getAttribute.min.js +1 -0
  255. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/atoms/isDisplayed.min.js +1 -0
  256. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/atoms/src/getAttribute.js +161 -0
  257. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/atoms/src/isDisplayed.js +454 -0
  258. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/driver.rb +487 -0
  259. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/driver_specializations/chrome_driver.rb +119 -0
  260. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/driver_specializations/edge_driver.rb +126 -0
  261. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/driver_specializations/firefox_driver.rb +89 -0
  262. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/driver_specializations/internet_explorer_driver.rb +26 -0
  263. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/driver_specializations/safari_driver.rb +24 -0
  264. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/extensions/file_input_click_emulation.rb +34 -0
  265. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/extensions/find.rb +110 -0
  266. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/extensions/html5_drag.rb +211 -0
  267. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/extensions/modifier_keys_stack.rb +28 -0
  268. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/extensions/scroll.rb +78 -0
  269. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/logger_suppressor.rb +34 -0
  270. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/node.rb +532 -0
  271. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/nodes/chrome_node.rb +122 -0
  272. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/nodes/edge_node.rb +102 -0
  273. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/nodes/firefox_node.rb +131 -0
  274. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/nodes/ie_node.rb +22 -0
  275. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/nodes/safari_node.rb +118 -0
  276. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/patches/atoms.rb +18 -0
  277. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/patches/is_displayed.rb +16 -0
  278. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/patches/logs.rb +47 -0
  279. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/patches/pause_duration_fix.rb +9 -0
  280. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/selenium/patches/persistent_client.rb +20 -0
  281. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/server.rb +114 -0
  282. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/server/animation_disabler.rb +58 -0
  283. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/server/checker.rb +44 -0
  284. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/server/middleware.rb +59 -0
  285. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/session.rb +925 -0
  286. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/session/config.rb +120 -0
  287. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/session/matchers.rb +87 -0
  288. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/fixtures/another_test_file.txt +1 -0
  289. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/fixtures/capybara.jpg +3 -0
  290. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/fixtures/no_extension +1 -0
  291. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/fixtures/test_file.txt +1 -0
  292. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/public/jquery-ui.js +13 -0
  293. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/public/jquery.js +5 -0
  294. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/public/offset.js +6 -0
  295. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/public/test.js +212 -0
  296. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/accept_alert_spec.rb +81 -0
  297. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/accept_confirm_spec.rb +32 -0
  298. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/accept_prompt_spec.rb +78 -0
  299. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/all_spec.rb +223 -0
  300. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/ancestor_spec.rb +83 -0
  301. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +140 -0
  302. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/assert_current_path_spec.rb +75 -0
  303. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/assert_selector_spec.rb +143 -0
  304. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/assert_style_spec.rb +26 -0
  305. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/assert_text_spec.rb +254 -0
  306. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/assert_title_spec.rb +93 -0
  307. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/attach_file_spec.rb +216 -0
  308. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/body_spec.rb +23 -0
  309. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/check_spec.rb +235 -0
  310. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/choose_spec.rb +121 -0
  311. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/click_button_spec.rb +501 -0
  312. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/click_link_or_button_spec.rb +129 -0
  313. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/click_link_spec.rb +229 -0
  314. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/current_scope_spec.rb +31 -0
  315. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/current_url_spec.rb +115 -0
  316. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/dismiss_confirm_spec.rb +36 -0
  317. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/dismiss_prompt_spec.rb +21 -0
  318. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/element/assert_match_selector_spec.rb +38 -0
  319. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/element/match_css_spec.rb +31 -0
  320. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/element/match_xpath_spec.rb +25 -0
  321. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/element/matches_selector_spec.rb +120 -0
  322. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/evaluate_async_script_spec.rb +23 -0
  323. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/evaluate_script_spec.rb +49 -0
  324. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/execute_script_spec.rb +28 -0
  325. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/fill_in_spec.rb +257 -0
  326. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/find_button_spec.rb +74 -0
  327. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/find_by_id_spec.rb +33 -0
  328. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/find_field_spec.rb +113 -0
  329. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/find_link_spec.rb +70 -0
  330. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/find_spec.rb +508 -0
  331. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/first_spec.rb +156 -0
  332. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/frame/frame_title_spec.rb +23 -0
  333. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/frame/frame_url_spec.rb +23 -0
  334. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +116 -0
  335. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/frame/within_frame_spec.rb +112 -0
  336. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/go_back_spec.rb +12 -0
  337. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/go_forward_spec.rb +14 -0
  338. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_all_selectors_spec.rb +69 -0
  339. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_ancestor_spec.rb +46 -0
  340. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_any_selectors_spec.rb +25 -0
  341. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_button_spec.rb +69 -0
  342. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_css_spec.rb +371 -0
  343. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_current_path_spec.rb +138 -0
  344. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_field_spec.rb +349 -0
  345. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_link_spec.rb +39 -0
  346. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_none_selectors_spec.rb +78 -0
  347. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_select_spec.rb +282 -0
  348. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_selector_spec.rb +202 -0
  349. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_sibling_spec.rb +50 -0
  350. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_table_spec.rb +152 -0
  351. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_text_spec.rb +359 -0
  352. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_title_spec.rb +71 -0
  353. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/has_xpath_spec.rb +149 -0
  354. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/headers_spec.rb +8 -0
  355. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/html_spec.rb +47 -0
  356. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/matches_style_spec.rb +35 -0
  357. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/node_spec.rb +1161 -0
  358. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/node_wrapper_spec.rb +39 -0
  359. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/refresh_spec.rb +33 -0
  360. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/reset_session_spec.rb +148 -0
  361. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/response_code_spec.rb +8 -0
  362. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/save_and_open_page_spec.rb +21 -0
  363. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +43 -0
  364. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/save_page_spec.rb +110 -0
  365. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/save_screenshot_spec.rb +55 -0
  366. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/screenshot_spec.rb +18 -0
  367. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/scroll_spec.rb +117 -0
  368. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/select_spec.rb +229 -0
  369. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/selectors_spec.rb +85 -0
  370. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/sibling_spec.rb +52 -0
  371. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/source_spec.rb +0 -0
  372. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/text_spec.rb +74 -0
  373. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/title_spec.rb +29 -0
  374. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/uncheck_spec.rb +100 -0
  375. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/unselect_spec.rb +116 -0
  376. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/visit_spec.rb +204 -0
  377. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/become_closed_spec.rb +89 -0
  378. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/current_window_spec.rb +28 -0
  379. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/open_new_window_spec.rb +31 -0
  380. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/switch_to_window_spec.rb +132 -0
  381. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/window_opened_by_spec.rb +99 -0
  382. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/window_spec.rb +203 -0
  383. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/windows_spec.rb +34 -0
  384. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/window/within_window_spec.rb +157 -0
  385. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/session/within_spec.rb +199 -0
  386. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/spec_helper.rb +135 -0
  387. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/test_app.rb +226 -0
  388. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/animated.erb +49 -0
  389. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/buttons.erb +5 -0
  390. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/fieldsets.erb +30 -0
  391. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/form.erb +670 -0
  392. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/frame_child.erb +18 -0
  393. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/frame_one.erb +10 -0
  394. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/frame_parent.erb +9 -0
  395. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/frame_two.erb +9 -0
  396. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/header_links.erb +8 -0
  397. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/host_links.erb +13 -0
  398. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/initial_alert.erb +10 -0
  399. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/obscured.erb +47 -0
  400. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/offset.erb +32 -0
  401. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/path.erb +13 -0
  402. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/popup_one.erb +9 -0
  403. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/popup_two.erb +9 -0
  404. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/postback.erb +14 -0
  405. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/react.erb +45 -0
  406. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/scroll.erb +20 -0
  407. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/spatial.erb +31 -0
  408. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/tables.erb +130 -0
  409. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_animation.erb +74 -0
  410. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_base_tag.erb +11 -0
  411. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_count.erb +8 -0
  412. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_dragula.erb +22 -0
  413. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_fixed_header_footer.erb +17 -0
  414. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_hover.erb +24 -0
  415. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_hover1.erb +10 -0
  416. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_html.erb +208 -0
  417. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_html5_svg.erb +20 -0
  418. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_html_entities.erb +2 -0
  419. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_js.erb +160 -0
  420. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_jstree.erb +26 -0
  421. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_namespace.erb +20 -0
  422. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_scope.erb +42 -0
  423. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_scope_other.erb +6 -0
  424. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_simple_html.erb +2 -0
  425. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_slow_unload.erb +17 -0
  426. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_sortable_js.erb +21 -0
  427. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_title.erb +5 -0
  428. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_unload_alert.erb +14 -0
  429. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/with_windows.erb +54 -0
  430. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/spec/views/within_frames.erb +15 -0
  431. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/version.rb +5 -0
  432. data/vendor/bundle/gems/capybara-3.29.0/lib/capybara/window.rb +146 -0
  433. data/vendor/bundle/gems/capybara-3.29.0/spec/basic_node_spec.rb +154 -0
  434. data/vendor/bundle/gems/capybara-3.29.0/spec/capybara_spec.rb +112 -0
  435. data/vendor/bundle/gems/capybara-3.29.0/spec/css_builder_spec.rb +101 -0
  436. data/vendor/bundle/gems/capybara-3.29.0/spec/css_splitter_spec.rb +38 -0
  437. data/vendor/bundle/gems/capybara-3.29.0/spec/dsl_spec.rb +276 -0
  438. data/vendor/bundle/gems/capybara-3.29.0/spec/filter_set_spec.rb +46 -0
  439. data/vendor/bundle/gems/capybara-3.29.0/spec/fixtures/capybara.csv +1 -0
  440. data/vendor/bundle/gems/capybara-3.29.0/spec/fixtures/certificate.pem +25 -0
  441. data/vendor/bundle/gems/capybara-3.29.0/spec/fixtures/key.pem +27 -0
  442. data/vendor/bundle/gems/capybara-3.29.0/spec/fixtures/selenium_driver_rspec_failure.rb +13 -0
  443. data/vendor/bundle/gems/capybara-3.29.0/spec/fixtures/selenium_driver_rspec_success.rb +13 -0
  444. data/vendor/bundle/gems/capybara-3.29.0/spec/minitest_spec.rb +163 -0
  445. data/vendor/bundle/gems/capybara-3.29.0/spec/minitest_spec_spec.rb +162 -0
  446. data/vendor/bundle/gems/capybara-3.29.0/spec/per_session_config_spec.rb +68 -0
  447. data/vendor/bundle/gems/capybara-3.29.0/spec/rack_test_spec.rb +257 -0
  448. data/vendor/bundle/gems/capybara-3.29.0/spec/regexp_dissassembler_spec.rb +246 -0
  449. data/vendor/bundle/gems/capybara-3.29.0/spec/result_spec.rb +185 -0
  450. data/vendor/bundle/gems/capybara-3.29.0/spec/rspec/features_spec.rb +98 -0
  451. data/vendor/bundle/gems/capybara-3.29.0/spec/rspec/scenarios_spec.rb +19 -0
  452. data/vendor/bundle/gems/capybara-3.29.0/spec/rspec/shared_spec_matchers.rb +947 -0
  453. data/vendor/bundle/gems/capybara-3.29.0/spec/rspec/views_spec.rb +14 -0
  454. data/vendor/bundle/gems/capybara-3.29.0/spec/rspec_matchers_spec.rb +62 -0
  455. data/vendor/bundle/gems/capybara-3.29.0/spec/rspec_spec.rb +145 -0
  456. data/vendor/bundle/gems/capybara-3.29.0/spec/sauce_spec_chrome.rb +43 -0
  457. data/vendor/bundle/gems/capybara-3.29.0/spec/selector_spec.rb +513 -0
  458. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_chrome.rb +183 -0
  459. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_chrome_remote.rb +94 -0
  460. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_edge.rb +47 -0
  461. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_firefox.rb +203 -0
  462. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_firefox_remote.rb +80 -0
  463. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_ie.rb +150 -0
  464. data/vendor/bundle/gems/capybara-3.29.0/spec/selenium_spec_safari.rb +148 -0
  465. data/vendor/bundle/gems/capybara-3.29.0/spec/server_spec.rb +250 -0
  466. data/vendor/bundle/gems/capybara-3.29.0/spec/session_spec.rb +91 -0
  467. data/vendor/bundle/gems/capybara-3.29.0/spec/shared_selenium_node.rb +65 -0
  468. data/vendor/bundle/gems/capybara-3.29.0/spec/shared_selenium_session.rb +466 -0
  469. data/vendor/bundle/gems/capybara-3.29.0/spec/spec_helper.rb +100 -0
  470. data/vendor/bundle/gems/capybara-3.29.0/spec/xpath_builder_spec.rb +93 -0
  471. data/vendor/bundle/gems/childprocess-3.0.0/CHANGELOG.md +73 -0
  472. data/vendor/bundle/gems/childprocess-3.0.0/Gemfile +21 -0
  473. data/vendor/bundle/gems/childprocess-3.0.0/LICENSE +20 -0
  474. data/vendor/bundle/gems/childprocess-3.0.0/README.md +218 -0
  475. data/vendor/bundle/gems/childprocess-3.0.0/Rakefile +61 -0
  476. data/vendor/bundle/gems/childprocess-3.0.0/appveyor.yml +42 -0
  477. data/vendor/bundle/gems/childprocess-3.0.0/childprocess.gemspec +26 -0
  478. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess.rb +210 -0
  479. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/abstract_io.rb +36 -0
  480. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/abstract_process.rb +192 -0
  481. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/errors.rb +37 -0
  482. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/jruby.rb +56 -0
  483. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/jruby/io.rb +16 -0
  484. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/jruby/process.rb +184 -0
  485. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/jruby/pump.rb +53 -0
  486. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/tools/generator.rb +146 -0
  487. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix.rb +9 -0
  488. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/fork_exec_process.rb +78 -0
  489. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/io.rb +21 -0
  490. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/lib.rb +186 -0
  491. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/platform/i386-linux.rb +12 -0
  492. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/platform/i386-solaris.rb +11 -0
  493. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/platform/x86_64-linux.rb +12 -0
  494. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/platform/x86_64-macosx.rb +11 -0
  495. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/posix_spawn_process.rb +134 -0
  496. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/unix/process.rb +90 -0
  497. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/version.rb +3 -0
  498. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows.rb +38 -0
  499. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows/handle.rb +91 -0
  500. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows/io.rb +25 -0
  501. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows/lib.rb +416 -0
  502. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows/process.rb +130 -0
  503. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows/process_builder.rb +178 -0
  504. data/vendor/bundle/gems/childprocess-3.0.0/lib/childprocess/windows/structs.rb +149 -0
  505. data/vendor/bundle/gems/childprocess-3.0.0/spec/abstract_io_spec.rb +12 -0
  506. data/vendor/bundle/gems/childprocess-3.0.0/spec/childprocess_spec.rb +447 -0
  507. data/vendor/bundle/gems/childprocess-3.0.0/spec/get_env.ps1 +13 -0
  508. data/vendor/bundle/gems/childprocess-3.0.0/spec/io_spec.rb +228 -0
  509. data/vendor/bundle/gems/childprocess-3.0.0/spec/jruby_spec.rb +24 -0
  510. data/vendor/bundle/gems/childprocess-3.0.0/spec/pid_behavior.rb +12 -0
  511. data/vendor/bundle/gems/childprocess-3.0.0/spec/platform_detection_spec.rb +86 -0
  512. data/vendor/bundle/gems/childprocess-3.0.0/spec/spec_helper.rb +270 -0
  513. data/vendor/bundle/gems/childprocess-3.0.0/spec/unix_spec.rb +57 -0
  514. data/vendor/bundle/gems/childprocess-3.0.0/spec/windows_spec.rb +23 -0
  515. data/vendor/bundle/gems/coveralls-0.8.23/CHANGELOG.md +21 -0
  516. data/vendor/bundle/gems/coveralls-0.8.23/Gemfile +41 -0
  517. data/vendor/bundle/gems/coveralls-0.8.23/LICENSE +22 -0
  518. data/vendor/bundle/gems/coveralls-0.8.23/README.md +3 -0
  519. data/vendor/bundle/gems/coveralls-0.8.23/Rakefile +14 -0
  520. data/vendor/bundle/gems/coveralls-0.8.23/bin/coveralls +9 -0
  521. data/vendor/bundle/gems/coveralls-0.8.23/coveralls-ruby.gemspec +29 -0
  522. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls.rb +101 -0
  523. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/api.rb +128 -0
  524. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/command.rb +69 -0
  525. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/configuration.rb +233 -0
  526. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/output.rb +114 -0
  527. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/rake/task.rb +19 -0
  528. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/simplecov.rb +101 -0
  529. data/vendor/bundle/gems/coveralls-0.8.23/lib/coveralls/version.rb +3 -0
  530. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/configuration_spec.rb +368 -0
  531. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/coveralls_spec.rb +106 -0
  532. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/controllers/sample.rb +12 -0
  533. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/models/airplane.rb +10 -0
  534. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/models/dog.rb +10 -0
  535. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/models/house.rb +10 -0
  536. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/models/robot.rb +10 -0
  537. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/models/user.rb +10 -0
  538. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/app/vendor/vendored_gem.rb +1 -0
  539. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/fixtures/sample.rb +12 -0
  540. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/output_spec.rb +92 -0
  541. data/vendor/bundle/gems/coveralls-0.8.23/spec/coveralls/simplecov_spec.rb +82 -0
  542. data/vendor/bundle/gems/coveralls-0.8.23/spec/spec_helper.rb +82 -0
  543. data/vendor/bundle/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  544. data/vendor/bundle/gems/diff-lcs-1.3/Contributing.md +83 -0
  545. data/vendor/bundle/gems/diff-lcs-1.3/History.md +220 -0
  546. data/vendor/bundle/gems/diff-lcs-1.3/License.md +39 -0
  547. data/vendor/bundle/gems/diff-lcs-1.3/Manifest.txt +37 -0
  548. data/vendor/bundle/gems/diff-lcs-1.3/README.rdoc +84 -0
  549. data/vendor/bundle/gems/diff-lcs-1.3/Rakefile +57 -0
  550. data/vendor/bundle/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  551. data/vendor/bundle/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  552. data/vendor/bundle/gems/diff-lcs-1.3/bin/ldiff +6 -0
  553. data/vendor/bundle/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  554. data/vendor/bundle/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  555. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  556. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  557. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  558. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  559. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  560. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  561. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  562. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  563. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  564. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  565. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  566. data/vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  567. data/vendor/bundle/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  568. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  569. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  570. data/vendor/bundle/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  571. data/vendor/bundle/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  572. data/vendor/bundle/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  573. data/vendor/bundle/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  574. data/vendor/bundle/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  575. data/vendor/bundle/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  576. data/vendor/bundle/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  577. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  578. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  579. data/vendor/bundle/gems/docile-1.3.2/Gemfile +12 -0
  580. data/vendor/bundle/gems/docile-1.3.2/HISTORY.md +89 -0
  581. data/vendor/bundle/gems/docile-1.3.2/LICENSE +21 -0
  582. data/vendor/bundle/gems/docile-1.3.2/README.md +381 -0
  583. data/vendor/bundle/gems/docile-1.3.2/Rakefile +28 -0
  584. data/vendor/bundle/gems/docile-1.3.2/docile.gemspec +55 -0
  585. data/vendor/bundle/gems/docile-1.3.2/lib/docile.rb +123 -0
  586. data/vendor/bundle/gems/docile-1.3.2/lib/docile/chaining_fallback_context_proxy.rb +20 -0
  587. data/vendor/bundle/gems/docile-1.3.2/lib/docile/execution.rb +41 -0
  588. data/vendor/bundle/gems/docile-1.3.2/lib/docile/fallback_context_proxy.rb +93 -0
  589. data/vendor/bundle/gems/docile-1.3.2/lib/docile/version.rb +4 -0
  590. data/vendor/bundle/gems/docile-1.3.2/on_what.rb +26 -0
  591. data/vendor/bundle/gems/emot-0.0.4/Gemfile +4 -0
  592. data/vendor/bundle/gems/emot-0.0.4/LICENSE.txt +22 -0
  593. data/vendor/bundle/gems/emot-0.0.4/README.md +87 -0
  594. data/vendor/bundle/gems/emot-0.0.4/Rakefile +7 -0
  595. data/vendor/bundle/gems/emot-0.0.4/bin/emot +5 -0
  596. data/vendor/bundle/gems/emot-0.0.4/emot.gemspec +26 -0
  597. data/vendor/bundle/gems/emot-0.0.4/lib/emot.rb +34 -0
  598. data/vendor/bundle/gems/emot-0.0.4/lib/emot/cli.rb +62 -0
  599. data/vendor/bundle/gems/emot-0.0.4/lib/emot/map.rb +894 -0
  600. data/vendor/bundle/gems/emot-0.0.4/lib/emot/symbol_ext.rb +11 -0
  601. data/vendor/bundle/gems/emot-0.0.4/lib/emot/version.rb +3 -0
  602. data/vendor/bundle/gems/emot-0.0.4/spec/cli_spec.rb +56 -0
  603. data/vendor/bundle/gems/emot-0.0.4/spec/emot_spec.rb +50 -0
  604. data/vendor/bundle/gems/emot-0.0.4/spec/spec_helper.rb +2 -0
  605. data/vendor/bundle/gems/faraday-0.17.1/CHANGELOG.md +216 -0
  606. data/vendor/bundle/gems/faraday-0.17.1/LICENSE.md +20 -0
  607. data/vendor/bundle/gems/faraday-0.17.1/README.md +384 -0
  608. data/vendor/bundle/gems/faraday-0.17.1/Rakefile +13 -0
  609. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday.rb +248 -0
  610. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter.rb +55 -0
  611. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/em_http.rb +243 -0
  612. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/em_http_ssl_patch.rb +56 -0
  613. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/em_synchrony.rb +106 -0
  614. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/em_synchrony/parallel_manager.rb +66 -0
  615. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/excon.rb +82 -0
  616. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/httpclient.rb +128 -0
  617. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/net_http.rb +152 -0
  618. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/net_http_persistent.rb +68 -0
  619. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/patron.rb +95 -0
  620. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/rack.rb +58 -0
  621. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/test.rb +213 -0
  622. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/adapter/typhoeus.rb +12 -0
  623. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/autoload.rb +84 -0
  624. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/connection.rb +484 -0
  625. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/deprecate.rb +101 -0
  626. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/error.rb +119 -0
  627. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/middleware.rb +37 -0
  628. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/options.rb +373 -0
  629. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/parameters.rb +198 -0
  630. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/rack_builder.rb +237 -0
  631. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request.rb +114 -0
  632. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/authorization.rb +41 -0
  633. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/basic_authentication.rb +13 -0
  634. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/instrumentation.rb +36 -0
  635. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/multipart.rb +68 -0
  636. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/retry.rb +213 -0
  637. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/token_authentication.rb +15 -0
  638. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/request/url_encoded.rb +36 -0
  639. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/response.rb +97 -0
  640. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/response/logger.rb +80 -0
  641. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/response/raise_error.rb +25 -0
  642. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/upload_io.rb +67 -0
  643. data/vendor/bundle/gems/faraday-0.17.1/lib/faraday/utils.rb +326 -0
  644. data/vendor/bundle/gems/faraday-0.17.1/spec/faraday/deprecate_spec.rb +69 -0
  645. data/vendor/bundle/gems/faraday-0.17.1/spec/faraday/error_spec.rb +102 -0
  646. data/vendor/bundle/gems/faraday-0.17.1/spec/faraday/response/raise_error_spec.rb +95 -0
  647. data/vendor/bundle/gems/faraday-0.17.1/spec/spec_helper.rb +104 -0
  648. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/default_test.rb +14 -0
  649. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/em_http_test.rb +30 -0
  650. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/em_synchrony_test.rb +32 -0
  651. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/excon_test.rb +30 -0
  652. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/httpclient_test.rb +34 -0
  653. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/integration.rb +263 -0
  654. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/logger_test.rb +136 -0
  655. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/net_http_persistent_test.rb +114 -0
  656. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/net_http_test.rb +79 -0
  657. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/patron_test.rb +40 -0
  658. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/rack_test.rb +38 -0
  659. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/test_middleware_test.rb +157 -0
  660. data/vendor/bundle/gems/faraday-0.17.1/test/adapters/typhoeus_test.rb +38 -0
  661. data/vendor/bundle/gems/faraday-0.17.1/test/authentication_middleware_test.rb +65 -0
  662. data/vendor/bundle/gems/faraday-0.17.1/test/composite_read_io_test.rb +109 -0
  663. data/vendor/bundle/gems/faraday-0.17.1/test/connection_test.rb +738 -0
  664. data/vendor/bundle/gems/faraday-0.17.1/test/env_test.rb +268 -0
  665. data/vendor/bundle/gems/faraday-0.17.1/test/helper.rb +75 -0
  666. data/vendor/bundle/gems/faraday-0.17.1/test/live_server.rb +67 -0
  667. data/vendor/bundle/gems/faraday-0.17.1/test/middleware/instrumentation_test.rb +88 -0
  668. data/vendor/bundle/gems/faraday-0.17.1/test/middleware/retry_test.rb +282 -0
  669. data/vendor/bundle/gems/faraday-0.17.1/test/middleware_stack_test.rb +260 -0
  670. data/vendor/bundle/gems/faraday-0.17.1/test/multibyte.txt +1 -0
  671. data/vendor/bundle/gems/faraday-0.17.1/test/options_test.rb +333 -0
  672. data/vendor/bundle/gems/faraday-0.17.1/test/parameters_test.rb +157 -0
  673. data/vendor/bundle/gems/faraday-0.17.1/test/request_middleware_test.rb +126 -0
  674. data/vendor/bundle/gems/faraday-0.17.1/test/response_middleware_test.rb +72 -0
  675. data/vendor/bundle/gems/faraday-0.17.1/test/strawberry.rb +2 -0
  676. data/vendor/bundle/gems/faraday-0.17.1/test/utils_test.rb +98 -0
  677. data/vendor/bundle/gems/fastimage-2.1.7/MIT-LICENSE +20 -0
  678. data/vendor/bundle/gems/fastimage-2.1.7/README.textile +162 -0
  679. data/vendor/bundle/gems/fastimage-2.1.7/lib/fastimage.rb +788 -0
  680. data/vendor/bundle/gems/hikidoc-0.1.0/COPYING +28 -0
  681. data/vendor/bundle/gems/hikidoc-0.1.0/Gemfile +4 -0
  682. data/vendor/bundle/gems/hikidoc-0.1.0/NEWS +30 -0
  683. data/vendor/bundle/gems/hikidoc-0.1.0/NEWS.ja +30 -0
  684. data/vendor/bundle/gems/hikidoc-0.1.0/README +87 -0
  685. data/vendor/bundle/gems/hikidoc-0.1.0/README.ja +84 -0
  686. data/vendor/bundle/gems/hikidoc-0.1.0/Rakefile +8 -0
  687. data/vendor/bundle/gems/hikidoc-0.1.0/TextFormattingRules +320 -0
  688. data/vendor/bundle/gems/hikidoc-0.1.0/TextFormattingRules.ja +318 -0
  689. data/vendor/bundle/gems/hikidoc-0.1.0/bin/hikidoc +66 -0
  690. data/vendor/bundle/gems/hikidoc-0.1.0/hikidoc.gemspec +23 -0
  691. data/vendor/bundle/gems/hikidoc-0.1.0/lib/hikidoc.rb +912 -0
  692. data/vendor/bundle/gems/hikidoc-0.1.0/test/hikidoc_test.rb +506 -0
  693. data/vendor/bundle/gems/jasmine-2.99.0/Gemfile +30 -0
  694. data/vendor/bundle/gems/jasmine-2.99.0/HOW_TO_TEST.markdown +10 -0
  695. data/vendor/bundle/gems/jasmine-2.99.0/MIT.LICENSE +20 -0
  696. data/vendor/bundle/gems/jasmine-2.99.0/README.markdown +96 -0
  697. data/vendor/bundle/gems/jasmine-2.99.0/RELEASE.markdown +15 -0
  698. data/vendor/bundle/gems/jasmine-2.99.0/Rakefile +49 -0
  699. data/vendor/bundle/gems/jasmine-2.99.0/bin/jasmine +6 -0
  700. data/vendor/bundle/gems/jasmine-2.99.0/jasmine.gemspec +48 -0
  701. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/examples/USAGE +11 -0
  702. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/examples/examples_generator.rb +19 -0
  703. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/examples/templates/app/assets/javascripts/jasmine_examples/Player.js +22 -0
  704. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/examples/templates/app/assets/javascripts/jasmine_examples/Song.js +7 -0
  705. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/examples/templates/spec/javascripts/helpers/jasmine_examples/SpecHelper.js +15 -0
  706. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/examples/templates/spec/javascripts/jasmine_examples/PlayerSpec.js +58 -0
  707. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/install/USAGE +9 -0
  708. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/install/install_generator.rb +18 -0
  709. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/install/templates/spec/javascripts/support/jasmine.yml +145 -0
  710. data/vendor/bundle/gems/jasmine-2.99.0/lib/generators/jasmine/install/templates/spec/javascripts/support/jasmine_helper.rb +16 -0
  711. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine.rb +32 -0
  712. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/application.rb +21 -0
  713. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/asset_expander.rb +66 -0
  714. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/asset_pipeline_mapper.rb +17 -0
  715. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/base.rb +54 -0
  716. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/ci_runner.rb +50 -0
  717. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/command_line_install.txt +13 -0
  718. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/command_line_tool.rb +125 -0
  719. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/config.rb +135 -0
  720. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/configuration.rb +114 -0
  721. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/core_configuration.rb +31 -0
  722. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/dependencies.rb +28 -0
  723. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/formatters/console.rb +118 -0
  724. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/formatters/exit_code.rb +23 -0
  725. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/formatters/multi.rb +17 -0
  726. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/page.rb +11 -0
  727. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/path_expander.rb +22 -0
  728. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/path_mapper.rb +38 -0
  729. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/railtie.rb +22 -0
  730. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/result.rb +58 -0
  731. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/ruby_versions.rb +11 -0
  732. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/run.html.erb +20 -0
  733. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/runners/phantom_boot.js +15 -0
  734. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/runners/phantom_jasmine_run.js +50 -0
  735. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/runners/phantom_js.rb +74 -0
  736. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/server.rb +17 -0
  737. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/tasks/jasmine.rake +71 -0
  738. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/tasks/jasmine_rails.rake +1 -0
  739. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/version.rb +3 -0
  740. data/vendor/bundle/gems/jasmine-2.99.0/lib/jasmine/yaml_config_parser.rb +95 -0
  741. data/vendor/bundle/gems/jasmine-2.99.0/lib/rack/jasmine/cache_control.rb +20 -0
  742. data/vendor/bundle/gems/jasmine-2.99.0/lib/rack/jasmine/focused_suite.rb +17 -0
  743. data/vendor/bundle/gems/jasmine-2.99.0/lib/rack/jasmine/runner.rb +27 -0
  744. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v1.2.1.md +6 -0
  745. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v1.3.2.md +32 -0
  746. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.0.0.md +78 -0
  747. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.0.1.md +31 -0
  748. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.0.2.md +17 -0
  749. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.0.3.md +31 -0
  750. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.1.0.md +11 -0
  751. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.2.0.md +31 -0
  752. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.3.0.md +27 -0
  753. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.3.1.md +14 -0
  754. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.4.0.md +20 -0
  755. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.5.0.md +35 -0
  756. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.5.1.md +12 -0
  757. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.5.2.md +22 -0
  758. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.6.0.md +17 -0
  759. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.6.1.md +11 -0
  760. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.7.0.md +28 -0
  761. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.8.0.md +21 -0
  762. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.9.0.md +22 -0
  763. data/vendor/bundle/gems/jasmine-2.99.0/release_notes/v2.99.md +13 -0
  764. data/vendor/bundle/gems/jasmine-2.99.0/spec/application_integration_spec.rb +15 -0
  765. data/vendor/bundle/gems/jasmine-2.99.0/spec/application_spec.rb +55 -0
  766. data/vendor/bundle/gems/jasmine-2.99.0/spec/base_spec.rb +35 -0
  767. data/vendor/bundle/gems/jasmine-2.99.0/spec/ci_runner_spec.rb +137 -0
  768. data/vendor/bundle/gems/jasmine-2.99.0/spec/configuration_spec.rb +219 -0
  769. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/Rakefile +4 -0
  770. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/afterall_spec.js +8 -0
  771. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/coffee_spec.coffee +3 -0
  772. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/console_log_spec.js +5 -0
  773. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/exception_test.js +1 -0
  774. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/failing_runner.rb +9 -0
  775. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/failing_test.js +5 -0
  776. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/large_test_suite_spec.js +20 -0
  777. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/non_asset_pipeline.js +1 -0
  778. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/non_asset_pipeline_test.js +5 -0
  779. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/phantomConfig.js +6 -0
  780. data/vendor/bundle/gems/jasmine-2.99.0/spec/fixture/viewport_spec.js +6 -0
  781. data/vendor/bundle/gems/jasmine-2.99.0/spec/jasmine_command_line_tool_spec.rb +142 -0
  782. data/vendor/bundle/gems/jasmine-2.99.0/spec/jasmine_pojs_spec.rb +124 -0
  783. data/vendor/bundle/gems/jasmine-2.99.0/spec/jasmine_rails_spec.rb +217 -0
  784. data/vendor/bundle/gems/jasmine-2.99.0/spec/lib/jasmine/formatters/console_spec.rb +205 -0
  785. data/vendor/bundle/gems/jasmine-2.99.0/spec/lib/jasmine/formatters/exit_code_spec.rb +34 -0
  786. data/vendor/bundle/gems/jasmine-2.99.0/spec/lib/jasmine/formatters/multi_spec.rb +27 -0
  787. data/vendor/bundle/gems/jasmine-2.99.0/spec/page_spec.rb +23 -0
  788. data/vendor/bundle/gems/jasmine-2.99.0/spec/path_expander_spec.rb +138 -0
  789. data/vendor/bundle/gems/jasmine-2.99.0/spec/path_mapper_spec.rb +38 -0
  790. data/vendor/bundle/gems/jasmine-2.99.0/spec/performance/phantom_js_runner_performance_spec.rb +23 -0
  791. data/vendor/bundle/gems/jasmine-2.99.0/spec/phantom_js_spec.rb +14 -0
  792. data/vendor/bundle/gems/jasmine-2.99.0/spec/rack/jasmine/runner_spec.rb +25 -0
  793. data/vendor/bundle/gems/jasmine-2.99.0/spec/result_spec.rb +44 -0
  794. data/vendor/bundle/gems/jasmine-2.99.0/spec/server_spec.rb +22 -0
  795. data/vendor/bundle/gems/jasmine-2.99.0/spec/spec_helper.rb +145 -0
  796. data/vendor/bundle/gems/jasmine-2.99.0/spec/yaml_config_parser_spec.rb +239 -0
  797. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/console/console.js +190 -0
  798. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core.js +37 -0
  799. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core.rb +53 -0
  800. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/__init__.py +1 -0
  801. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/boot.js +155 -0
  802. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/boot/boot.js +133 -0
  803. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/boot/node_boot.js +19 -0
  804. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/core.py +60 -0
  805. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/node_example/lib/jasmine_examples/Player.js +24 -0
  806. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/node_example/lib/jasmine_examples/Song.js +9 -0
  807. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/node_example/spec/helpers/jasmine_examples/SpecHelper.js +15 -0
  808. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/node_example/spec/jasmine_examples/PlayerSpec.js +60 -0
  809. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/spec/PlayerSpec.js +58 -0
  810. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/spec/SpecHelper.js +15 -0
  811. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/src/Player.js +22 -0
  812. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/example/src/Song.js +7 -0
  813. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/jasmine-html.js +545 -0
  814. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/jasmine.css +59 -0
  815. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/jasmine.js +5586 -0
  816. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/json2.js +489 -0
  817. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/node_boot.js +41 -0
  818. data/vendor/bundle/gems/jasmine-core-2.99.2/lib/jasmine-core/version.rb +9 -0
  819. data/vendor/bundle/gems/json-2.2.0/CHANGES.md +391 -0
  820. data/vendor/bundle/gems/json-2.2.0/Gemfile +14 -0
  821. data/vendor/bundle/gems/json-2.2.0/README-json-jruby.md +33 -0
  822. data/vendor/bundle/gems/json-2.2.0/README.md +409 -0
  823. data/vendor/bundle/gems/json-2.2.0/Rakefile +408 -0
  824. data/vendor/bundle/gems/json-2.2.0/VERSION +1 -0
  825. data/vendor/bundle/gems/json-2.2.0/ext/json/Makefile +202 -0
  826. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/fbuffer/fbuffer.h +187 -0
  827. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/Makefile +267 -0
  828. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/depend +1 -0
  829. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/extconf.rb +4 -0
  830. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/generator.c +1444 -0
  831. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/generator.h +171 -0
  832. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/generator.o +0 -0
  833. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/generator/generator.so +0 -0
  834. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/Makefile +267 -0
  835. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/depend +1 -0
  836. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/extconf.rb +6 -0
  837. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/parser.c +2131 -0
  838. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/parser.h +91 -0
  839. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/parser.o +0 -0
  840. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/parser.rl +891 -0
  841. data/vendor/bundle/gems/json-2.2.0/ext/json/ext/parser/parser.so +0 -0
  842. data/vendor/bundle/gems/json-2.2.0/ext/json/extconf.rb +2 -0
  843. data/vendor/bundle/gems/json-2.2.0/install.rb +23 -0
  844. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/ByteListTranscoder.java +166 -0
  845. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/Generator.java +443 -0
  846. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/GeneratorMethods.java +231 -0
  847. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/GeneratorService.java +42 -0
  848. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/GeneratorState.java +490 -0
  849. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/OptionsReader.java +113 -0
  850. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/Parser.java +2362 -0
  851. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/Parser.rl +893 -0
  852. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/ParserService.java +34 -0
  853. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/RuntimeInfo.java +116 -0
  854. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/StringDecoder.java +166 -0
  855. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/StringEncoder.java +111 -0
  856. data/vendor/bundle/gems/json-2.2.0/java/src/json/ext/Utils.java +88 -0
  857. data/vendor/bundle/gems/json-2.2.0/json-java.gemspec +38 -0
  858. data/vendor/bundle/gems/json-2.2.0/json.gemspec +0 -0
  859. data/vendor/bundle/gems/json-2.2.0/json_pure.gemspec +38 -0
  860. data/vendor/bundle/gems/json-2.2.0/lib/json.rb +63 -0
  861. data/vendor/bundle/gems/json-2.2.0/lib/json/add/bigdecimal.rb +29 -0
  862. data/vendor/bundle/gems/json-2.2.0/lib/json/add/complex.rb +29 -0
  863. data/vendor/bundle/gems/json-2.2.0/lib/json/add/core.rb +12 -0
  864. data/vendor/bundle/gems/json-2.2.0/lib/json/add/date.rb +34 -0
  865. data/vendor/bundle/gems/json-2.2.0/lib/json/add/date_time.rb +50 -0
  866. data/vendor/bundle/gems/json-2.2.0/lib/json/add/exception.rb +31 -0
  867. data/vendor/bundle/gems/json-2.2.0/lib/json/add/ostruct.rb +31 -0
  868. data/vendor/bundle/gems/json-2.2.0/lib/json/add/range.rb +29 -0
  869. data/vendor/bundle/gems/json-2.2.0/lib/json/add/rational.rb +28 -0
  870. data/vendor/bundle/gems/json-2.2.0/lib/json/add/regexp.rb +30 -0
  871. data/vendor/bundle/gems/json-2.2.0/lib/json/add/set.rb +29 -0
  872. data/vendor/bundle/gems/json-2.2.0/lib/json/add/struct.rb +30 -0
  873. data/vendor/bundle/gems/json-2.2.0/lib/json/add/symbol.rb +25 -0
  874. data/vendor/bundle/gems/json-2.2.0/lib/json/add/time.rb +38 -0
  875. data/vendor/bundle/gems/json-2.2.0/lib/json/common.rb +456 -0
  876. data/vendor/bundle/gems/json-2.2.0/lib/json/ext.rb +15 -0
  877. data/vendor/bundle/gems/json-2.2.0/lib/json/ext/generator.so +0 -0
  878. data/vendor/bundle/gems/json-2.2.0/lib/json/ext/parser.so +0 -0
  879. data/vendor/bundle/gems/json-2.2.0/lib/json/generic_object.rb +71 -0
  880. data/vendor/bundle/gems/json-2.2.0/lib/json/pure.rb +15 -0
  881. data/vendor/bundle/gems/json-2.2.0/lib/json/pure/generator.rb +458 -0
  882. data/vendor/bundle/gems/json-2.2.0/lib/json/pure/parser.rb +311 -0
  883. data/vendor/bundle/gems/json-2.2.0/lib/json/version.rb +9 -0
  884. data/vendor/bundle/gems/json-2.2.0/references/rfc7159.txt +899 -0
  885. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail10.json +1 -0
  886. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail11.json +1 -0
  887. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail12.json +1 -0
  888. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail13.json +1 -0
  889. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail14.json +1 -0
  890. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail18.json +1 -0
  891. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail19.json +1 -0
  892. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail2.json +1 -0
  893. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail20.json +1 -0
  894. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail21.json +1 -0
  895. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail22.json +1 -0
  896. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail23.json +1 -0
  897. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail24.json +1 -0
  898. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail25.json +1 -0
  899. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail27.json +2 -0
  900. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail28.json +2 -0
  901. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail3.json +1 -0
  902. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail4.json +1 -0
  903. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail5.json +1 -0
  904. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail6.json +1 -0
  905. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail7.json +1 -0
  906. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail8.json +1 -0
  907. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/fail9.json +1 -0
  908. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/obsolete_fail1.json +1 -0
  909. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass1.json +56 -0
  910. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass15.json +1 -0
  911. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass16.json +1 -0
  912. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass17.json +1 -0
  913. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass2.json +1 -0
  914. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass26.json +1 -0
  915. data/vendor/bundle/gems/json-2.2.0/tests/fixtures/pass3.json +6 -0
  916. data/vendor/bundle/gems/json-2.2.0/tests/json_addition_test.rb +203 -0
  917. data/vendor/bundle/gems/json-2.2.0/tests/json_common_interface_test.rb +126 -0
  918. data/vendor/bundle/gems/json-2.2.0/tests/json_encoding_test.rb +107 -0
  919. data/vendor/bundle/gems/json-2.2.0/tests/json_ext_parser_test.rb +15 -0
  920. data/vendor/bundle/gems/json-2.2.0/tests/json_fixtures_test.rb +32 -0
  921. data/vendor/bundle/gems/json-2.2.0/tests/json_generator_test.rb +377 -0
  922. data/vendor/bundle/gems/json-2.2.0/tests/json_generic_object_test.rb +82 -0
  923. data/vendor/bundle/gems/json-2.2.0/tests/json_parser_test.rb +472 -0
  924. data/vendor/bundle/gems/json-2.2.0/tests/json_string_matching_test.rb +38 -0
  925. data/vendor/bundle/gems/json-2.2.0/tests/test_helper.rb +17 -0
  926. data/vendor/bundle/gems/json-2.2.0/tools/diff.sh +18 -0
  927. data/vendor/bundle/gems/json-2.2.0/tools/fuzz.rb +131 -0
  928. data/vendor/bundle/gems/json-2.2.0/tools/server.rb +62 -0
  929. data/vendor/bundle/gems/launchy-2.4.3/CONTRIBUTING.md +59 -0
  930. data/vendor/bundle/gems/launchy-2.4.3/HISTORY.md +160 -0
  931. data/vendor/bundle/gems/launchy-2.4.3/LICENSE +16 -0
  932. data/vendor/bundle/gems/launchy-2.4.3/Manifest.txt +38 -0
  933. data/vendor/bundle/gems/launchy-2.4.3/README.md +136 -0
  934. data/vendor/bundle/gems/launchy-2.4.3/Rakefile +25 -0
  935. data/vendor/bundle/gems/launchy-2.4.3/bin/launchy +4 -0
  936. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy.rb +152 -0
  937. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/application.rb +62 -0
  938. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb +82 -0
  939. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/argv.rb +36 -0
  940. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/cli.rb +89 -0
  941. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/deprecated.rb +52 -0
  942. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/descendant_tracker.rb +49 -0
  943. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/detect.rb +10 -0
  944. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/detect/host_os.rb +32 -0
  945. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/detect/host_os_family.rb +71 -0
  946. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/detect/nix_desktop_environment.rb +92 -0
  947. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/detect/ruby_engine.rb +78 -0
  948. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/detect/runner.rb +152 -0
  949. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/error.rb +6 -0
  950. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/os_family.rb +8 -0
  951. data/vendor/bundle/gems/launchy-2.4.3/lib/launchy/version.rb +18 -0
  952. data/vendor/bundle/gems/launchy-2.4.3/spec/application_spec.rb +43 -0
  953. data/vendor/bundle/gems/launchy-2.4.3/spec/applications/browser_spec.rb +68 -0
  954. data/vendor/bundle/gems/launchy-2.4.3/spec/cli_spec.rb +75 -0
  955. data/vendor/bundle/gems/launchy-2.4.3/spec/detect/host_os_family_spec.rb +40 -0
  956. data/vendor/bundle/gems/launchy-2.4.3/spec/detect/host_os_spec.rb +19 -0
  957. data/vendor/bundle/gems/launchy-2.4.3/spec/detect/nix_desktop_environment_spec.rb +36 -0
  958. data/vendor/bundle/gems/launchy-2.4.3/spec/detect/ruby_engine_spec.rb +37 -0
  959. data/vendor/bundle/gems/launchy-2.4.3/spec/detect/runner_spec.rb +103 -0
  960. data/vendor/bundle/gems/launchy-2.4.3/spec/launchy_spec.rb +110 -0
  961. data/vendor/bundle/gems/launchy-2.4.3/spec/mock_application.rb +9 -0
  962. data/vendor/bundle/gems/launchy-2.4.3/spec/spec_helper.rb +11 -0
  963. data/vendor/bundle/gems/launchy-2.4.3/spec/tattle-host-os.yaml +427 -0
  964. data/vendor/bundle/gems/launchy-2.4.3/spec/version_spec.rb +11 -0
  965. data/vendor/bundle/gems/launchy-2.4.3/tasks/default.rake +272 -0
  966. data/vendor/bundle/gems/launchy-2.4.3/tasks/this.rb +209 -0
  967. data/vendor/bundle/gems/mail-2.7.1/MIT-LICENSE +20 -0
  968. data/vendor/bundle/gems/mail-2.7.1/README.md +695 -0
  969. data/vendor/bundle/gems/mail-2.7.1/lib/mail.rb +85 -0
  970. data/vendor/bundle/gems/mail-2.7.1/lib/mail/attachments_list.rb +110 -0
  971. data/vendor/bundle/gems/mail-2.7.1/lib/mail/body.rb +328 -0
  972. data/vendor/bundle/gems/mail-2.7.1/lib/mail/check_delivery_params.rb +60 -0
  973. data/vendor/bundle/gems/mail-2.7.1/lib/mail/configuration.rb +78 -0
  974. data/vendor/bundle/gems/mail-2.7.1/lib/mail/constants.rb +57 -0
  975. data/vendor/bundle/gems/mail-2.7.1/lib/mail/core_extensions/smtp.rb +28 -0
  976. data/vendor/bundle/gems/mail-2.7.1/lib/mail/core_extensions/string.rb +17 -0
  977. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements.rb +15 -0
  978. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/address.rb +258 -0
  979. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/address_list.rb +34 -0
  980. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/content_disposition_element.rb +20 -0
  981. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/content_location_element.rb +17 -0
  982. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/content_transfer_encoding_element.rb +13 -0
  983. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/content_type_element.rb +21 -0
  984. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/date_time_element.rb +15 -0
  985. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/envelope_from_element.rb +33 -0
  986. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/message_ids_element.rb +22 -0
  987. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/mime_version_element.rb +15 -0
  988. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/phrase_list.rb +14 -0
  989. data/vendor/bundle/gems/mail-2.7.1/lib/mail/elements/received_element.rb +21 -0
  990. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings.rb +343 -0
  991. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/7bit.rb +22 -0
  992. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/8bit.rb +18 -0
  993. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/base64.rb +38 -0
  994. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/binary.rb +13 -0
  995. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/identity.rb +24 -0
  996. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/quoted_printable.rb +45 -0
  997. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/transfer_encoding.rb +77 -0
  998. data/vendor/bundle/gems/mail-2.7.1/lib/mail/encodings/unix_to_unix.rb +20 -0
  999. data/vendor/bundle/gems/mail-2.7.1/lib/mail/envelope.rb +31 -0
  1000. data/vendor/bundle/gems/mail-2.7.1/lib/mail/field.rb +299 -0
  1001. data/vendor/bundle/gems/mail-2.7.1/lib/mail/field_list.rb +34 -0
  1002. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields.rb +36 -0
  1003. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/bcc_field.rb +68 -0
  1004. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/cc_field.rb +55 -0
  1005. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/comments_field.rb +42 -0
  1006. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/common/address_container.rb +17 -0
  1007. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/common/common_address.rb +161 -0
  1008. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/common/common_date.rb +36 -0
  1009. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/common/common_field.rb +52 -0
  1010. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/common/common_message_id.rb +49 -0
  1011. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/common/parameter_hash.rb +59 -0
  1012. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/content_description_field.rb +20 -0
  1013. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/content_disposition_field.rb +71 -0
  1014. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/content_id_field.rb +63 -0
  1015. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/content_location_field.rb +43 -0
  1016. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/content_transfer_encoding_field.rb +45 -0
  1017. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/content_type_field.rb +197 -0
  1018. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/date_field.rb +57 -0
  1019. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/from_field.rb +55 -0
  1020. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/in_reply_to_field.rb +57 -0
  1021. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/keywords_field.rb +44 -0
  1022. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/message_id_field.rb +83 -0
  1023. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/mime_version_field.rb +54 -0
  1024. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/optional_field.rb +17 -0
  1025. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/received_field.rb +76 -0
  1026. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/references_field.rb +57 -0
  1027. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/reply_to_field.rb +55 -0
  1028. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_bcc_field.rb +55 -0
  1029. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_cc_field.rb +55 -0
  1030. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_date_field.rb +35 -0
  1031. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_from_field.rb +55 -0
  1032. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_message_id_field.rb +35 -0
  1033. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_sender_field.rb +62 -0
  1034. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/resent_to_field.rb +55 -0
  1035. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/return_path_field.rb +65 -0
  1036. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/sender_field.rb +67 -0
  1037. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/structured_field.rb +52 -0
  1038. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/subject_field.rb +17 -0
  1039. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/to_field.rb +55 -0
  1040. data/vendor/bundle/gems/mail-2.7.1/lib/mail/fields/unstructured_field.rb +222 -0
  1041. data/vendor/bundle/gems/mail-2.7.1/lib/mail/header.rb +278 -0
  1042. data/vendor/bundle/gems/mail-2.7.1/lib/mail/indifferent_hash.rb +147 -0
  1043. data/vendor/bundle/gems/mail-2.7.1/lib/mail/mail.rb +262 -0
  1044. data/vendor/bundle/gems/mail-2.7.1/lib/mail/matchers/attachment_matchers.rb +29 -0
  1045. data/vendor/bundle/gems/mail-2.7.1/lib/mail/matchers/has_sent_mail.rb +201 -0
  1046. data/vendor/bundle/gems/mail-2.7.1/lib/mail/message.rb +2170 -0
  1047. data/vendor/bundle/gems/mail-2.7.1/lib/mail/multibyte.rb +92 -0
  1048. data/vendor/bundle/gems/mail-2.7.1/lib/mail/multibyte/chars.rb +476 -0
  1049. data/vendor/bundle/gems/mail-2.7.1/lib/mail/multibyte/unicode.rb +405 -0
  1050. data/vendor/bundle/gems/mail-2.7.1/lib/mail/multibyte/utils.rb +61 -0
  1051. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network.rb +16 -0
  1052. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/exim.rb +49 -0
  1053. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/file_delivery.rb +42 -0
  1054. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/logger_delivery.rb +37 -0
  1055. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/sendmail.rb +95 -0
  1056. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb +149 -0
  1057. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp_connection.rb +66 -0
  1058. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/delivery_methods/test_mailer.rb +42 -0
  1059. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/retriever_methods/base.rb +64 -0
  1060. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/retriever_methods/imap.rb +187 -0
  1061. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/retriever_methods/pop3.rb +143 -0
  1062. data/vendor/bundle/gems/mail-2.7.1/lib/mail/network/retriever_methods/test_retriever.rb +44 -0
  1063. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parser_tools.rb +15 -0
  1064. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers.rb +19 -0
  1065. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/address_lists_parser.rb +33236 -0
  1066. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/address_lists_parser.rl +172 -0
  1067. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_disposition_parser.rb +895 -0
  1068. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_disposition_parser.rl +82 -0
  1069. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_location_parser.rb +816 -0
  1070. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_location_parser.rl +71 -0
  1071. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_transfer_encoding_parser.rb +516 -0
  1072. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_transfer_encoding_parser.rl +64 -0
  1073. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_type_parser.rb +1042 -0
  1074. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/content_type_parser.rl +83 -0
  1075. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/date_time_parser.rb +885 -0
  1076. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/date_time_parser.rl +62 -0
  1077. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/envelope_from_parser.rb +3581 -0
  1078. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/envelope_from_parser.rl +82 -0
  1079. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/message_ids_parser.rb +2854 -0
  1080. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/message_ids_parser.rl +82 -0
  1081. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/mime_version_parser.rb +507 -0
  1082. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/mime_version_parser.rl +61 -0
  1083. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/phrase_lists_parser.rb +878 -0
  1084. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/phrase_lists_parser.rl +83 -0
  1085. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/received_parser.rb +8776 -0
  1086. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/received_parser.rl +84 -0
  1087. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  1088. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  1089. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc2045_mime.rl +16 -0
  1090. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  1091. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  1092. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  1093. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc5322.rl +59 -0
  1094. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc5322_address.rl +72 -0
  1095. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc5322_date_time.rl +37 -0
  1096. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  1097. data/vendor/bundle/gems/mail-2.7.1/lib/mail/part.rb +123 -0
  1098. data/vendor/bundle/gems/mail-2.7.1/lib/mail/parts_list.rb +74 -0
  1099. data/vendor/bundle/gems/mail-2.7.1/lib/mail/utilities.rb +324 -0
  1100. data/vendor/bundle/gems/mail-2.7.1/lib/mail/values/unicode_tables.dat +0 -0
  1101. data/vendor/bundle/gems/mail-2.7.1/lib/mail/version.rb +17 -0
  1102. data/vendor/bundle/gems/mail-2.7.1/lib/mail/version_specific/ruby_1_8.rb +163 -0
  1103. data/vendor/bundle/gems/mail-2.7.1/lib/mail/version_specific/ruby_1_9.rb +278 -0
  1104. data/vendor/bundle/gems/mime-types-3.3/Code-of-Conduct.md +73 -0
  1105. data/vendor/bundle/gems/mime-types-3.3/Contributing.md +141 -0
  1106. data/vendor/bundle/gems/mime-types-3.3/History.md +223 -0
  1107. data/vendor/bundle/gems/mime-types-3.3/Licence.md +25 -0
  1108. data/vendor/bundle/gems/mime-types-3.3/Manifest.txt +31 -0
  1109. data/vendor/bundle/gems/mime-types-3.3/README.rdoc +200 -0
  1110. data/vendor/bundle/gems/mime-types-3.3/Rakefile +284 -0
  1111. data/vendor/bundle/gems/mime-types-3.3/lib/mime-types.rb +3 -0
  1112. data/vendor/bundle/gems/mime-types-3.3/lib/mime/type.rb +587 -0
  1113. data/vendor/bundle/gems/mime-types-3.3/lib/mime/type/columnar.rb +57 -0
  1114. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types.rb +231 -0
  1115. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/_columnar.rb +136 -0
  1116. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/cache.rb +58 -0
  1117. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/columnar.rb +3 -0
  1118. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/container.rb +96 -0
  1119. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/deprecations.rb +32 -0
  1120. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/full.rb +19 -0
  1121. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/loader.rb +146 -0
  1122. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/logger.rb +39 -0
  1123. data/vendor/bundle/gems/mime-types-3.3/lib/mime/types/registry.rb +90 -0
  1124. data/vendor/bundle/gems/mime-types-3.3/test/bad-fixtures/malformed +9 -0
  1125. data/vendor/bundle/gems/mime-types-3.3/test/fixture/json.json +1 -0
  1126. data/vendor/bundle/gems/mime-types-3.3/test/fixture/old-data +9 -0
  1127. data/vendor/bundle/gems/mime-types-3.3/test/fixture/yaml.yaml +55 -0
  1128. data/vendor/bundle/gems/mime-types-3.3/test/minitest_helper.rb +13 -0
  1129. data/vendor/bundle/gems/mime-types-3.3/test/test_mime_type.rb +610 -0
  1130. data/vendor/bundle/gems/mime-types-3.3/test/test_mime_types.rb +169 -0
  1131. data/vendor/bundle/gems/mime-types-3.3/test/test_mime_types_cache.rb +118 -0
  1132. data/vendor/bundle/gems/mime-types-3.3/test/test_mime_types_class.rb +159 -0
  1133. data/vendor/bundle/gems/mime-types-3.3/test/test_mime_types_lazy.rb +49 -0
  1134. data/vendor/bundle/gems/mime-types-3.3/test/test_mime_types_loader.rb +32 -0
  1135. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Code-of-Conduct.md +75 -0
  1136. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Contributing.md +162 -0
  1137. data/vendor/bundle/gems/mime-types-data-3.2019.1009/History.md +406 -0
  1138. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Licence.md +25 -0
  1139. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Manifest.txt +31 -0
  1140. data/vendor/bundle/gems/mime-types-data-3.2019.1009/README.md +63 -0
  1141. data/vendor/bundle/gems/mime-types-data-3.2019.1009/Rakefile +94 -0
  1142. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime-types.json +1 -0
  1143. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.content_type.column +2215 -0
  1144. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.docs.column +2215 -0
  1145. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.encoding.column +2215 -0
  1146. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.flags.column +2215 -0
  1147. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.friendly.column +2215 -0
  1148. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.pext.column +2215 -0
  1149. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.use_instead.column +2215 -0
  1150. data/vendor/bundle/gems/mime-types-data-3.2019.1009/data/mime.xrefs.column +2215 -0
  1151. data/vendor/bundle/gems/mime-types-data-3.2019.1009/lib/mime-types-data.rb +3 -0
  1152. data/vendor/bundle/gems/mime-types-data-3.2019.1009/lib/mime/types/data.rb +21 -0
  1153. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/application.yaml +16361 -0
  1154. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/audio.yaml +1644 -0
  1155. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/chemical.yaml +71 -0
  1156. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/conference.yaml +9 -0
  1157. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/drawing.yaml +15 -0
  1158. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/font.yaml +65 -0
  1159. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/image.yaml +1069 -0
  1160. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/message.yaml +200 -0
  1161. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/model.yaml +302 -0
  1162. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/multipart.yaml +179 -0
  1163. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/text.yaml +1055 -0
  1164. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/video.yaml +1070 -0
  1165. data/vendor/bundle/gems/mime-types-data-3.2019.1009/types/world.yaml +8 -0
  1166. data/vendor/bundle/gems/mini_mime-1.0.2/CHANGELOG +37 -0
  1167. data/vendor/bundle/gems/mini_mime-1.0.2/CODE_OF_CONDUCT.md +74 -0
  1168. data/vendor/bundle/gems/mini_mime-1.0.2/Gemfile +8 -0
  1169. data/vendor/bundle/gems/mini_mime-1.0.2/LICENSE.txt +21 -0
  1170. data/vendor/bundle/gems/mini_mime-1.0.2/README.md +111 -0
  1171. data/vendor/bundle/gems/mini_mime-1.0.2/Rakefile +96 -0
  1172. data/vendor/bundle/gems/mini_mime-1.0.2/bench/bench.rb +52 -0
  1173. data/vendor/bundle/gems/mini_mime-1.0.2/bin/console +14 -0
  1174. data/vendor/bundle/gems/mini_mime-1.0.2/bin/setup +8 -0
  1175. data/vendor/bundle/gems/mini_mime-1.0.2/lib/db/content_type_mime.db +853 -0
  1176. data/vendor/bundle/gems/mini_mime-1.0.2/lib/db/ext_mime.db +1172 -0
  1177. data/vendor/bundle/gems/mini_mime-1.0.2/lib/mini_mime.rb +166 -0
  1178. data/vendor/bundle/gems/mini_mime-1.0.2/lib/mini_mime/version.rb +3 -0
  1179. data/vendor/bundle/gems/mini_mime-1.0.2/mini_mime.gemspec +28 -0
  1180. data/vendor/bundle/gems/mini_portile2-2.4.0/CHANGELOG.md +209 -0
  1181. data/vendor/bundle/gems/mini_portile2-2.4.0/Gemfile +4 -0
  1182. data/vendor/bundle/gems/mini_portile2-2.4.0/LICENSE.txt +20 -0
  1183. data/vendor/bundle/gems/mini_portile2-2.4.0/README.md +245 -0
  1184. data/vendor/bundle/gems/mini_portile2-2.4.0/Rakefile +29 -0
  1185. data/vendor/bundle/gems/mini_portile2-2.4.0/appveyor.yml +25 -0
  1186. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/mini_portile.yml +141 -0
  1187. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/tasks/rake-test/task.ps1 +11 -0
  1188. data/vendor/bundle/gems/mini_portile2-2.4.0/concourse/tasks/rake-test/task.sh +13 -0
  1189. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2.rb +3 -0
  1190. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/mini_portile.rb +556 -0
  1191. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/mini_portile_cmake.rb +40 -0
  1192. data/vendor/bundle/gems/mini_portile2-2.4.0/lib/mini_portile2/version.rb +3 -0
  1193. data/vendor/bundle/gems/mini_portile2-2.4.0/mini_portile2.gemspec +42 -0
  1194. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/git/config +4 -0
  1195. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data +1 -0
  1196. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data.asc +9 -0
  1197. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/gpg-fixtures/data.invalid.asc +9 -0
  1198. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/patch 1.diff +7 -0
  1199. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test mini portile-1.0.0/configure +11 -0
  1200. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-cmake-1.0/CMakeLists.txt +7 -0
  1201. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-cmake-1.0/hello.c +4 -0
  1202. data/vendor/bundle/gems/mini_portile2-2.4.0/test/assets/test-download-archive.tar.gz +1 -0
  1203. data/vendor/bundle/gems/mini_portile2-2.4.0/test/helper.rb +60 -0
  1204. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_cmake.rb +64 -0
  1205. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_cook.rb +115 -0
  1206. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_digest.rb +215 -0
  1207. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_download.rb +71 -0
  1208. data/vendor/bundle/gems/mini_portile2-2.4.0/test/test_proxy.rb +121 -0
  1209. data/vendor/bundle/gems/multipart-post-2.1.1/Gemfile +6 -0
  1210. data/vendor/bundle/gems/multipart-post-2.1.1/History.txt +64 -0
  1211. data/vendor/bundle/gems/multipart-post-2.1.1/LICENSE +21 -0
  1212. data/vendor/bundle/gems/multipart-post-2.1.1/Manifest.txt +9 -0
  1213. data/vendor/bundle/gems/multipart-post-2.1.1/README.md +127 -0
  1214. data/vendor/bundle/gems/multipart-post-2.1.1/Rakefile +6 -0
  1215. data/vendor/bundle/gems/multipart-post-2.1.1/lib/composite_io.rb +108 -0
  1216. data/vendor/bundle/gems/multipart-post-2.1.1/lib/multipart_post.rb +9 -0
  1217. data/vendor/bundle/gems/multipart-post-2.1.1/lib/multipartable.rb +48 -0
  1218. data/vendor/bundle/gems/multipart-post-2.1.1/lib/net/http/post/multipart.rb +28 -0
  1219. data/vendor/bundle/gems/multipart-post-2.1.1/lib/parts.rb +126 -0
  1220. data/vendor/bundle/gems/multipart-post-2.1.1/multipart-post.gemspec +23 -0
  1221. data/vendor/bundle/gems/multipart-post-2.1.1/spec/composite_io_spec.rb +138 -0
  1222. data/vendor/bundle/gems/multipart-post-2.1.1/spec/multibyte.txt +1 -0
  1223. data/vendor/bundle/gems/multipart-post-2.1.1/spec/net/http/post/multipart_spec.rb +123 -0
  1224. data/vendor/bundle/gems/multipart-post-2.1.1/spec/parts_spec.rb +102 -0
  1225. data/vendor/bundle/gems/multipart-post-2.1.1/spec/spec_helper.rb +29 -0
  1226. data/vendor/bundle/gems/nokogiri-1.10.5/LICENSE-DEPENDENCIES.md +1614 -0
  1227. data/vendor/bundle/gems/nokogiri-1.10.5/LICENSE.md +9 -0
  1228. data/vendor/bundle/gems/nokogiri-1.10.5/README.md +198 -0
  1229. data/vendor/bundle/gems/nokogiri-1.10.5/bin/nokogiri +118 -0
  1230. data/vendor/bundle/gems/nokogiri-1.10.5/dependencies.yml +74 -0
  1231. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/Makefile +628 -0
  1232. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/depend +358 -0
  1233. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/extconf.rb +686 -0
  1234. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_document.c +170 -0
  1235. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_document.h +10 -0
  1236. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_document.o +0 -0
  1237. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_element_description.c +279 -0
  1238. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_element_description.h +10 -0
  1239. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_element_description.o +0 -0
  1240. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_entity_lookup.c +32 -0
  1241. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_entity_lookup.h +8 -0
  1242. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_entity_lookup.o +0 -0
  1243. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_sax_parser_context.c +116 -0
  1244. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_sax_parser_context.h +11 -0
  1245. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_sax_parser_context.o +0 -0
  1246. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_sax_push_parser.c +87 -0
  1247. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_sax_push_parser.h +9 -0
  1248. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/html_sax_push_parser.o +0 -0
  1249. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/nokogiri.c +141 -0
  1250. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/nokogiri.h +121 -0
  1251. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/nokogiri.o +0 -0
  1252. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/nokogiri.so +0 -0
  1253. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_attr.c +103 -0
  1254. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_attr.h +9 -0
  1255. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_attr.o +0 -0
  1256. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_attribute_decl.c +70 -0
  1257. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_attribute_decl.h +9 -0
  1258. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_attribute_decl.o +0 -0
  1259. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_cdata.c +62 -0
  1260. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_cdata.h +9 -0
  1261. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_cdata.o +0 -0
  1262. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_comment.c +69 -0
  1263. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_comment.h +9 -0
  1264. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_comment.o +0 -0
  1265. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_document.c +608 -0
  1266. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_document.h +23 -0
  1267. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_document.o +0 -0
  1268. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_document_fragment.c +48 -0
  1269. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_document_fragment.h +10 -0
  1270. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_document_fragment.o +0 -0
  1271. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_dtd.c +202 -0
  1272. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_dtd.h +10 -0
  1273. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_dtd.o +0 -0
  1274. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_element_content.c +123 -0
  1275. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_element_content.h +10 -0
  1276. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_element_content.o +0 -0
  1277. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_element_decl.c +69 -0
  1278. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_element_decl.h +9 -0
  1279. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_element_decl.o +0 -0
  1280. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_encoding_handler.c +79 -0
  1281. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_encoding_handler.h +8 -0
  1282. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_encoding_handler.o +0 -0
  1283. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_entity_decl.c +110 -0
  1284. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_entity_decl.h +10 -0
  1285. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_entity_decl.o +0 -0
  1286. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_entity_reference.c +52 -0
  1287. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_entity_reference.h +9 -0
  1288. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_entity_reference.o +0 -0
  1289. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_io.c +61 -0
  1290. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_io.h +11 -0
  1291. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_io.o +0 -0
  1292. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  1293. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  1294. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_libxml2_hacks.o +0 -0
  1295. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_namespace.c +111 -0
  1296. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_namespace.h +14 -0
  1297. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_namespace.o +0 -0
  1298. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_node.c +1753 -0
  1299. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_node.h +13 -0
  1300. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_node.o +0 -0
  1301. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_node_set.c +486 -0
  1302. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_node_set.h +12 -0
  1303. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_node_set.o +0 -0
  1304. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_processing_instruction.c +56 -0
  1305. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_processing_instruction.h +9 -0
  1306. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_processing_instruction.o +0 -0
  1307. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_reader.c +668 -0
  1308. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_reader.h +10 -0
  1309. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_reader.o +0 -0
  1310. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_relax_ng.c +161 -0
  1311. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_relax_ng.h +9 -0
  1312. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_relax_ng.o +0 -0
  1313. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_parser.c +310 -0
  1314. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_parser.h +39 -0
  1315. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_parser.o +0 -0
  1316. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_parser_context.c +262 -0
  1317. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_parser_context.h +10 -0
  1318. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_parser_context.o +0 -0
  1319. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_push_parser.c +159 -0
  1320. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_push_parser.h +9 -0
  1321. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_sax_push_parser.o +0 -0
  1322. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_schema.c +205 -0
  1323. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_schema.h +9 -0
  1324. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_schema.o +0 -0
  1325. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_syntax_error.c +64 -0
  1326. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_syntax_error.h +13 -0
  1327. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_syntax_error.o +0 -0
  1328. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_text.c +52 -0
  1329. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_text.h +9 -0
  1330. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_text.o +0 -0
  1331. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_xpath_context.c +298 -0
  1332. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_xpath_context.h +10 -0
  1333. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xml_xpath_context.o +0 -0
  1334. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xslt_stylesheet.c +270 -0
  1335. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xslt_stylesheet.h +14 -0
  1336. data/vendor/bundle/gems/nokogiri-1.10.5/ext/nokogiri/xslt_stylesheet.o +0 -0
  1337. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri.rb +144 -0
  1338. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css.rb +27 -0
  1339. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/node.rb +52 -0
  1340. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/parser.rb +750 -0
  1341. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/parser.y +272 -0
  1342. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/parser_extras.rb +91 -0
  1343. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/syntax_error.rb +7 -0
  1344. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/tokenizer.rb +153 -0
  1345. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/tokenizer.rex +55 -0
  1346. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/css/xpath_visitor.rb +230 -0
  1347. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/decorators/slop.rb +42 -0
  1348. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html.rb +37 -0
  1349. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/builder.rb +35 -0
  1350. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/document.rb +335 -0
  1351. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/document_fragment.rb +49 -0
  1352. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/element_description.rb +23 -0
  1353. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/element_description_defaults.rb +671 -0
  1354. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/entity_lookup.rb +13 -0
  1355. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/sax/parser.rb +62 -0
  1356. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/sax/parser_context.rb +16 -0
  1357. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/html/sax/push_parser.rb +36 -0
  1358. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/nokogiri.so +0 -0
  1359. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/syntax_error.rb +4 -0
  1360. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/version.rb +109 -0
  1361. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml.rb +75 -0
  1362. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/attr.rb +14 -0
  1363. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/attribute_decl.rb +18 -0
  1364. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/builder.rb +446 -0
  1365. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/cdata.rb +11 -0
  1366. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/character_data.rb +7 -0
  1367. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/document.rb +285 -0
  1368. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/document_fragment.rb +160 -0
  1369. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/dtd.rb +32 -0
  1370. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/element_content.rb +36 -0
  1371. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/element_decl.rb +13 -0
  1372. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/entity_decl.rb +19 -0
  1373. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/entity_reference.rb +18 -0
  1374. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/namespace.rb +13 -0
  1375. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/node.rb +902 -0
  1376. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/node/save_options.rb +61 -0
  1377. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/node_set.rb +371 -0
  1378. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/notation.rb +6 -0
  1379. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/parse_options.rb +120 -0
  1380. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/pp.rb +2 -0
  1381. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/pp/character_data.rb +18 -0
  1382. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/pp/node.rb +56 -0
  1383. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/processing_instruction.rb +8 -0
  1384. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/reader.rb +112 -0
  1385. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/relax_ng.rb +32 -0
  1386. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/sax.rb +4 -0
  1387. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/sax/document.rb +171 -0
  1388. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/sax/parser.rb +122 -0
  1389. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  1390. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  1391. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/schema.rb +63 -0
  1392. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/searchable.rb +230 -0
  1393. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/syntax_error.rb +70 -0
  1394. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/text.rb +9 -0
  1395. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/xpath.rb +10 -0
  1396. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  1397. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xml/xpath_context.rb +16 -0
  1398. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xslt.rb +56 -0
  1399. data/vendor/bundle/gems/nokogiri-1.10.5/lib/nokogiri/xslt/stylesheet.rb +25 -0
  1400. data/vendor/bundle/gems/nokogiri-1.10.5/lib/xsd/xmlparser/nokogiri.rb +102 -0
  1401. data/vendor/bundle/gems/nokogiri-1.10.5/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +78 -0
  1402. data/vendor/bundle/gems/nokogiri-1.10.5/patches/libxml2/0002-Remove-script-macro-support.patch +40 -0
  1403. data/vendor/bundle/gems/nokogiri-1.10.5/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  1404. data/vendor/bundle/gems/octokit-4.14.0/CONTRIBUTING.md +22 -0
  1405. data/vendor/bundle/gems/octokit-4.14.0/LICENSE.md +20 -0
  1406. data/vendor/bundle/gems/octokit-4.14.0/README.md +790 -0
  1407. data/vendor/bundle/gems/octokit-4.14.0/Rakefile +22 -0
  1408. data/vendor/bundle/gems/octokit-4.14.0/lib/ext/sawyer/relation.rb +10 -0
  1409. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit.rb +59 -0
  1410. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/arguments.rb +14 -0
  1411. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/authentication.rb +82 -0
  1412. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client.rb +242 -0
  1413. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/apps.rb +209 -0
  1414. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/authorizations.rb +250 -0
  1415. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/checks.rb +211 -0
  1416. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/commit_comments.rb +95 -0
  1417. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/commits.rb +239 -0
  1418. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/community_profile.rb +22 -0
  1419. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/contents.rb +164 -0
  1420. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/deployments.rb +72 -0
  1421. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/downloads.rb +50 -0
  1422. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/emojis.rb +18 -0
  1423. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/events.rb +151 -0
  1424. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/feeds.rb +33 -0
  1425. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/gists.rb +234 -0
  1426. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/gitignore.rb +43 -0
  1427. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/hooks.rb +297 -0
  1428. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/issues.rb +363 -0
  1429. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/labels.rb +156 -0
  1430. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/legacy_search.rb +42 -0
  1431. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/licenses.rb +45 -0
  1432. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/markdown.rb +27 -0
  1433. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/marketplace.rb +56 -0
  1434. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/meta.rb +21 -0
  1435. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/milestones.rb +87 -0
  1436. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/notifications.rb +167 -0
  1437. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/objects.rb +141 -0
  1438. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/organizations.rb +792 -0
  1439. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/pages.rb +63 -0
  1440. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/projects.rb +314 -0
  1441. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/pub_sub_hubbub.rb +111 -0
  1442. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/pull_requests.rb +303 -0
  1443. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/rate_limit.rb +54 -0
  1444. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/reactions.rb +158 -0
  1445. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/refs.rb +118 -0
  1446. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/releases.rb +164 -0
  1447. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/repositories.rb +701 -0
  1448. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/repository_invitations.rb +96 -0
  1449. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/reviews.rb +209 -0
  1450. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/say.rb +19 -0
  1451. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/search.rb +91 -0
  1452. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/service_status.rb +38 -0
  1453. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/source_import.rb +161 -0
  1454. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/stats.rb +107 -0
  1455. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/statuses.rb +47 -0
  1456. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/traffic.rb +69 -0
  1457. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/client/users.rb +355 -0
  1458. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/configurable.rb +151 -0
  1459. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/connection.rb +208 -0
  1460. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/default.rb +176 -0
  1461. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_admin_client.rb +40 -0
  1462. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_admin_client/admin_stats.rb +120 -0
  1463. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_admin_client/license.rb +18 -0
  1464. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_admin_client/orgs.rb +27 -0
  1465. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_admin_client/search_indexing.rb +83 -0
  1466. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_admin_client/users.rb +128 -0
  1467. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_management_console_client.rb +50 -0
  1468. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/enterprise_management_console_client/management_console.rb +176 -0
  1469. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/error.rb +300 -0
  1470. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/gist.rb +36 -0
  1471. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/middleware/follow_redirects.rb +131 -0
  1472. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/organization.rb +17 -0
  1473. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/preview.rb +42 -0
  1474. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/rate_limit.rb +33 -0
  1475. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/repo_arguments.rb +19 -0
  1476. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/repository.rb +95 -0
  1477. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/response/feed_parser.rb +21 -0
  1478. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/response/raise_error.rb +21 -0
  1479. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/user.rb +19 -0
  1480. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/version.rb +17 -0
  1481. data/vendor/bundle/gems/octokit-4.14.0/lib/octokit/warnable.rb +17 -0
  1482. data/vendor/bundle/gems/octokit-4.14.0/octokit.gemspec +22 -0
  1483. data/vendor/bundle/gems/phantomjs-2.1.1.0/Gemfile +4 -0
  1484. data/vendor/bundle/gems/phantomjs-2.1.1.0/LICENSE +27 -0
  1485. data/vendor/bundle/gems/phantomjs-2.1.1.0/README.md +78 -0
  1486. data/vendor/bundle/gems/phantomjs-2.1.1.0/Rakefile +2 -0
  1487. data/vendor/bundle/gems/phantomjs-2.1.1.0/lib/phantomjs.rb +61 -0
  1488. data/vendor/bundle/gems/phantomjs-2.1.1.0/lib/phantomjs/platform.rb +162 -0
  1489. data/vendor/bundle/gems/phantomjs-2.1.1.0/lib/phantomjs/poltergeist.rb +13 -0
  1490. data/vendor/bundle/gems/phantomjs-2.1.1.0/lib/phantomjs/version.rb +3 -0
  1491. data/vendor/bundle/gems/phantomjs-2.1.1.0/phantomjs.gemspec +27 -0
  1492. data/vendor/bundle/gems/phantomjs-2.1.1.0/spec/phantomjs_spec.rb +50 -0
  1493. data/vendor/bundle/gems/phantomjs-2.1.1.0/spec/platform_spec.rb +203 -0
  1494. data/vendor/bundle/gems/phantomjs-2.1.1.0/spec/runner.js +5 -0
  1495. data/vendor/bundle/gems/phantomjs-2.1.1.0/spec/spec_helper.rb +11 -0
  1496. data/vendor/bundle/gems/pit-0.0.7/ChangeLog +87 -0
  1497. data/vendor/bundle/gems/pit-0.0.7/Gemfile +6 -0
  1498. data/vendor/bundle/gems/pit-0.0.7/README +59 -0
  1499. data/vendor/bundle/gems/pit-0.0.7/Rakefile +9 -0
  1500. data/vendor/bundle/gems/pit-0.0.7/bin/pit +137 -0
  1501. data/vendor/bundle/gems/pit-0.0.7/lib/pit.rb +97 -0
  1502. data/vendor/bundle/gems/pit-0.0.7/lib/pit/version.rb +4 -0
  1503. data/vendor/bundle/gems/pit-0.0.7/pit.gemspec +19 -0
  1504. data/vendor/bundle/gems/pit-0.0.7/test/pit_test.rb +112 -0
  1505. data/vendor/bundle/gems/pit-0.0.7/test/test_helper.rb +3 -0
  1506. data/vendor/bundle/gems/power_assert-1.1.5/BSDL +22 -0
  1507. data/vendor/bundle/gems/power_assert-1.1.5/COPYING +57 -0
  1508. data/vendor/bundle/gems/power_assert-1.1.5/Gemfile +9 -0
  1509. data/vendor/bundle/gems/power_assert-1.1.5/LEGAL +4 -0
  1510. data/vendor/bundle/gems/power_assert-1.1.5/README.rdoc +81 -0
  1511. data/vendor/bundle/gems/power_assert-1.1.5/Rakefile +59 -0
  1512. data/vendor/bundle/gems/power_assert-1.1.5/bin/console +12 -0
  1513. data/vendor/bundle/gems/power_assert-1.1.5/bin/setup +6 -0
  1514. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert.rb +98 -0
  1515. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/colorize.rb +9 -0
  1516. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/configuration.rb +46 -0
  1517. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/context.rb +235 -0
  1518. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/enable_tracepoint_events.rb +91 -0
  1519. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/inspector.rb +61 -0
  1520. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/parser.rb +251 -0
  1521. data/vendor/bundle/gems/power_assert-1.1.5/lib/power_assert/version.rb +3 -0
  1522. data/vendor/bundle/gems/power_assert-1.1.5/power_assert.gemspec +31 -0
  1523. data/vendor/bundle/gems/public_suffix-4.0.1/2.0-Upgrade.md +52 -0
  1524. data/vendor/bundle/gems/public_suffix-4.0.1/CHANGELOG.md +365 -0
  1525. data/vendor/bundle/gems/public_suffix-4.0.1/Gemfile +12 -0
  1526. data/vendor/bundle/gems/public_suffix-4.0.1/LICENSE.txt +22 -0
  1527. data/vendor/bundle/gems/public_suffix-4.0.1/README.md +202 -0
  1528. data/vendor/bundle/gems/public_suffix-4.0.1/Rakefile +51 -0
  1529. data/vendor/bundle/gems/public_suffix-4.0.1/bin/console +15 -0
  1530. data/vendor/bundle/gems/public_suffix-4.0.1/data/list.txt +13001 -0
  1531. data/vendor/bundle/gems/public_suffix-4.0.1/lib/public_suffix.rb +179 -0
  1532. data/vendor/bundle/gems/public_suffix-4.0.1/lib/public_suffix/domain.rb +235 -0
  1533. data/vendor/bundle/gems/public_suffix-4.0.1/lib/public_suffix/errors.rb +41 -0
  1534. data/vendor/bundle/gems/public_suffix-4.0.1/lib/public_suffix/list.rb +247 -0
  1535. data/vendor/bundle/gems/public_suffix-4.0.1/lib/public_suffix/rule.rb +350 -0
  1536. data/vendor/bundle/gems/public_suffix-4.0.1/lib/public_suffix/version.rb +13 -0
  1537. data/vendor/bundle/gems/public_suffix-4.0.1/public_suffix.gemspec +25 -0
  1538. data/vendor/bundle/gems/public_suffix-4.0.1/test/acceptance_test.rb +129 -0
  1539. data/vendor/bundle/gems/public_suffix-4.0.1/test/benchmarks/bm_find.rb +66 -0
  1540. data/vendor/bundle/gems/public_suffix-4.0.1/test/benchmarks/bm_find_all.rb +102 -0
  1541. data/vendor/bundle/gems/public_suffix-4.0.1/test/benchmarks/bm_names.rb +91 -0
  1542. data/vendor/bundle/gems/public_suffix-4.0.1/test/benchmarks/bm_select.rb +26 -0
  1543. data/vendor/bundle/gems/public_suffix-4.0.1/test/benchmarks/bm_select_incremental.rb +25 -0
  1544. data/vendor/bundle/gems/public_suffix-4.0.1/test/benchmarks/bm_valid.rb +101 -0
  1545. data/vendor/bundle/gems/public_suffix-4.0.1/test/profilers/domain_profiler.rb +12 -0
  1546. data/vendor/bundle/gems/public_suffix-4.0.1/test/profilers/find_profiler.rb +12 -0
  1547. data/vendor/bundle/gems/public_suffix-4.0.1/test/profilers/find_profiler_jp.rb +12 -0
  1548. data/vendor/bundle/gems/public_suffix-4.0.1/test/profilers/initialization_profiler.rb +11 -0
  1549. data/vendor/bundle/gems/public_suffix-4.0.1/test/profilers/list_profsize.rb +11 -0
  1550. data/vendor/bundle/gems/public_suffix-4.0.1/test/profilers/object_binsize.rb +57 -0
  1551. data/vendor/bundle/gems/public_suffix-4.0.1/test/psl_test.rb +52 -0
  1552. data/vendor/bundle/gems/public_suffix-4.0.1/test/test_helper.rb +18 -0
  1553. data/vendor/bundle/gems/public_suffix-4.0.1/test/tests.txt +98 -0
  1554. data/vendor/bundle/gems/public_suffix-4.0.1/test/unit/domain_test.rb +106 -0
  1555. data/vendor/bundle/gems/public_suffix-4.0.1/test/unit/errors_test.rb +25 -0
  1556. data/vendor/bundle/gems/public_suffix-4.0.1/test/unit/list_test.rb +241 -0
  1557. data/vendor/bundle/gems/public_suffix-4.0.1/test/unit/public_suffix_test.rb +188 -0
  1558. data/vendor/bundle/gems/public_suffix-4.0.1/test/unit/rule_test.rb +222 -0
  1559. data/vendor/bundle/gems/rack-2.0.7/COPYING +18 -0
  1560. data/vendor/bundle/gems/rack-2.0.7/HISTORY.md +505 -0
  1561. data/vendor/bundle/gems/rack-2.0.7/README.rdoc +302 -0
  1562. data/vendor/bundle/gems/rack-2.0.7/Rakefile +116 -0
  1563. data/vendor/bundle/gems/rack-2.0.7/SPEC +263 -0
  1564. data/vendor/bundle/gems/rack-2.0.7/bin/rackup +4 -0
  1565. data/vendor/bundle/gems/rack-2.0.7/contrib/rack.png +0 -0
  1566. data/vendor/bundle/gems/rack-2.0.7/contrib/rack.svg +150 -0
  1567. data/vendor/bundle/gems/rack-2.0.7/contrib/rack_logo.svg +164 -0
  1568. data/vendor/bundle/gems/rack-2.0.7/contrib/rdoc.css +412 -0
  1569. data/vendor/bundle/gems/rack-2.0.7/example/lobster.ru +4 -0
  1570. data/vendor/bundle/gems/rack-2.0.7/example/protectedlobster.rb +14 -0
  1571. data/vendor/bundle/gems/rack-2.0.7/example/protectedlobster.ru +8 -0
  1572. data/vendor/bundle/gems/rack-2.0.7/lib/rack.rb +147 -0
  1573. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/abstract/handler.rb +37 -0
  1574. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/abstract/request.rb +47 -0
  1575. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/basic.rb +58 -0
  1576. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/digest/md5.rb +129 -0
  1577. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/digest/nonce.rb +51 -0
  1578. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/digest/params.rb +52 -0
  1579. data/vendor/bundle/gems/rack-2.0.7/lib/rack/auth/digest/request.rb +41 -0
  1580. data/vendor/bundle/gems/rack-2.0.7/lib/rack/body_proxy.rb +44 -0
  1581. data/vendor/bundle/gems/rack-2.0.7/lib/rack/builder.rb +164 -0
  1582. data/vendor/bundle/gems/rack-2.0.7/lib/rack/cascade.rb +52 -0
  1583. data/vendor/bundle/gems/rack-2.0.7/lib/rack/chunked.rb +69 -0
  1584. data/vendor/bundle/gems/rack-2.0.7/lib/rack/common_logger.rb +72 -0
  1585. data/vendor/bundle/gems/rack-2.0.7/lib/rack/conditional_get.rb +79 -0
  1586. data/vendor/bundle/gems/rack-2.0.7/lib/rack/config.rb +20 -0
  1587. data/vendor/bundle/gems/rack-2.0.7/lib/rack/content_length.rb +37 -0
  1588. data/vendor/bundle/gems/rack-2.0.7/lib/rack/content_type.rb +29 -0
  1589. data/vendor/bundle/gems/rack-2.0.7/lib/rack/deflater.rb +119 -0
  1590. data/vendor/bundle/gems/rack-2.0.7/lib/rack/directory.rb +179 -0
  1591. data/vendor/bundle/gems/rack-2.0.7/lib/rack/etag.rb +74 -0
  1592. data/vendor/bundle/gems/rack-2.0.7/lib/rack/events.rb +154 -0
  1593. data/vendor/bundle/gems/rack-2.0.7/lib/rack/file.rb +176 -0
  1594. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler.rb +99 -0
  1595. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler/cgi.rb +60 -0
  1596. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler/fastcgi.rb +100 -0
  1597. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler/lsws.rb +61 -0
  1598. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler/scgi.rb +70 -0
  1599. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler/thin.rb +36 -0
  1600. data/vendor/bundle/gems/rack-2.0.7/lib/rack/handler/webrick.rb +120 -0
  1601. data/vendor/bundle/gems/rack-2.0.7/lib/rack/head.rb +25 -0
  1602. data/vendor/bundle/gems/rack-2.0.7/lib/rack/lint.rb +760 -0
  1603. data/vendor/bundle/gems/rack-2.0.7/lib/rack/lobster.rb +70 -0
  1604. data/vendor/bundle/gems/rack-2.0.7/lib/rack/lock.rb +31 -0
  1605. data/vendor/bundle/gems/rack-2.0.7/lib/rack/logger.rb +18 -0
  1606. data/vendor/bundle/gems/rack-2.0.7/lib/rack/media_type.rb +38 -0
  1607. data/vendor/bundle/gems/rack-2.0.7/lib/rack/method_override.rb +50 -0
  1608. data/vendor/bundle/gems/rack-2.0.7/lib/rack/mime.rb +677 -0
  1609. data/vendor/bundle/gems/rack-2.0.7/lib/rack/mock.rb +196 -0
  1610. data/vendor/bundle/gems/rack-2.0.7/lib/rack/multipart.rb +63 -0
  1611. data/vendor/bundle/gems/rack-2.0.7/lib/rack/multipart/generator.rb +93 -0
  1612. data/vendor/bundle/gems/rack-2.0.7/lib/rack/multipart/parser.rb +366 -0
  1613. data/vendor/bundle/gems/rack-2.0.7/lib/rack/multipart/uploaded_file.rb +33 -0
  1614. data/vendor/bundle/gems/rack-2.0.7/lib/rack/null_logger.rb +37 -0
  1615. data/vendor/bundle/gems/rack-2.0.7/lib/rack/query_parser.rb +192 -0
  1616. data/vendor/bundle/gems/rack-2.0.7/lib/rack/recursive.rb +62 -0
  1617. data/vendor/bundle/gems/rack-2.0.7/lib/rack/reloader.rb +110 -0
  1618. data/vendor/bundle/gems/rack-2.0.7/lib/rack/request.rb +500 -0
  1619. data/vendor/bundle/gems/rack-2.0.7/lib/rack/response.rb +235 -0
  1620. data/vendor/bundle/gems/rack-2.0.7/lib/rack/rewindable_input.rb +93 -0
  1621. data/vendor/bundle/gems/rack-2.0.7/lib/rack/runtime.rb +32 -0
  1622. data/vendor/bundle/gems/rack-2.0.7/lib/rack/sendfile.rb +158 -0
  1623. data/vendor/bundle/gems/rack-2.0.7/lib/rack/server.rb +395 -0
  1624. data/vendor/bundle/gems/rack-2.0.7/lib/rack/session/abstract/id.rb +445 -0
  1625. data/vendor/bundle/gems/rack-2.0.7/lib/rack/session/cookie.rb +195 -0
  1626. data/vendor/bundle/gems/rack-2.0.7/lib/rack/session/memcache.rb +93 -0
  1627. data/vendor/bundle/gems/rack-2.0.7/lib/rack/session/pool.rb +76 -0
  1628. data/vendor/bundle/gems/rack-2.0.7/lib/rack/show_exceptions.rb +386 -0
  1629. data/vendor/bundle/gems/rack-2.0.7/lib/rack/show_status.rb +113 -0
  1630. data/vendor/bundle/gems/rack-2.0.7/lib/rack/static.rb +175 -0
  1631. data/vendor/bundle/gems/rack-2.0.7/lib/rack/tempfile_reaper.rb +22 -0
  1632. data/vendor/bundle/gems/rack-2.0.7/lib/rack/urlmap.rb +91 -0
  1633. data/vendor/bundle/gems/rack-2.0.7/lib/rack/utils.rb +620 -0
  1634. data/vendor/bundle/gems/rack-2.0.7/rack.gemspec +34 -0
  1635. data/vendor/bundle/gems/rack-2.0.7/test/builder/an_underscore_app.rb +5 -0
  1636. data/vendor/bundle/gems/rack-2.0.7/test/builder/anything.rb +5 -0
  1637. data/vendor/bundle/gems/rack-2.0.7/test/builder/comment.ru +4 -0
  1638. data/vendor/bundle/gems/rack-2.0.7/test/builder/end.ru +5 -0
  1639. data/vendor/bundle/gems/rack-2.0.7/test/builder/line.ru +1 -0
  1640. data/vendor/bundle/gems/rack-2.0.7/test/builder/options.ru +2 -0
  1641. data/vendor/bundle/gems/rack-2.0.7/test/cgi/assets/folder/test.js +1 -0
  1642. data/vendor/bundle/gems/rack-2.0.7/test/cgi/assets/fonts/font.eot +1 -0
  1643. data/vendor/bundle/gems/rack-2.0.7/test/cgi/assets/images/image.png +1 -0
  1644. data/vendor/bundle/gems/rack-2.0.7/test/cgi/assets/index.html +1 -0
  1645. data/vendor/bundle/gems/rack-2.0.7/test/cgi/assets/javascripts/app.js +1 -0
  1646. data/vendor/bundle/gems/rack-2.0.7/test/cgi/assets/stylesheets/app.css +1 -0
  1647. data/vendor/bundle/gems/rack-2.0.7/test/cgi/lighttpd.conf +26 -0
  1648. data/vendor/bundle/gems/rack-2.0.7/test/cgi/rackup_stub.rb +6 -0
  1649. data/vendor/bundle/gems/rack-2.0.7/test/cgi/sample_rackup.ru +5 -0
  1650. data/vendor/bundle/gems/rack-2.0.7/test/cgi/test +9 -0
  1651. data/vendor/bundle/gems/rack-2.0.7/test/cgi/test+directory/test+file +1 -0
  1652. data/vendor/bundle/gems/rack-2.0.7/test/cgi/test.fcgi +9 -0
  1653. data/vendor/bundle/gems/rack-2.0.7/test/cgi/test.gz +0 -0
  1654. data/vendor/bundle/gems/rack-2.0.7/test/cgi/test.ru +5 -0
  1655. data/vendor/bundle/gems/rack-2.0.7/test/gemloader.rb +10 -0
  1656. data/vendor/bundle/gems/rack-2.0.7/test/helper.rb +34 -0
  1657. data/vendor/bundle/gems/rack-2.0.7/test/multipart/bad_robots +259 -0
  1658. data/vendor/bundle/gems/rack-2.0.7/test/multipart/binary +0 -0
  1659. data/vendor/bundle/gems/rack-2.0.7/test/multipart/content_type_and_no_filename +6 -0
  1660. data/vendor/bundle/gems/rack-2.0.7/test/multipart/empty +10 -0
  1661. data/vendor/bundle/gems/rack-2.0.7/test/multipart/fail_16384_nofile +814 -0
  1662. data/vendor/bundle/gems/rack-2.0.7/test/multipart/file1.txt +1 -0
  1663. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_and_modification_param +7 -0
  1664. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_and_no_name +6 -0
  1665. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_encoded_words +7 -0
  1666. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_escaped_quotes +6 -0
  1667. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_escaped_quotes_and_modification_param +7 -0
  1668. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_null_byte +7 -0
  1669. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_percent_escaped_quotes +6 -0
  1670. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_single_quote +7 -0
  1671. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_unescaped_percentages +6 -0
  1672. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_unescaped_percentages2 +6 -0
  1673. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_unescaped_percentages3 +6 -0
  1674. data/vendor/bundle/gems/rack-2.0.7/test/multipart/filename_with_unescaped_quotes +6 -0
  1675. data/vendor/bundle/gems/rack-2.0.7/test/multipart/ie +6 -0
  1676. data/vendor/bundle/gems/rack-2.0.7/test/multipart/invalid_character +6 -0
  1677. data/vendor/bundle/gems/rack-2.0.7/test/multipart/mixed_files +21 -0
  1678. data/vendor/bundle/gems/rack-2.0.7/test/multipart/nested +10 -0
  1679. data/vendor/bundle/gems/rack-2.0.7/test/multipart/none +9 -0
  1680. data/vendor/bundle/gems/rack-2.0.7/test/multipart/quoted +15 -0
  1681. data/vendor/bundle/gems/rack-2.0.7/test/multipart/rack-logo.png +0 -0
  1682. data/vendor/bundle/gems/rack-2.0.7/test/multipart/semicolon +6 -0
  1683. data/vendor/bundle/gems/rack-2.0.7/test/multipart/text +15 -0
  1684. data/vendor/bundle/gems/rack-2.0.7/test/multipart/three_files_three_fields +31 -0
  1685. data/vendor/bundle/gems/rack-2.0.7/test/multipart/unity3d_wwwform +11 -0
  1686. data/vendor/bundle/gems/rack-2.0.7/test/multipart/webkit +32 -0
  1687. data/vendor/bundle/gems/rack-2.0.7/test/rackup/config.ru +31 -0
  1688. data/vendor/bundle/gems/rack-2.0.7/test/registering_handler/rack/handler/registering_myself.rb +8 -0
  1689. data/vendor/bundle/gems/rack-2.0.7/test/spec_auth_basic.rb +89 -0
  1690. data/vendor/bundle/gems/rack-2.0.7/test/spec_auth_digest.rb +260 -0
  1691. data/vendor/bundle/gems/rack-2.0.7/test/spec_body_proxy.rb +85 -0
  1692. data/vendor/bundle/gems/rack-2.0.7/test/spec_builder.rb +233 -0
  1693. data/vendor/bundle/gems/rack-2.0.7/test/spec_cascade.rb +63 -0
  1694. data/vendor/bundle/gems/rack-2.0.7/test/spec_cgi.rb +84 -0
  1695. data/vendor/bundle/gems/rack-2.0.7/test/spec_chunked.rb +103 -0
  1696. data/vendor/bundle/gems/rack-2.0.7/test/spec_common_logger.rb +95 -0
  1697. data/vendor/bundle/gems/rack-2.0.7/test/spec_conditional_get.rb +103 -0
  1698. data/vendor/bundle/gems/rack-2.0.7/test/spec_config.rb +23 -0
  1699. data/vendor/bundle/gems/rack-2.0.7/test/spec_content_length.rb +86 -0
  1700. data/vendor/bundle/gems/rack-2.0.7/test/spec_content_type.rb +46 -0
  1701. data/vendor/bundle/gems/rack-2.0.7/test/spec_deflater.rb +375 -0
  1702. data/vendor/bundle/gems/rack-2.0.7/test/spec_directory.rb +148 -0
  1703. data/vendor/bundle/gems/rack-2.0.7/test/spec_etag.rb +108 -0
  1704. data/vendor/bundle/gems/rack-2.0.7/test/spec_events.rb +133 -0
  1705. data/vendor/bundle/gems/rack-2.0.7/test/spec_fastcgi.rb +85 -0
  1706. data/vendor/bundle/gems/rack-2.0.7/test/spec_file.rb +264 -0
  1707. data/vendor/bundle/gems/rack-2.0.7/test/spec_handler.rb +57 -0
  1708. data/vendor/bundle/gems/rack-2.0.7/test/spec_head.rb +46 -0
  1709. data/vendor/bundle/gems/rack-2.0.7/test/spec_lint.rb +515 -0
  1710. data/vendor/bundle/gems/rack-2.0.7/test/spec_lobster.rb +59 -0
  1711. data/vendor/bundle/gems/rack-2.0.7/test/spec_lock.rb +204 -0
  1712. data/vendor/bundle/gems/rack-2.0.7/test/spec_logger.rb +24 -0
  1713. data/vendor/bundle/gems/rack-2.0.7/test/spec_media_type.rb +42 -0
  1714. data/vendor/bundle/gems/rack-2.0.7/test/spec_method_override.rb +110 -0
  1715. data/vendor/bundle/gems/rack-2.0.7/test/spec_mime.rb +51 -0
  1716. data/vendor/bundle/gems/rack-2.0.7/test/spec_mock.rb +359 -0
  1717. data/vendor/bundle/gems/rack-2.0.7/test/spec_multipart.rb +722 -0
  1718. data/vendor/bundle/gems/rack-2.0.7/test/spec_null_logger.rb +21 -0
  1719. data/vendor/bundle/gems/rack-2.0.7/test/spec_recursive.rb +75 -0
  1720. data/vendor/bundle/gems/rack-2.0.7/test/spec_request.rb +1407 -0
  1721. data/vendor/bundle/gems/rack-2.0.7/test/spec_response.rb +510 -0
  1722. data/vendor/bundle/gems/rack-2.0.7/test/spec_rewindable_input.rb +128 -0
  1723. data/vendor/bundle/gems/rack-2.0.7/test/spec_runtime.rb +50 -0
  1724. data/vendor/bundle/gems/rack-2.0.7/test/spec_sendfile.rb +125 -0
  1725. data/vendor/bundle/gems/rack-2.0.7/test/spec_server.rb +193 -0
  1726. data/vendor/bundle/gems/rack-2.0.7/test/spec_session_abstract_id.rb +31 -0
  1727. data/vendor/bundle/gems/rack-2.0.7/test/spec_session_abstract_session_hash.rb +45 -0
  1728. data/vendor/bundle/gems/rack-2.0.7/test/spec_session_cookie.rb +442 -0
  1729. data/vendor/bundle/gems/rack-2.0.7/test/spec_session_memcache.rb +320 -0
  1730. data/vendor/bundle/gems/rack-2.0.7/test/spec_session_pool.rb +210 -0
  1731. data/vendor/bundle/gems/rack-2.0.7/test/spec_show_exceptions.rb +93 -0
  1732. data/vendor/bundle/gems/rack-2.0.7/test/spec_show_status.rb +104 -0
  1733. data/vendor/bundle/gems/rack-2.0.7/test/spec_static.rb +184 -0
  1734. data/vendor/bundle/gems/rack-2.0.7/test/spec_tempfile_reaper.rb +64 -0
  1735. data/vendor/bundle/gems/rack-2.0.7/test/spec_thin.rb +96 -0
  1736. data/vendor/bundle/gems/rack-2.0.7/test/spec_urlmap.rb +237 -0
  1737. data/vendor/bundle/gems/rack-2.0.7/test/spec_utils.rb +742 -0
  1738. data/vendor/bundle/gems/rack-2.0.7/test/spec_version.rb +11 -0
  1739. data/vendor/bundle/gems/rack-2.0.7/test/spec_webrick.rb +206 -0
  1740. data/vendor/bundle/gems/rack-2.0.7/test/static/another/index.html +1 -0
  1741. data/vendor/bundle/gems/rack-2.0.7/test/static/foo.html +1 -0
  1742. data/vendor/bundle/gems/rack-2.0.7/test/static/index.html +1 -0
  1743. data/vendor/bundle/gems/rack-2.0.7/test/testrequest.rb +78 -0
  1744. data/vendor/bundle/gems/rack-2.0.7/test/unregistered_handler/rack/handler/unregistered.rb +7 -0
  1745. data/vendor/bundle/gems/rack-2.0.7/test/unregistered_handler/rack/handler/unregistered_long_one.rb +7 -0
  1746. data/vendor/bundle/gems/rack-test-1.1.0/History.md +256 -0
  1747. data/vendor/bundle/gems/rack-test-1.1.0/MIT-LICENSE.txt +19 -0
  1748. data/vendor/bundle/gems/rack-test-1.1.0/README.md +150 -0
  1749. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/mock_session.rb +63 -0
  1750. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test.rb +334 -0
  1751. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test/cookie_jar.rb +194 -0
  1752. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test/methods.rb +83 -0
  1753. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test/mock_digest_request.rb +25 -0
  1754. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test/uploaded_file.rb +85 -0
  1755. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test/utils.rb +144 -0
  1756. data/vendor/bundle/gems/rack-test-1.1.0/lib/rack/test/version.rb +5 -0
  1757. data/vendor/bundle/gems/racksh-1.0.0/CHANGELOG.txt +34 -0
  1758. data/vendor/bundle/gems/racksh-1.0.0/README.markdown +150 -0
  1759. data/vendor/bundle/gems/racksh-1.0.0/bin/racksh +25 -0
  1760. data/vendor/bundle/gems/racksh-1.0.0/lib/racksh/init.rb +53 -0
  1761. data/vendor/bundle/gems/racksh-1.0.0/lib/racksh/irb.rb +2 -0
  1762. data/vendor/bundle/gems/racksh-1.0.0/lib/racksh/session.rb +18 -0
  1763. data/vendor/bundle/gems/racksh-1.0.0/lib/racksh/version.rb +5 -0
  1764. data/vendor/bundle/gems/rake-13.0.1/CONTRIBUTING.rdoc +43 -0
  1765. data/vendor/bundle/gems/rake-13.0.1/Gemfile +10 -0
  1766. data/vendor/bundle/gems/rake-13.0.1/History.rdoc +2368 -0
  1767. data/vendor/bundle/gems/rake-13.0.1/MIT-LICENSE +21 -0
  1768. data/vendor/bundle/gems/rake-13.0.1/README.rdoc +155 -0
  1769. data/vendor/bundle/gems/rake-13.0.1/Rakefile +41 -0
  1770. data/vendor/bundle/gems/rake-13.0.1/bin/bundle +105 -0
  1771. data/vendor/bundle/gems/rake-13.0.1/bin/console +7 -0
  1772. data/vendor/bundle/gems/rake-13.0.1/bin/rake +29 -0
  1773. data/vendor/bundle/gems/rake-13.0.1/bin/rdoc +29 -0
  1774. data/vendor/bundle/gems/rake-13.0.1/bin/rubocop +29 -0
  1775. data/vendor/bundle/gems/rake-13.0.1/bin/setup +6 -0
  1776. data/vendor/bundle/gems/rake-13.0.1/doc/command_line_usage.rdoc +158 -0
  1777. data/vendor/bundle/gems/rake-13.0.1/doc/example/Rakefile1 +38 -0
  1778. data/vendor/bundle/gems/rake-13.0.1/doc/example/Rakefile2 +35 -0
  1779. data/vendor/bundle/gems/rake-13.0.1/doc/example/a.c +6 -0
  1780. data/vendor/bundle/gems/rake-13.0.1/doc/example/b.c +6 -0
  1781. data/vendor/bundle/gems/rake-13.0.1/doc/example/main.c +11 -0
  1782. data/vendor/bundle/gems/rake-13.0.1/doc/glossary.rdoc +42 -0
  1783. data/vendor/bundle/gems/rake-13.0.1/doc/jamis.rb +592 -0
  1784. data/vendor/bundle/gems/rake-13.0.1/doc/proto_rake.rdoc +127 -0
  1785. data/vendor/bundle/gems/rake-13.0.1/doc/rake.1 +156 -0
  1786. data/vendor/bundle/gems/rake-13.0.1/doc/rakefile.rdoc +622 -0
  1787. data/vendor/bundle/gems/rake-13.0.1/doc/rational.rdoc +151 -0
  1788. data/vendor/bundle/gems/rake-13.0.1/exe/rake +27 -0
  1789. data/vendor/bundle/gems/rake-13.0.1/lib/rake.rb +71 -0
  1790. data/vendor/bundle/gems/rake-13.0.1/lib/rake/application.rb +824 -0
  1791. data/vendor/bundle/gems/rake-13.0.1/lib/rake/backtrace.rb +24 -0
  1792. data/vendor/bundle/gems/rake-13.0.1/lib/rake/clean.rb +78 -0
  1793. data/vendor/bundle/gems/rake-13.0.1/lib/rake/cloneable.rb +17 -0
  1794. data/vendor/bundle/gems/rake-13.0.1/lib/rake/cpu_counter.rb +107 -0
  1795. data/vendor/bundle/gems/rake-13.0.1/lib/rake/default_loader.rb +15 -0
  1796. data/vendor/bundle/gems/rake-13.0.1/lib/rake/dsl_definition.rb +195 -0
  1797. data/vendor/bundle/gems/rake-13.0.1/lib/rake/early_time.rb +22 -0
  1798. data/vendor/bundle/gems/rake-13.0.1/lib/rake/ext/core.rb +26 -0
  1799. data/vendor/bundle/gems/rake-13.0.1/lib/rake/ext/string.rb +176 -0
  1800. data/vendor/bundle/gems/rake-13.0.1/lib/rake/file_creation_task.rb +25 -0
  1801. data/vendor/bundle/gems/rake-13.0.1/lib/rake/file_list.rb +435 -0
  1802. data/vendor/bundle/gems/rake-13.0.1/lib/rake/file_task.rb +54 -0
  1803. data/vendor/bundle/gems/rake-13.0.1/lib/rake/file_utils.rb +134 -0
  1804. data/vendor/bundle/gems/rake-13.0.1/lib/rake/file_utils_ext.rb +134 -0
  1805. data/vendor/bundle/gems/rake-13.0.1/lib/rake/invocation_chain.rb +57 -0
  1806. data/vendor/bundle/gems/rake-13.0.1/lib/rake/invocation_exception_mixin.rb +17 -0
  1807. data/vendor/bundle/gems/rake-13.0.1/lib/rake/late_time.rb +18 -0
  1808. data/vendor/bundle/gems/rake-13.0.1/lib/rake/linked_list.rb +112 -0
  1809. data/vendor/bundle/gems/rake-13.0.1/lib/rake/loaders/makefile.rb +54 -0
  1810. data/vendor/bundle/gems/rake-13.0.1/lib/rake/multi_task.rb +14 -0
  1811. data/vendor/bundle/gems/rake-13.0.1/lib/rake/name_space.rb +38 -0
  1812. data/vendor/bundle/gems/rake-13.0.1/lib/rake/packagetask.rb +222 -0
  1813. data/vendor/bundle/gems/rake-13.0.1/lib/rake/phony.rb +16 -0
  1814. data/vendor/bundle/gems/rake-13.0.1/lib/rake/private_reader.rb +21 -0
  1815. data/vendor/bundle/gems/rake-13.0.1/lib/rake/promise.rb +100 -0
  1816. data/vendor/bundle/gems/rake-13.0.1/lib/rake/pseudo_status.rb +30 -0
  1817. data/vendor/bundle/gems/rake-13.0.1/lib/rake/rake_module.rb +67 -0
  1818. data/vendor/bundle/gems/rake-13.0.1/lib/rake/rake_test_loader.rb +27 -0
  1819. data/vendor/bundle/gems/rake-13.0.1/lib/rake/rule_recursion_overflow_error.rb +20 -0
  1820. data/vendor/bundle/gems/rake-13.0.1/lib/rake/scope.rb +43 -0
  1821. data/vendor/bundle/gems/rake-13.0.1/lib/rake/task.rb +434 -0
  1822. data/vendor/bundle/gems/rake-13.0.1/lib/rake/task_argument_error.rb +8 -0
  1823. data/vendor/bundle/gems/rake-13.0.1/lib/rake/task_arguments.rb +109 -0
  1824. data/vendor/bundle/gems/rake-13.0.1/lib/rake/task_manager.rb +331 -0
  1825. data/vendor/bundle/gems/rake-13.0.1/lib/rake/tasklib.rb +12 -0
  1826. data/vendor/bundle/gems/rake-13.0.1/lib/rake/testtask.rb +224 -0
  1827. data/vendor/bundle/gems/rake-13.0.1/lib/rake/thread_history_display.rb +49 -0
  1828. data/vendor/bundle/gems/rake-13.0.1/lib/rake/thread_pool.rb +163 -0
  1829. data/vendor/bundle/gems/rake-13.0.1/lib/rake/trace_output.rb +23 -0
  1830. data/vendor/bundle/gems/rake-13.0.1/lib/rake/version.rb +10 -0
  1831. data/vendor/bundle/gems/rake-13.0.1/lib/rake/win32.rb +51 -0
  1832. data/vendor/bundle/gems/rake-13.0.1/rake.gemspec +43 -0
  1833. data/vendor/bundle/gems/redcarpet-3.5.0/COPYING +20 -0
  1834. data/vendor/bundle/gems/redcarpet-3.5.0/Gemfile +9 -0
  1835. data/vendor/bundle/gems/redcarpet-3.5.0/README.markdown +405 -0
  1836. data/vendor/bundle/gems/redcarpet-3.5.0/Rakefile +60 -0
  1837. data/vendor/bundle/gems/redcarpet-3.5.0/bin/redcarpet +7 -0
  1838. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/Makefile +266 -0
  1839. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/autolink.c +308 -0
  1840. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/autolink.h +55 -0
  1841. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/autolink.o +0 -0
  1842. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/buffer.c +203 -0
  1843. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/buffer.h +88 -0
  1844. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/buffer.o +0 -0
  1845. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/extconf.rb +6 -0
  1846. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/houdini.h +51 -0
  1847. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/houdini_href_e.c +124 -0
  1848. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/houdini_href_e.o +0 -0
  1849. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/houdini_html_e.c +104 -0
  1850. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/houdini_html_e.o +0 -0
  1851. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/html.c +845 -0
  1852. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/html.h +83 -0
  1853. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/html.o +0 -0
  1854. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/html_blocks.h +227 -0
  1855. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/html_smartypants.c +472 -0
  1856. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/html_smartypants.o +0 -0
  1857. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/markdown.c +2915 -0
  1858. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/markdown.h +143 -0
  1859. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/markdown.o +0 -0
  1860. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/rc_markdown.c +183 -0
  1861. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/rc_markdown.o +0 -0
  1862. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/rc_render.c +568 -0
  1863. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/rc_render.o +0 -0
  1864. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/redcarpet.h +52 -0
  1865. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/redcarpet.so +0 -0
  1866. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/stack.c +84 -0
  1867. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/stack.h +48 -0
  1868. data/vendor/bundle/gems/redcarpet-3.5.0/ext/redcarpet/stack.o +0 -0
  1869. data/vendor/bundle/gems/redcarpet-3.5.0/lib/redcarpet.rb +92 -0
  1870. data/vendor/bundle/gems/redcarpet-3.5.0/lib/redcarpet.so +0 -0
  1871. data/vendor/bundle/gems/redcarpet-3.5.0/lib/redcarpet/cli.rb +86 -0
  1872. data/vendor/bundle/gems/redcarpet-3.5.0/lib/redcarpet/compat.rb +71 -0
  1873. data/vendor/bundle/gems/redcarpet-3.5.0/lib/redcarpet/render_man.rb +65 -0
  1874. data/vendor/bundle/gems/redcarpet-3.5.0/lib/redcarpet/render_strip.rb +60 -0
  1875. data/vendor/bundle/gems/redcarpet-3.5.0/redcarpet.gemspec +71 -0
  1876. data/vendor/bundle/gems/redcarpet-3.5.0/test/benchmark.rb +24 -0
  1877. data/vendor/bundle/gems/redcarpet-3.5.0/test/custom_render_test.rb +67 -0
  1878. data/vendor/bundle/gems/redcarpet-3.5.0/test/fixtures/benchmark.md +232 -0
  1879. data/vendor/bundle/gems/redcarpet-3.5.0/test/html5_test.rb +82 -0
  1880. data/vendor/bundle/gems/redcarpet-3.5.0/test/html_render_test.rb +274 -0
  1881. data/vendor/bundle/gems/redcarpet-3.5.0/test/html_toc_render_test.rb +112 -0
  1882. data/vendor/bundle/gems/redcarpet-3.5.0/test/markdown_test.rb +406 -0
  1883. data/vendor/bundle/gems/redcarpet-3.5.0/test/pathological_inputs_test.rb +34 -0
  1884. data/vendor/bundle/gems/redcarpet-3.5.0/test/redcarpet_bin_test.rb +80 -0
  1885. data/vendor/bundle/gems/redcarpet-3.5.0/test/redcarpet_compat_test.rb +38 -0
  1886. data/vendor/bundle/gems/redcarpet-3.5.0/test/safe_render_test.rb +35 -0
  1887. data/vendor/bundle/gems/redcarpet-3.5.0/test/smarty_html_test.rb +51 -0
  1888. data/vendor/bundle/gems/redcarpet-3.5.0/test/smarty_pants_test.rb +58 -0
  1889. data/vendor/bundle/gems/redcarpet-3.5.0/test/stripdown_render_test.rb +69 -0
  1890. data/vendor/bundle/gems/redcarpet-3.5.0/test/test_helper.rb +47 -0
  1891. data/vendor/bundle/gems/regexp_parser-1.6.0/CHANGELOG.md +337 -0
  1892. data/vendor/bundle/gems/regexp_parser-1.6.0/Gemfile +9 -0
  1893. data/vendor/bundle/gems/regexp_parser-1.6.0/LICENSE +22 -0
  1894. data/vendor/bundle/gems/regexp_parser-1.6.0/README.md +470 -0
  1895. data/vendor/bundle/gems/regexp_parser-1.6.0/Rakefile +87 -0
  1896. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser.rb +8 -0
  1897. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression.rb +163 -0
  1898. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/alternation.rb +10 -0
  1899. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/anchor.rb +26 -0
  1900. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/backref.rb +55 -0
  1901. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/conditional.rb +58 -0
  1902. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/escape.rb +94 -0
  1903. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/free_space.rb +17 -0
  1904. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/group.rb +60 -0
  1905. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/keep.rb +5 -0
  1906. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/literal.rb +7 -0
  1907. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/posix_class.rb +11 -0
  1908. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/property.rb +120 -0
  1909. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/root.rb +24 -0
  1910. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/set.rb +27 -0
  1911. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/set/intersection.rb +9 -0
  1912. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/set/range.rb +23 -0
  1913. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/classes/type.rb +19 -0
  1914. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/methods/match.rb +13 -0
  1915. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/methods/match_length.rb +172 -0
  1916. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/methods/options.rb +35 -0
  1917. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/methods/strfregexp.rb +114 -0
  1918. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/methods/tests.rb +97 -0
  1919. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/methods/traverse.rb +62 -0
  1920. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/quantifier.rb +44 -0
  1921. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/sequence.rb +67 -0
  1922. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/sequence_operation.rb +25 -0
  1923. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/expression/subexpression.rb +59 -0
  1924. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/lexer.rb +127 -0
  1925. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/parser.rb +653 -0
  1926. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/scanner.rb +2765 -0
  1927. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/scanner/char_type.rl +28 -0
  1928. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/scanner/properties/long.yml +594 -0
  1929. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/scanner/properties/short.yml +237 -0
  1930. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/scanner/property.rl +30 -0
  1931. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/scanner/scanner.rl +893 -0
  1932. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax.rb +9 -0
  1933. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/any.rb +15 -0
  1934. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/base.rb +95 -0
  1935. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens.rb +45 -0
  1936. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/anchor.rb +15 -0
  1937. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/assertion.rb +13 -0
  1938. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/backref.rb +24 -0
  1939. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/character_set.rb +13 -0
  1940. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/character_type.rb +16 -0
  1941. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/conditional.rb +16 -0
  1942. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/escape.rb +30 -0
  1943. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/group.rb +23 -0
  1944. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/keep.rb +12 -0
  1945. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/meta.rb +13 -0
  1946. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/posix_class.rb +17 -0
  1947. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/quantifier.rb +35 -0
  1948. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/tokens/unicode_property.rb +675 -0
  1949. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/version_lookup.rb +82 -0
  1950. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions.rb +6 -0
  1951. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/1.8.6.rb +21 -0
  1952. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/1.9.1.rb +18 -0
  1953. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/1.9.3.rb +11 -0
  1954. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.0.0.rb +17 -0
  1955. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.2.0.rb +10 -0
  1956. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.3.0.rb +10 -0
  1957. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.4.0.rb +10 -0
  1958. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.4.1.rb +9 -0
  1959. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.5.0.rb +10 -0
  1960. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.6.0.rb +10 -0
  1961. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.6.2.rb +10 -0
  1962. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/syntax/versions/2.6.3.rb +10 -0
  1963. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/token.rb +35 -0
  1964. data/vendor/bundle/gems/regexp_parser-1.6.0/lib/regexp_parser/version.rb +5 -0
  1965. data/vendor/bundle/gems/regexp_parser-1.6.0/regexp_parser.gemspec +36 -0
  1966. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/base_spec.rb +94 -0
  1967. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/clone_spec.rb +120 -0
  1968. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/conditional_spec.rb +89 -0
  1969. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/free_space_spec.rb +27 -0
  1970. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/methods/match_length_spec.rb +154 -0
  1971. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/methods/match_spec.rb +25 -0
  1972. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/methods/strfregexp_spec.rb +224 -0
  1973. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/methods/tests_spec.rb +99 -0
  1974. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/methods/traverse_spec.rb +140 -0
  1975. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/options_spec.rb +128 -0
  1976. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/root_spec.rb +9 -0
  1977. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/sequence_spec.rb +9 -0
  1978. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/subexpression_spec.rb +50 -0
  1979. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/to_h_spec.rb +26 -0
  1980. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/expression/to_s_spec.rb +100 -0
  1981. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/all_spec.rb +22 -0
  1982. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/conditionals_spec.rb +53 -0
  1983. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/escapes_spec.rb +14 -0
  1984. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/keep_spec.rb +10 -0
  1985. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/literals_spec.rb +89 -0
  1986. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/nesting_spec.rb +99 -0
  1987. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/lexer/refcalls_spec.rb +55 -0
  1988. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/all_spec.rb +43 -0
  1989. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/alternation_spec.rb +88 -0
  1990. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/anchors_spec.rb +17 -0
  1991. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/conditionals_spec.rb +179 -0
  1992. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/errors_spec.rb +30 -0
  1993. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/escapes_spec.rb +121 -0
  1994. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/free_space_spec.rb +130 -0
  1995. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/groups_spec.rb +108 -0
  1996. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/keep_spec.rb +6 -0
  1997. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/posix_classes_spec.rb +8 -0
  1998. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/properties_spec.rb +115 -0
  1999. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/quantifiers_spec.rb +51 -0
  2000. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/refcalls_spec.rb +112 -0
  2001. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/set/intersections_spec.rb +127 -0
  2002. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/set/ranges_spec.rb +111 -0
  2003. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/sets_spec.rb +178 -0
  2004. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/parser/types_spec.rb +18 -0
  2005. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/all_spec.rb +18 -0
  2006. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/anchors_spec.rb +21 -0
  2007. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/conditionals_spec.rb +128 -0
  2008. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/errors_spec.rb +68 -0
  2009. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/escapes_spec.rb +53 -0
  2010. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/free_space_spec.rb +133 -0
  2011. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/groups_spec.rb +52 -0
  2012. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/keep_spec.rb +10 -0
  2013. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/literals_spec.rb +49 -0
  2014. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/meta_spec.rb +18 -0
  2015. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/properties_spec.rb +64 -0
  2016. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/quantifiers_spec.rb +20 -0
  2017. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/refcalls_spec.rb +36 -0
  2018. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/sets_spec.rb +102 -0
  2019. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/scanner/types_spec.rb +14 -0
  2020. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/spec_helper.rb +15 -0
  2021. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/support/runner.rb +42 -0
  2022. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/support/shared_examples.rb +77 -0
  2023. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/support/warning_extractor.rb +60 -0
  2024. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/syntax_spec.rb +48 -0
  2025. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/syntax_token_map_spec.rb +23 -0
  2026. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/versions/1.8.6_spec.rb +17 -0
  2027. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/versions/1.9.1_spec.rb +10 -0
  2028. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/versions/1.9.3_spec.rb +9 -0
  2029. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/versions/2.0.0_spec.rb +13 -0
  2030. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/versions/2.2.0_spec.rb +9 -0
  2031. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/syntax/versions/aliases_spec.rb +37 -0
  2032. data/vendor/bundle/gems/regexp_parser-1.6.0/spec/token/token_spec.rb +85 -0
  2033. data/vendor/bundle/gems/rspec-3.9.0/LICENSE.md +27 -0
  2034. data/vendor/bundle/gems/rspec-3.9.0/README.md +43 -0
  2035. data/vendor/bundle/gems/rspec-3.9.0/lib/rspec.rb +3 -0
  2036. data/vendor/bundle/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
  2037. data/vendor/bundle/gems/rspec-core-3.9.0/Changelog.md +2265 -0
  2038. data/vendor/bundle/gems/rspec-core-3.9.0/LICENSE.md +26 -0
  2039. data/vendor/bundle/gems/rspec-core-3.9.0/README.md +384 -0
  2040. data/vendor/bundle/gems/rspec-core-3.9.0/exe/rspec +4 -0
  2041. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/autorun.rb +3 -0
  2042. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core.rb +186 -0
  2043. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/backtrace_formatter.rb +65 -0
  2044. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/coordinator.rb +62 -0
  2045. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  2046. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/fork_runner.rb +134 -0
  2047. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/server.rb +61 -0
  2048. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/shell_command.rb +126 -0
  2049. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
  2050. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/bisect/utilities.rb +58 -0
  2051. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/configuration.rb +2336 -0
  2052. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/configuration_options.rb +233 -0
  2053. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/did_you_mean.rb +46 -0
  2054. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/drb.rb +113 -0
  2055. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/dsl.rb +98 -0
  2056. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/example.rb +656 -0
  2057. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/example_group.rb +889 -0
  2058. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/example_status_persister.rb +235 -0
  2059. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/filter_manager.rb +231 -0
  2060. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/flat_map.rb +20 -0
  2061. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters.rb +272 -0
  2062. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  2063. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
  2064. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  2065. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  2066. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  2067. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/console_codes.rb +68 -0
  2068. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  2069. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  2070. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/exception_presenter.rb +508 -0
  2071. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  2072. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  2073. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/helpers.rb +110 -0
  2074. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
  2075. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/html_printer.rb +414 -0
  2076. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  2077. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
  2078. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  2079. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  2080. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/protocol.rb +182 -0
  2081. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  2082. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  2083. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/hooks.rb +632 -0
  2084. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/invocations.rb +87 -0
  2085. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/memoized_helpers.rb +554 -0
  2086. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/metadata.rb +498 -0
  2087. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/metadata_filter.rb +255 -0
  2088. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  2089. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  2090. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  2091. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
  2092. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  2093. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  2094. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/notifications.rb +521 -0
  2095. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/option_parser.rb +317 -0
  2096. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/ordering.rb +158 -0
  2097. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/output_wrapper.rb +29 -0
  2098. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/pending.rb +165 -0
  2099. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/profiler.rb +34 -0
  2100. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/project_initializer.rb +48 -0
  2101. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  2102. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/rake_task.rb +188 -0
  2103. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/reporter.rb +265 -0
  2104. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/ruby_project.rb +53 -0
  2105. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/runner.rb +204 -0
  2106. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/sandbox.rb +37 -0
  2107. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/set.rb +54 -0
  2108. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/shared_context.rb +55 -0
  2109. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/shared_example_group.rb +269 -0
  2110. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/shell_escape.rb +49 -0
  2111. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  2112. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/version.rb +9 -0
  2113. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/warnings.rb +40 -0
  2114. data/vendor/bundle/gems/rspec-core-3.9.0/lib/rspec/core/world.rb +275 -0
  2115. data/vendor/bundle/gems/rspec-expectations-3.9.0/Changelog.md +1170 -0
  2116. data/vendor/bundle/gems/rspec-expectations-3.9.0/LICENSE.md +25 -0
  2117. data/vendor/bundle/gems/rspec-expectations-3.9.0/README.md +320 -0
  2118. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations.rb +82 -0
  2119. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  2120. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/configuration.rb +215 -0
  2121. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb +127 -0
  2122. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/fail_with.rb +39 -0
  2123. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
  2124. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb +170 -0
  2125. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  2126. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/syntax.rb +132 -0
  2127. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +8 -0
  2128. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers.rb +1038 -0
  2129. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  2130. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in.rb +52 -0
  2131. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/all.rb +86 -0
  2132. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  2133. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be.rb +288 -0
  2134. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  2135. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  2136. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  2137. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  2138. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb +428 -0
  2139. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/compound.rb +276 -0
  2140. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  2141. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  2142. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  2143. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  2144. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  2145. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/exist.rb +90 -0
  2146. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/has.rb +103 -0
  2147. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  2148. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/include.rb +149 -0
  2149. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/match.rb +106 -0
  2150. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  2151. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/output.rb +200 -0
  2152. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  2153. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +174 -0
  2154. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  2155. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  2156. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  2157. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +432 -0
  2158. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/composable.rb +171 -0
  2159. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +534 -0
  2160. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  2161. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  2162. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  2163. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
  2164. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  2165. data/vendor/bundle/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
  2166. data/vendor/bundle/gems/rspec-mocks-3.9.0/Changelog.md +1125 -0
  2167. data/vendor/bundle/gems/rspec-mocks-3.9.0/LICENSE.md +25 -0
  2168. data/vendor/bundle/gems/rspec-mocks-3.9.0/README.md +463 -0
  2169. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks.rb +130 -0
  2170. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance.rb +11 -0
  2171. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/chain.rb +111 -0
  2172. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  2173. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  2174. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  2175. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  2176. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  2177. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  2178. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  2179. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  2180. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  2181. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/argument_matchers.rb +322 -0
  2182. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/configuration.rb +212 -0
  2183. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/error_generator.rb +369 -0
  2184. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/example_methods.rb +434 -0
  2185. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  2186. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  2187. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  2188. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
  2189. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  2190. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  2191. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  2192. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/message_chain.rb +87 -0
  2193. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/message_expectation.rb +751 -0
  2194. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/method_double.rb +287 -0
  2195. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/method_reference.rb +202 -0
  2196. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  2197. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/mutate_const.rb +339 -0
  2198. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/object_reference.rb +149 -0
  2199. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/order_group.rb +81 -0
  2200. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/proxy.rb +503 -0
  2201. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/space.rb +238 -0
  2202. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/standalone.rb +3 -0
  2203. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/syntax.rb +325 -0
  2204. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/targets.rb +124 -0
  2205. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/test_double.rb +171 -0
  2206. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/verifying_double.rb +129 -0
  2207. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  2208. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
  2209. data/vendor/bundle/gems/rspec-mocks-3.9.0/lib/rspec/mocks/version.rb +9 -0
  2210. data/vendor/bundle/gems/rspec-support-3.9.0/Changelog.md +275 -0
  2211. data/vendor/bundle/gems/rspec-support-3.9.0/LICENSE.md +23 -0
  2212. data/vendor/bundle/gems/rspec-support-3.9.0/README.md +40 -0
  2213. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support.rb +149 -0
  2214. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/caller_filter.rb +83 -0
  2215. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/comparable_version.rb +46 -0
  2216. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/differ.rb +215 -0
  2217. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/directory_maker.rb +63 -0
  2218. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/encoded_string.rb +165 -0
  2219. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  2220. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/hunk_generator.rb +47 -0
  2221. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/matcher_definition.rb +42 -0
  2222. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/method_signature_verifier.rb +438 -0
  2223. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/mutex.rb +73 -0
  2224. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/object_formatter.rb +275 -0
  2225. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  2226. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/reentrant_mutex.rb +53 -0
  2227. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/ruby_features.rb +176 -0
  2228. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/source.rb +75 -0
  2229. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/source/location.rb +21 -0
  2230. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/source/node.rb +110 -0
  2231. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/source/token.rb +87 -0
  2232. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec.rb +81 -0
  2233. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  2234. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  2235. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/in_sub_process.rb +69 -0
  2236. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  2237. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/shell_out.rb +89 -0
  2238. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  2239. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  2240. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  2241. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  2242. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/version.rb +7 -0
  2243. data/vendor/bundle/gems/rspec-support-3.9.0/lib/rspec/support/warnings.rb +39 -0
  2244. data/vendor/bundle/gems/rubyzip-2.0.0/README.md +354 -0
  2245. data/vendor/bundle/gems/rubyzip-2.0.0/Rakefile +18 -0
  2246. data/vendor/bundle/gems/rubyzip-2.0.0/TODO +15 -0
  2247. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip.rb +71 -0
  2248. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/central_directory.rb +208 -0
  2249. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/compressor.rb +9 -0
  2250. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/constants.rb +63 -0
  2251. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/crypto/encryption.rb +11 -0
  2252. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/crypto/null_encryption.rb +43 -0
  2253. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/crypto/traditional_encryption.rb +99 -0
  2254. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/decompressor.rb +13 -0
  2255. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/deflater.rb +34 -0
  2256. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/dos_time.rb +48 -0
  2257. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/entry.rb +700 -0
  2258. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/entry_set.rb +86 -0
  2259. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/errors.rb +18 -0
  2260. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field.rb +101 -0
  2261. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/generic.rb +43 -0
  2262. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/ntfs.rb +90 -0
  2263. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/old_unix.rb +44 -0
  2264. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/universal_time.rb +47 -0
  2265. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/unix.rb +37 -0
  2266. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/zip64.rb +68 -0
  2267. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/extra_field/zip64_placeholder.rb +15 -0
  2268. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/file.rb +443 -0
  2269. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/filesystem.rb +627 -0
  2270. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/inflater.rb +66 -0
  2271. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/input_stream.rb +173 -0
  2272. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/ioextras.rb +36 -0
  2273. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/ioextras/abstract_input_stream.rb +111 -0
  2274. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/ioextras/abstract_output_stream.rb +43 -0
  2275. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/null_compressor.rb +15 -0
  2276. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/null_decompressor.rb +27 -0
  2277. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/null_input_stream.rb +10 -0
  2278. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/output_stream.rb +189 -0
  2279. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/pass_thru_compressor.rb +23 -0
  2280. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/pass_thru_decompressor.rb +40 -0
  2281. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/streamable_directory.rb +15 -0
  2282. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/streamable_stream.rb +56 -0
  2283. data/vendor/bundle/gems/rubyzip-2.0.0/lib/zip/version.rb +3 -0
  2284. data/vendor/bundle/gems/rubyzip-2.0.0/samples/example.rb +81 -0
  2285. data/vendor/bundle/gems/rubyzip-2.0.0/samples/example_filesystem.rb +31 -0
  2286. data/vendor/bundle/gems/rubyzip-2.0.0/samples/example_recursive.rb +54 -0
  2287. data/vendor/bundle/gems/rubyzip-2.0.0/samples/gtk_ruby_zip.rb +84 -0
  2288. data/vendor/bundle/gems/rubyzip-2.0.0/samples/qtzip.rb +92 -0
  2289. data/vendor/bundle/gems/rubyzip-2.0.0/samples/write_simple.rb +12 -0
  2290. data/vendor/bundle/gems/rubyzip-2.0.0/samples/zipfind.rb +66 -0
  2291. data/vendor/bundle/gems/sawyer-0.8.2/Gemfile +8 -0
  2292. data/vendor/bundle/gems/sawyer-0.8.2/LICENSE.md +20 -0
  2293. data/vendor/bundle/gems/sawyer-0.8.2/README.md +62 -0
  2294. data/vendor/bundle/gems/sawyer-0.8.2/Rakefile +12 -0
  2295. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer.rb +17 -0
  2296. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/agent.rb +158 -0
  2297. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/link_parsers/hal.rb +15 -0
  2298. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/link_parsers/simple.rb +29 -0
  2299. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/relation.rb +272 -0
  2300. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/resource.rb +155 -0
  2301. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/response.rb +72 -0
  2302. data/vendor/bundle/gems/sawyer-0.8.2/lib/sawyer/serializer.rb +129 -0
  2303. data/vendor/bundle/gems/sawyer-0.8.2/sawyer.gemspec +31 -0
  2304. data/vendor/bundle/gems/sawyer-0.8.2/script/bootstrap +5 -0
  2305. data/vendor/bundle/gems/sawyer-0.8.2/script/console +8 -0
  2306. data/vendor/bundle/gems/sawyer-0.8.2/script/package +8 -0
  2307. data/vendor/bundle/gems/sawyer-0.8.2/script/release +16 -0
  2308. data/vendor/bundle/gems/sawyer-0.8.2/script/test +6 -0
  2309. data/vendor/bundle/gems/selenium-webdriver-3.142.6/CHANGES +1641 -0
  2310. data/vendor/bundle/gems/selenium-webdriver-3.142.6/Gemfile +4 -0
  2311. data/vendor/bundle/gems/selenium-webdriver-3.142.6/LICENSE +202 -0
  2312. data/vendor/bundle/gems/selenium-webdriver-3.142.6/README.md +35 -0
  2313. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium-webdriver.rb +20 -0
  2314. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/server.rb +272 -0
  2315. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver.rb +101 -0
  2316. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/atoms.rb +37 -0
  2317. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/atoms/getAttribute.js +7 -0
  2318. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/atoms/isDisplayed.js +102 -0
  2319. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/chrome.rb +54 -0
  2320. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/chrome/bridge.rb +68 -0
  2321. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/chrome/driver.rb +114 -0
  2322. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/chrome/options.rb +186 -0
  2323. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/chrome/profile.rb +110 -0
  2324. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/chrome/service.rb +59 -0
  2325. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common.rb +76 -0
  2326. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/action_builder.rb +365 -0
  2327. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/alert.rb +47 -0
  2328. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/bridge_helper.rb +82 -0
  2329. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver.rb +308 -0
  2330. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +45 -0
  2331. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +50 -0
  2332. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_debugger.rb +42 -0
  2333. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_location.rb +40 -0
  2334. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +51 -0
  2335. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +58 -0
  2336. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +51 -0
  2337. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +30 -0
  2338. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +39 -0
  2339. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +36 -0
  2340. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +38 -0
  2341. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +61 -0
  2342. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +64 -0
  2343. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +60 -0
  2344. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/element.rb +335 -0
  2345. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/error.rb +383 -0
  2346. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/file_reaper.rb +65 -0
  2347. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/html5/local_storage.rb +59 -0
  2348. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/html5/session_storage.rb +61 -0
  2349. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/html5/shared_web_storage.rb +53 -0
  2350. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/input_device.rb +54 -0
  2351. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/interaction.rb +53 -0
  2352. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/interactions.rb +43 -0
  2353. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/key_actions.rb +145 -0
  2354. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/key_input.rb +66 -0
  2355. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/none_input.rb +36 -0
  2356. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/pointer_actions.rb +363 -0
  2357. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/interactions/pointer_input.rb +139 -0
  2358. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/keyboard.rb +70 -0
  2359. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/keys.rb +146 -0
  2360. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/log_entry.rb +48 -0
  2361. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/logger.rb +115 -0
  2362. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/logs.rb +40 -0
  2363. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/manager.rb +177 -0
  2364. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/mouse.rb +89 -0
  2365. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/navigation.rb +60 -0
  2366. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/platform.rb +222 -0
  2367. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/port_prober.rb +49 -0
  2368. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/profile_helper.rb +83 -0
  2369. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/proxy.rb +162 -0
  2370. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/search_context.rb +108 -0
  2371. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/service.rb +219 -0
  2372. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/socket_lock.rb +82 -0
  2373. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/socket_poller.rb +126 -0
  2374. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/target_locator.rb +111 -0
  2375. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/timeouts.rb +55 -0
  2376. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/touch_action_builder.rb +78 -0
  2377. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/touch_screen.rb +123 -0
  2378. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/w3c_action_builder.rb +212 -0
  2379. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/w3c_manager.rb +45 -0
  2380. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/wait.rb +83 -0
  2381. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/window.rb +163 -0
  2382. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/common/zipper.rb +97 -0
  2383. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/edge.rb +44 -0
  2384. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/edge/bridge.rb +76 -0
  2385. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/edge/driver.rb +66 -0
  2386. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/edge/options.rb +80 -0
  2387. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/edge/service.rb +52 -0
  2388. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox.rb +66 -0
  2389. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/binary.rb +187 -0
  2390. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/driver.rb +50 -0
  2391. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/extension.rb +95 -0
  2392. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/extension/prefs.json +69 -0
  2393. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  2394. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/launcher.rb +111 -0
  2395. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/legacy/driver.rb +83 -0
  2396. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/marionette/bridge.rb +49 -0
  2397. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/marionette/driver.rb +90 -0
  2398. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
  2399. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
  2400. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/options.rb +162 -0
  2401. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/profile.rb +281 -0
  2402. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/profiles_ini.rb +74 -0
  2403. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/service.rb +52 -0
  2404. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/firefox/util.rb +46 -0
  2405. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/ie.rb +41 -0
  2406. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/ie/driver.rb +85 -0
  2407. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/ie/options.rb +138 -0
  2408. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/ie/service.rb +54 -0
  2409. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote.rb +35 -0
  2410. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/bridge.rb +195 -0
  2411. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/capabilities.rb +285 -0
  2412. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/driver.rb +51 -0
  2413. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/common.rb +105 -0
  2414. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/curb.rb +97 -0
  2415. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/default.rb +182 -0
  2416. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/http/persistent.rb +60 -0
  2417. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/oss/bridge.rb +594 -0
  2418. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/oss/commands.rb +223 -0
  2419. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/response.rb +136 -0
  2420. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/server_error.rb +34 -0
  2421. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/w3c/bridge.rb +605 -0
  2422. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/w3c/capabilities.rb +310 -0
  2423. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/remote/w3c/commands.rb +157 -0
  2424. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/safari.rb +65 -0
  2425. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/safari/bridge.rb +51 -0
  2426. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/safari/driver.rb +68 -0
  2427. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/safari/options.rb +60 -0
  2428. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/safari/service.rb +38 -0
  2429. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support.rb +25 -0
  2430. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support/abstract_event_listener.rb +87 -0
  2431. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support/block_event_listener.rb +34 -0
  2432. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support/color.rb +146 -0
  2433. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support/escaper.rb +43 -0
  2434. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support/event_firing_bridge.rb +129 -0
  2435. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/support/select.rb +270 -0
  2436. data/vendor/bundle/gems/selenium-webdriver-3.142.6/lib/selenium/webdriver/version.rb +24 -0
  2437. data/vendor/bundle/gems/selenium-webdriver-3.142.6/selenium-webdriver.gemspec +47 -0
  2438. data/vendor/bundle/gems/sequel-5.26.0/CHANGELOG +2571 -0
  2439. data/vendor/bundle/gems/sequel-5.26.0/MIT-LICENSE +19 -0
  2440. data/vendor/bundle/gems/sequel-5.26.0/README.rdoc +902 -0
  2441. data/vendor/bundle/gems/sequel-5.26.0/Rakefile +151 -0
  2442. data/vendor/bundle/gems/sequel-5.26.0/bin/sequel +267 -0
  2443. data/vendor/bundle/gems/sequel-5.26.0/doc/advanced_associations.rdoc +882 -0
  2444. data/vendor/bundle/gems/sequel-5.26.0/doc/association_basics.rdoc +1759 -0
  2445. data/vendor/bundle/gems/sequel-5.26.0/doc/bin_sequel.rdoc +146 -0
  2446. data/vendor/bundle/gems/sequel-5.26.0/doc/cheat_sheet.rdoc +246 -0
  2447. data/vendor/bundle/gems/sequel-5.26.0/doc/code_order.rdoc +104 -0
  2448. data/vendor/bundle/gems/sequel-5.26.0/doc/core_extensions.rdoc +405 -0
  2449. data/vendor/bundle/gems/sequel-5.26.0/doc/dataset_basics.rdoc +96 -0
  2450. data/vendor/bundle/gems/sequel-5.26.0/doc/dataset_filtering.rdoc +222 -0
  2451. data/vendor/bundle/gems/sequel-5.26.0/doc/extensions.rdoc +77 -0
  2452. data/vendor/bundle/gems/sequel-5.26.0/doc/mass_assignment.rdoc +98 -0
  2453. data/vendor/bundle/gems/sequel-5.26.0/doc/migration.rdoc +639 -0
  2454. data/vendor/bundle/gems/sequel-5.26.0/doc/model_dataset_method_design.rdoc +129 -0
  2455. data/vendor/bundle/gems/sequel-5.26.0/doc/model_hooks.rdoc +254 -0
  2456. data/vendor/bundle/gems/sequel-5.26.0/doc/model_plugins.rdoc +270 -0
  2457. data/vendor/bundle/gems/sequel-5.26.0/doc/mssql_stored_procedures.rdoc +43 -0
  2458. data/vendor/bundle/gems/sequel-5.26.0/doc/object_model.rdoc +563 -0
  2459. data/vendor/bundle/gems/sequel-5.26.0/doc/opening_databases.rdoc +414 -0
  2460. data/vendor/bundle/gems/sequel-5.26.0/doc/postgresql.rdoc +532 -0
  2461. data/vendor/bundle/gems/sequel-5.26.0/doc/prepared_statements.rdoc +144 -0
  2462. data/vendor/bundle/gems/sequel-5.26.0/doc/querying.rdoc +1063 -0
  2463. data/vendor/bundle/gems/sequel-5.26.0/doc/reflection.rdoc +120 -0
  2464. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.0.0.txt +262 -0
  2465. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.1.0.txt +85 -0
  2466. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.10.0.txt +226 -0
  2467. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.11.0.txt +147 -0
  2468. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.12.0.txt +105 -0
  2469. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.13.0.txt +169 -0
  2470. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.14.0.txt +68 -0
  2471. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.15.0.txt +56 -0
  2472. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.16.0.txt +36 -0
  2473. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.17.0.txt +38 -0
  2474. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.18.0.txt +36 -0
  2475. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.19.0.txt +45 -0
  2476. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.2.0.txt +129 -0
  2477. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.20.0.txt +79 -0
  2478. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.21.0.txt +94 -0
  2479. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.22.0.txt +72 -0
  2480. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.23.0.txt +65 -0
  2481. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.24.0.txt +99 -0
  2482. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.25.0.txt +181 -0
  2483. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.26.0.txt +44 -0
  2484. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.27.0.txt +78 -0
  2485. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.28.0.txt +57 -0
  2486. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.29.0.txt +41 -0
  2487. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.3.0.txt +40 -0
  2488. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.30.0.txt +37 -0
  2489. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.31.0.txt +57 -0
  2490. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.32.0.txt +132 -0
  2491. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.33.0.txt +88 -0
  2492. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.34.0.txt +86 -0
  2493. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.35.0.txt +130 -0
  2494. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.36.0.txt +116 -0
  2495. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.37.0.txt +50 -0
  2496. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.38.0.txt +67 -0
  2497. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.39.0.txt +127 -0
  2498. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.4.0.txt +92 -0
  2499. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.40.0.txt +179 -0
  2500. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.41.0.txt +77 -0
  2501. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.42.0.txt +221 -0
  2502. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.43.0.txt +87 -0
  2503. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.44.0.txt +125 -0
  2504. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.45.0.txt +370 -0
  2505. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.46.0.txt +404 -0
  2506. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.47.0.txt +56 -0
  2507. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.48.0.txt +293 -0
  2508. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.49.0.txt +222 -0
  2509. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.5.0.txt +34 -0
  2510. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.6.0.txt +30 -0
  2511. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.7.0.txt +103 -0
  2512. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.8.0.txt +175 -0
  2513. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/4.9.0.txt +190 -0
  2514. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.0.0.txt +159 -0
  2515. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.1.0.txt +31 -0
  2516. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.10.0.txt +84 -0
  2517. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.11.0.txt +83 -0
  2518. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.12.0.txt +141 -0
  2519. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.13.0.txt +27 -0
  2520. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.14.0.txt +63 -0
  2521. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.15.0.txt +39 -0
  2522. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.16.0.txt +110 -0
  2523. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.17.0.txt +31 -0
  2524. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.18.0.txt +69 -0
  2525. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.19.0.txt +28 -0
  2526. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.2.0.txt +33 -0
  2527. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.20.0.txt +89 -0
  2528. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.21.0.txt +87 -0
  2529. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.22.0.txt +48 -0
  2530. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.23.0.txt +56 -0
  2531. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.24.0.txt +56 -0
  2532. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.25.0.txt +32 -0
  2533. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.26.0.txt +35 -0
  2534. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.3.0.txt +121 -0
  2535. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.4.0.txt +80 -0
  2536. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.5.0.txt +61 -0
  2537. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.6.0.txt +31 -0
  2538. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.7.0.txt +108 -0
  2539. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.8.0.txt +170 -0
  2540. data/vendor/bundle/gems/sequel-5.26.0/doc/release_notes/5.9.0.txt +99 -0
  2541. data/vendor/bundle/gems/sequel-5.26.0/doc/schema_modification.rdoc +679 -0
  2542. data/vendor/bundle/gems/sequel-5.26.0/doc/security.rdoc +443 -0
  2543. data/vendor/bundle/gems/sequel-5.26.0/doc/sharding.rdoc +284 -0
  2544. data/vendor/bundle/gems/sequel-5.26.0/doc/sql.rdoc +636 -0
  2545. data/vendor/bundle/gems/sequel-5.26.0/doc/testing.rdoc +172 -0
  2546. data/vendor/bundle/gems/sequel-5.26.0/doc/thread_safety.rdoc +15 -0
  2547. data/vendor/bundle/gems/sequel-5.26.0/doc/transactions.rdoc +258 -0
  2548. data/vendor/bundle/gems/sequel-5.26.0/doc/validations.rdoc +558 -0
  2549. data/vendor/bundle/gems/sequel-5.26.0/doc/virtual_rows.rdoc +265 -0
  2550. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel.rb +3 -0
  2551. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/ado.rb +283 -0
  2552. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/ado/access.rb +335 -0
  2553. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/ado/mssql.rb +62 -0
  2554. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/amalgalite.rb +171 -0
  2555. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/ibmdb.rb +422 -0
  2556. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc.rb +822 -0
  2557. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/db2.rb +83 -0
  2558. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/derby.rb +310 -0
  2559. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/h2.rb +237 -0
  2560. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/hsqldb.rb +220 -0
  2561. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/jtds.rb +39 -0
  2562. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/mssql.rb +30 -0
  2563. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/mysql.rb +89 -0
  2564. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/oracle.rb +146 -0
  2565. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/postgresql.rb +230 -0
  2566. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/sqlanywhere.rb +72 -0
  2567. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/sqlite.rb +133 -0
  2568. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/sqlserver.rb +88 -0
  2569. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/jdbc/transactions.rb +95 -0
  2570. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/mock.rb +381 -0
  2571. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/mysql.rb +355 -0
  2572. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/mysql2.rb +295 -0
  2573. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/odbc.rb +148 -0
  2574. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/odbc/db2.rb +11 -0
  2575. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/odbc/mssql.rb +57 -0
  2576. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/odbc/oracle.rb +11 -0
  2577. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/oracle.rb +409 -0
  2578. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/postgres.rb +814 -0
  2579. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/postgresql.rb +3 -0
  2580. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/access.rb +290 -0
  2581. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/db2.rb +462 -0
  2582. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/mssql.rb +1086 -0
  2583. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/mysql.rb +1061 -0
  2584. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/oracle.rb +646 -0
  2585. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/postgres.rb +1991 -0
  2586. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/sqlanywhere.rb +454 -0
  2587. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/shared/sqlite.rb +911 -0
  2588. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/sqlanywhere.rb +192 -0
  2589. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/sqlite.rb +376 -0
  2590. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/tinytds.rb +258 -0
  2591. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +74 -0
  2592. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +93 -0
  2593. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/mysql_mysql2.rb +86 -0
  2594. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
  2595. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/replace.rb +35 -0
  2596. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/split_alter_table.rb +46 -0
  2597. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/stored_procedures.rb +61 -0
  2598. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
  2599. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/ast_transformer.rb +124 -0
  2600. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/connection_pool.rb +143 -0
  2601. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/connection_pool/sharded_single.rb +112 -0
  2602. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/connection_pool/sharded_threaded.rb +371 -0
  2603. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/connection_pool/single.rb +59 -0
  2604. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/connection_pool/threaded.rb +285 -0
  2605. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/core.rb +434 -0
  2606. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database.rb +37 -0
  2607. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/connecting.rb +332 -0
  2608. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/dataset.rb +79 -0
  2609. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/dataset_defaults.rb +93 -0
  2610. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/features.rb +150 -0
  2611. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/logging.rb +91 -0
  2612. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/misc.rb +551 -0
  2613. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/query.rb +363 -0
  2614. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/schema_generator.rb +652 -0
  2615. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/schema_methods.rb +1056 -0
  2616. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/database/transactions.rb +547 -0
  2617. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset.rb +56 -0
  2618. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/actions.rb +1240 -0
  2619. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/dataset_module.rb +46 -0
  2620. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/features.rb +249 -0
  2621. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/graph.rb +296 -0
  2622. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/misc.rb +371 -0
  2623. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/placeholder_literalizer.rb +223 -0
  2624. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/prepared_statements.rb +427 -0
  2625. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/query.rb +1369 -0
  2626. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/dataset/sql.rb +1672 -0
  2627. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/deprecated.rb +68 -0
  2628. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/exceptions.rb +123 -0
  2629. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
  2630. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/_model_pg_row.rb +43 -0
  2631. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/_pretty_table.rb +86 -0
  2632. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/arbitrary_servers.rb +114 -0
  2633. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/auto_literal_strings.rb +74 -0
  2634. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/blank.rb +49 -0
  2635. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/caller_logging.rb +79 -0
  2636. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/columns_introspection.rb +89 -0
  2637. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/connection_expiration.rb +99 -0
  2638. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/connection_validator.rb +123 -0
  2639. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/constant_sql_override.rb +65 -0
  2640. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/constraint_validations.rb +510 -0
  2641. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/core_extensions.rb +222 -0
  2642. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/core_refinements.rb +217 -0
  2643. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/current_datetime_timestamp.rb +59 -0
  2644. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/dataset_source_alias.rb +95 -0
  2645. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/date_arithmetic.rb +214 -0
  2646. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
  2647. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/duplicate_columns_handler.rb +92 -0
  2648. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/empty_array_consider_nulls.rb +39 -0
  2649. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/error_sql.rb +76 -0
  2650. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/escaped_like.rb +100 -0
  2651. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/eval_inspect.rb +181 -0
  2652. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/freeze_datasets.rb +3 -0
  2653. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/from_block.rb +3 -0
  2654. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/graph_each.rb +88 -0
  2655. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/identifier_mangling.rb +180 -0
  2656. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/implicit_subquery.rb +48 -0
  2657. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/index_caching.rb +107 -0
  2658. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/inflector.rb +250 -0
  2659. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/integer64.rb +30 -0
  2660. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/looser_typecasting.rb +54 -0
  2661. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/migration.rb +786 -0
  2662. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +84 -0
  2663. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/named_timezones.rb +164 -0
  2664. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
  2665. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/null_dataset.rb +109 -0
  2666. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pagination.rb +140 -0
  2667. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_array.rb +526 -0
  2668. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_array_ops.rb +328 -0
  2669. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_enum.rb +192 -0
  2670. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
  2671. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_hstore.rb +342 -0
  2672. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_hstore_ops.rb +361 -0
  2673. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_inet.rb +127 -0
  2674. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_inet_ops.rb +204 -0
  2675. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_interval.rb +196 -0
  2676. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_json.rb +646 -0
  2677. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_json_ops.rb +637 -0
  2678. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_loose_count.rb +37 -0
  2679. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_range.rb +575 -0
  2680. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_range_ops.rb +165 -0
  2681. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_row.rb +582 -0
  2682. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_row_ops.rb +193 -0
  2683. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_static_cache_updater.rb +144 -0
  2684. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pg_timestamptz.rb +26 -0
  2685. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/pretty_table.rb +40 -0
  2686. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/query.rb +82 -0
  2687. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/round_timestamps.rb +49 -0
  2688. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/s.rb +57 -0
  2689. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/schema_caching.rb +88 -0
  2690. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/schema_dumper.rb +498 -0
  2691. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/select_remove.rb +52 -0
  2692. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
  2693. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/server_block.rb +182 -0
  2694. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/server_logging.rb +61 -0
  2695. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/split_array_nil.rb +70 -0
  2696. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/sql_comments.rb +96 -0
  2697. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/sql_expr.rb +23 -0
  2698. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/string_agg.rb +181 -0
  2699. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/string_date_time.rb +52 -0
  2700. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/symbol_aref.rb +53 -0
  2701. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/symbol_aref_refinement.rb +41 -0
  2702. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/symbol_as.rb +23 -0
  2703. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/symbol_as_refinement.rb +35 -0
  2704. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/synchronize_sql.rb +45 -0
  2705. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/thread_local_timezones.rb +59 -0
  2706. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/to_dot.rb +158 -0
  2707. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
  2708. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model.rb +83 -0
  2709. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/associations.rb +3761 -0
  2710. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/base.rb +2232 -0
  2711. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/dataset_module.rb +33 -0
  2712. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/default_inflections.rb +47 -0
  2713. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/errors.rb +58 -0
  2714. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/exceptions.rb +55 -0
  2715. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/inflections.rb +151 -0
  2716. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/model/plugins.rb +159 -0
  2717. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/accessed_columns.rb +63 -0
  2718. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/active_model.rb +124 -0
  2719. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/after_initialize.rb +39 -0
  2720. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/association_dependencies.rb +106 -0
  2721. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/association_multi_add_remove.rb +83 -0
  2722. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/association_pks.rb +274 -0
  2723. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/association_proxies.rb +126 -0
  2724. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/auto_validations.rb +230 -0
  2725. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/before_after_save.rb +8 -0
  2726. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/blacklist_security.rb +105 -0
  2727. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/boolean_readers.rb +59 -0
  2728. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/boolean_subsets.rb +61 -0
  2729. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/caching.rb +164 -0
  2730. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/class_table_inheritance.rb +444 -0
  2731. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/column_conflicts.rb +108 -0
  2732. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/column_select.rb +61 -0
  2733. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/columns_updated.rb +42 -0
  2734. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/composition.rb +199 -0
  2735. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/constraint_validations.rb +250 -0
  2736. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/csv_serializer.rb +194 -0
  2737. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/dataset_associations.rb +149 -0
  2738. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/def_dataset_method.rb +90 -0
  2739. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/defaults_setter.rb +130 -0
  2740. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/delay_add_association.rb +53 -0
  2741. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/dirty.rb +232 -0
  2742. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/eager_each.rb +88 -0
  2743. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  2744. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/error_splitter.rb +61 -0
  2745. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/finder.rb +246 -0
  2746. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/force_encoding.rb +78 -0
  2747. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/hook_class_methods.rb +110 -0
  2748. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/input_transformer.rb +89 -0
  2749. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/insert_conflict.rb +72 -0
  2750. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/insert_returning_select.rb +72 -0
  2751. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/instance_filters.rb +135 -0
  2752. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/instance_hooks.rb +115 -0
  2753. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/inverted_subsets.rb +59 -0
  2754. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/json_serializer.rb +429 -0
  2755. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/lazy_attributes.rb +123 -0
  2756. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/list.rb +203 -0
  2757. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/many_through_many.rb +338 -0
  2758. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/modification_detection.rb +102 -0
  2759. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/mssql_optimistic_locking.rb +95 -0
  2760. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/nested_attributes.rb +330 -0
  2761. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/optimistic_locking.rb +85 -0
  2762. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/pg_array_associations.rb +563 -0
  2763. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
  2764. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/pg_row.rb +79 -0
  2765. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/prepared_statements.rb +192 -0
  2766. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/prepared_statements_safe.rb +83 -0
  2767. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/rcte_tree.rb +338 -0
  2768. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/serialization.rb +230 -0
  2769. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/serialization_modification_detection.rb +86 -0
  2770. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/sharding.rb +126 -0
  2771. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/single_table_inheritance.rb +256 -0
  2772. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/singular_table_names.rb +33 -0
  2773. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/skip_create_refresh.rb +37 -0
  2774. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/split_values.rb +71 -0
  2775. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/static_cache.rb +264 -0
  2776. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/static_cache_cache.rb +53 -0
  2777. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/string_stripper.rb +59 -0
  2778. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/subclasses.rb +77 -0
  2779. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/subset_conditions.rb +48 -0
  2780. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/table_select.rb +43 -0
  2781. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/tactical_eager_loading.rb +199 -0
  2782. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/throw_failures.rb +110 -0
  2783. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/timestamps.rb +109 -0
  2784. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/touch.rb +153 -0
  2785. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/tree.rb +183 -0
  2786. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/typecast_on_load.rb +90 -0
  2787. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/unlimited_update.rb +27 -0
  2788. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/update_or_create.rb +64 -0
  2789. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/update_primary_key.rb +72 -0
  2790. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/update_refresh.rb +88 -0
  2791. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/uuid.rb +70 -0
  2792. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/validate_associated.rb +75 -0
  2793. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/validation_class_methods.rb +456 -0
  2794. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/validation_contexts.rb +49 -0
  2795. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/validation_helpers.rb +317 -0
  2796. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/whitelist_security.rb +122 -0
  2797. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/plugins/xml_serializer.rb +411 -0
  2798. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/sql.rb +2048 -0
  2799. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/timezones.rb +249 -0
  2800. data/vendor/bundle/gems/sequel-5.26.0/lib/sequel/version.rb +25 -0
  2801. data/vendor/bundle/gems/sequel-5.26.0/spec/adapter_spec.rb +4 -0
  2802. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/db2_spec.rb +170 -0
  2803. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/mssql_spec.rb +828 -0
  2804. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/mysql_spec.rb +1060 -0
  2805. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/oracle_spec.rb +371 -0
  2806. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/postgres_spec.rb +4478 -0
  2807. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/spec_helper.rb +44 -0
  2808. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/sqlanywhere_spec.rb +97 -0
  2809. data/vendor/bundle/gems/sequel-5.26.0/spec/adapters/sqlite_spec.rb +652 -0
  2810. data/vendor/bundle/gems/sequel-5.26.0/spec/bin_spec.rb +278 -0
  2811. data/vendor/bundle/gems/sequel-5.26.0/spec/core/connection_pool_spec.rb +1250 -0
  2812. data/vendor/bundle/gems/sequel-5.26.0/spec/core/database_spec.rb +2915 -0
  2813. data/vendor/bundle/gems/sequel-5.26.0/spec/core/dataset_spec.rb +5547 -0
  2814. data/vendor/bundle/gems/sequel-5.26.0/spec/core/deprecated_spec.rb +70 -0
  2815. data/vendor/bundle/gems/sequel-5.26.0/spec/core/expression_filters_spec.rb +1484 -0
  2816. data/vendor/bundle/gems/sequel-5.26.0/spec/core/mock_adapter_spec.rb +722 -0
  2817. data/vendor/bundle/gems/sequel-5.26.0/spec/core/object_graph_spec.rb +336 -0
  2818. data/vendor/bundle/gems/sequel-5.26.0/spec/core/placeholder_literalizer_spec.rb +166 -0
  2819. data/vendor/bundle/gems/sequel-5.26.0/spec/core/schema_generator_spec.rb +214 -0
  2820. data/vendor/bundle/gems/sequel-5.26.0/spec/core/schema_spec.rb +1844 -0
  2821. data/vendor/bundle/gems/sequel-5.26.0/spec/core/spec_helper.rb +24 -0
  2822. data/vendor/bundle/gems/sequel-5.26.0/spec/core/version_spec.rb +14 -0
  2823. data/vendor/bundle/gems/sequel-5.26.0/spec/core_extensions_spec.rb +763 -0
  2824. data/vendor/bundle/gems/sequel-5.26.0/spec/core_model_spec.rb +2 -0
  2825. data/vendor/bundle/gems/sequel-5.26.0/spec/core_spec.rb +1 -0
  2826. data/vendor/bundle/gems/sequel-5.26.0/spec/deprecation_helper.rb +30 -0
  2827. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/accessed_columns_spec.rb +51 -0
  2828. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/active_model_spec.rb +99 -0
  2829. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/after_initialize_spec.rb +28 -0
  2830. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/arbitrary_servers_spec.rb +109 -0
  2831. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/association_dependencies_spec.rb +125 -0
  2832. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/association_multi_add_remove_spec.rb +1041 -0
  2833. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/association_pks_spec.rb +423 -0
  2834. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/association_proxies_spec.rb +100 -0
  2835. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/auto_literal_strings_spec.rb +205 -0
  2836. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/auto_validations_spec.rb +229 -0
  2837. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/blacklist_security_spec.rb +95 -0
  2838. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/blank_spec.rb +69 -0
  2839. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/boolean_readers_spec.rb +93 -0
  2840. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/boolean_subsets_spec.rb +47 -0
  2841. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/caching_spec.rb +273 -0
  2842. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/caller_logging_spec.rb +52 -0
  2843. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/class_table_inheritance_spec.rb +750 -0
  2844. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/column_conflicts_spec.rb +75 -0
  2845. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/column_select_spec.rb +129 -0
  2846. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/columns_introspection_spec.rb +90 -0
  2847. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/columns_updated_spec.rb +35 -0
  2848. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/composition_spec.rb +248 -0
  2849. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/connection_expiration_spec.rb +151 -0
  2850. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/connection_validator_spec.rb +144 -0
  2851. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/constant_sql_override_spec.rb +24 -0
  2852. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/constraint_validations_plugin_spec.rb +300 -0
  2853. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/constraint_validations_spec.rb +439 -0
  2854. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/core_refinements_spec.rb +528 -0
  2855. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/csv_serializer_spec.rb +183 -0
  2856. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/current_datetime_timestamp_spec.rb +27 -0
  2857. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/dataset_associations_spec.rb +365 -0
  2858. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/dataset_source_alias_spec.rb +51 -0
  2859. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/date_arithmetic_spec.rb +181 -0
  2860. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/datetime_parse_to_time_spec.rb +169 -0
  2861. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/def_dataset_method_spec.rb +100 -0
  2862. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/defaults_setter_spec.rb +150 -0
  2863. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/delay_add_association_spec.rb +73 -0
  2864. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/dirty_spec.rb +222 -0
  2865. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/duplicate_columns_handler_spec.rb +104 -0
  2866. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/eager_each_spec.rb +62 -0
  2867. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/eager_graph_eager_spec.rb +100 -0
  2868. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/empty_array_consider_nulls_spec.rb +24 -0
  2869. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/error_splitter_spec.rb +18 -0
  2870. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/error_sql_spec.rb +20 -0
  2871. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/escaped_like_spec.rb +40 -0
  2872. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/eval_inspect_spec.rb +81 -0
  2873. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/finder_spec.rb +260 -0
  2874. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/force_encoding_spec.rb +126 -0
  2875. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/freeze_datasets_spec.rb +31 -0
  2876. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/graph_each_spec.rb +113 -0
  2877. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/hook_class_methods_spec.rb +402 -0
  2878. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/identifier_mangling_spec.rb +201 -0
  2879. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/implicit_subquery_spec.rb +58 -0
  2880. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/index_caching_spec.rb +66 -0
  2881. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/inflector_spec.rb +183 -0
  2882. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/input_transformer_spec.rb +69 -0
  2883. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/insert_conflict_spec.rb +103 -0
  2884. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/insert_returning_select_spec.rb +72 -0
  2885. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/instance_filters_spec.rb +79 -0
  2886. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/instance_hooks_spec.rb +246 -0
  2887. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/integer64_spec.rb +22 -0
  2888. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/inverted_subsets_spec.rb +33 -0
  2889. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/json_serializer_spec.rb +336 -0
  2890. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/lazy_attributes_spec.rb +183 -0
  2891. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/list_spec.rb +291 -0
  2892. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/looser_typecasting_spec.rb +43 -0
  2893. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/many_through_many_spec.rb +2177 -0
  2894. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/migration_spec.rb +864 -0
  2895. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/modification_detection_spec.rb +93 -0
  2896. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/mssql_optimistic_locking_spec.rb +92 -0
  2897. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/named_timezones_spec.rb +218 -0
  2898. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/nested_attributes_spec.rb +815 -0
  2899. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/null_dataset_spec.rb +85 -0
  2900. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/optimistic_locking_spec.rb +127 -0
  2901. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pagination_spec.rb +116 -0
  2902. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_array_associations_spec.rb +802 -0
  2903. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_array_ops_spec.rb +144 -0
  2904. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_array_spec.rb +398 -0
  2905. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_auto_constraint_validations_spec.rb +209 -0
  2906. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_enum_spec.rb +118 -0
  2907. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_extended_date_support_spec.rb +126 -0
  2908. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_hstore_ops_spec.rb +238 -0
  2909. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_hstore_spec.rb +219 -0
  2910. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_inet_ops_spec.rb +102 -0
  2911. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_inet_spec.rb +72 -0
  2912. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_interval_spec.rb +103 -0
  2913. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_json_ops_spec.rb +356 -0
  2914. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_json_spec.rb +451 -0
  2915. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_loose_count_spec.rb +23 -0
  2916. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_range_ops_spec.rb +60 -0
  2917. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_range_spec.rb +600 -0
  2918. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_row_ops_spec.rb +61 -0
  2919. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_row_plugin_spec.rb +60 -0
  2920. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_row_spec.rb +363 -0
  2921. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_static_cache_updater_spec.rb +93 -0
  2922. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pg_timestamptz_spec.rb +17 -0
  2923. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/prepared_statements_safe_spec.rb +66 -0
  2924. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/prepared_statements_spec.rb +177 -0
  2925. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/pretty_table_spec.rb +123 -0
  2926. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/query_spec.rb +94 -0
  2927. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/rcte_tree_spec.rb +387 -0
  2928. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/round_timestamps_spec.rb +39 -0
  2929. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/s_spec.rb +60 -0
  2930. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/schema_caching_spec.rb +64 -0
  2931. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/schema_dumper_spec.rb +870 -0
  2932. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/select_remove_spec.rb +38 -0
  2933. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/sequel_4_dataset_methods_spec.rb +121 -0
  2934. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/serialization_modification_detection_spec.rb +98 -0
  2935. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/serialization_spec.rb +365 -0
  2936. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/server_block_spec.rb +135 -0
  2937. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/server_logging_spec.rb +45 -0
  2938. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/sharding_spec.rb +197 -0
  2939. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/shared_caching_spec.rb +151 -0
  2940. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/single_table_inheritance_spec.rb +347 -0
  2941. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/singular_table_names_spec.rb +22 -0
  2942. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/skip_create_refresh_spec.rb +18 -0
  2943. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/spec_helper.rb +70 -0
  2944. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/split_array_nil_spec.rb +24 -0
  2945. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/split_values_spec.rb +57 -0
  2946. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/sql_comments_spec.rb +33 -0
  2947. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/sql_expr_spec.rb +59 -0
  2948. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/static_cache_cache_spec.rb +35 -0
  2949. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/static_cache_spec.rb +471 -0
  2950. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/string_agg_spec.rb +90 -0
  2951. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/string_date_time_spec.rb +95 -0
  2952. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/string_stripper_spec.rb +68 -0
  2953. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/subclasses_spec.rb +79 -0
  2954. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/subset_conditions_spec.rb +38 -0
  2955. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/symbol_aref_refinement_spec.rb +28 -0
  2956. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/symbol_as_refinement_spec.rb +21 -0
  2957. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/synchronize_sql_spec.rb +124 -0
  2958. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/table_select_spec.rb +83 -0
  2959. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/tactical_eager_loading_spec.rb +402 -0
  2960. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/thread_local_timezones_spec.rb +67 -0
  2961. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/throw_failures_spec.rb +74 -0
  2962. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/timestamps_spec.rb +209 -0
  2963. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/to_dot_spec.rb +153 -0
  2964. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/touch_spec.rb +226 -0
  2965. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/tree_spec.rb +334 -0
  2966. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/typecast_on_load_spec.rb +86 -0
  2967. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/unlimited_update_spec.rb +21 -0
  2968. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/update_or_create_spec.rb +83 -0
  2969. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/update_primary_key_spec.rb +105 -0
  2970. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/update_refresh_spec.rb +59 -0
  2971. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/uuid_spec.rb +101 -0
  2972. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/validate_associated_spec.rb +52 -0
  2973. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/validation_class_methods_spec.rb +1040 -0
  2974. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/validation_contexts_spec.rb +31 -0
  2975. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/validation_helpers_spec.rb +525 -0
  2976. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/whitelist_security_spec.rb +157 -0
  2977. data/vendor/bundle/gems/sequel-5.26.0/spec/extensions/xml_serializer_spec.rb +213 -0
  2978. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_down_migration/001_create_alt_basic.rb +4 -0
  2979. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_down_migration/002_create_alt_advanced.rb +4 -0
  2980. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +9 -0
  2981. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +9 -0
  2982. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +3 -0
  2983. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_up_migration/001_create_alt_basic.rb +4 -0
  2984. data/vendor/bundle/gems/sequel-5.26.0/spec/files/bad_up_migration/002_create_alt_advanced.rb +3 -0
  2985. data/vendor/bundle/gems/sequel-5.26.0/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +9 -0
  2986. data/vendor/bundle/gems/sequel-5.26.0/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +9 -0
  2987. data/vendor/bundle/gems/sequel-5.26.0/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +4 -0
  2988. data/vendor/bundle/gems/sequel-5.26.0/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +9 -0
  2989. data/vendor/bundle/gems/sequel-5.26.0/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +9 -0
  2990. data/vendor/bundle/gems/sequel-5.26.0/spec/files/double_migration/001_create_sessions.rb +9 -0
  2991. data/vendor/bundle/gems/sequel-5.26.0/spec/files/double_migration/002_create_nodes.rb +19 -0
  2992. data/vendor/bundle/gems/sequel-5.26.0/spec/files/double_migration/003_3_create_users.rb +4 -0
  2993. data/vendor/bundle/gems/sequel-5.26.0/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +4 -0
  2994. data/vendor/bundle/gems/sequel-5.26.0/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +4 -0
  2995. data/vendor/bundle/gems/sequel-5.26.0/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +9 -0
  2996. data/vendor/bundle/gems/sequel-5.26.0/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +9 -0
  2997. data/vendor/bundle/gems/sequel-5.26.0/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +4 -0
  2998. data/vendor/bundle/gems/sequel-5.26.0/spec/files/empty_migration/001_create_sessions.rb +9 -0
  2999. data/vendor/bundle/gems/sequel-5.26.0/spec/files/empty_migration/002_create_nodes.rb +0 -0
  3000. data/vendor/bundle/gems/sequel-5.26.0/spec/files/empty_migration/003_3_create_users.rb +4 -0
  3001. data/vendor/bundle/gems/sequel-5.26.0/spec/files/integer_migrations/001_create_sessions.rb +9 -0
  3002. data/vendor/bundle/gems/sequel-5.26.0/spec/files/integer_migrations/002_create_nodes.rb +9 -0
  3003. data/vendor/bundle/gems/sequel-5.26.0/spec/files/integer_migrations/003_3_create_users.rb +4 -0
  3004. data/vendor/bundle/gems/sequel-5.26.0/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +9 -0
  3005. data/vendor/bundle/gems/sequel-5.26.0/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +9 -0
  3006. data/vendor/bundle/gems/sequel-5.26.0/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +9 -0
  3007. data/vendor/bundle/gems/sequel-5.26.0/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +9 -0
  3008. data/vendor/bundle/gems/sequel-5.26.0/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +4 -0
  3009. data/vendor/bundle/gems/sequel-5.26.0/spec/files/missing_integer_migrations/001_create_alt_basic.rb +4 -0
  3010. data/vendor/bundle/gems/sequel-5.26.0/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +4 -0
  3011. data/vendor/bundle/gems/sequel-5.26.0/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +9 -0
  3012. data/vendor/bundle/gems/sequel-5.26.0/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +4 -0
  3013. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/001_reversible.rb +5 -0
  3014. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/002_reversible.rb +5 -0
  3015. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/003_reversible.rb +5 -0
  3016. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/004_reversible.rb +5 -0
  3017. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/005_reversible.rb +10 -0
  3018. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/006_reversible.rb +10 -0
  3019. data/vendor/bundle/gems/sequel-5.26.0/spec/files/reversible_migrations/007_reversible.rb +10 -0
  3020. data/vendor/bundle/gems/sequel-5.26.0/spec/files/timestamped_migrations/1273253849_create_sessions.rb +9 -0
  3021. data/vendor/bundle/gems/sequel-5.26.0/spec/files/timestamped_migrations/1273253851_create_nodes.rb +9 -0
  3022. data/vendor/bundle/gems/sequel-5.26.0/spec/files/timestamped_migrations/1273253853_3_create_users.rb +4 -0
  3023. data/vendor/bundle/gems/sequel-5.26.0/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +4 -0
  3024. data/vendor/bundle/gems/sequel-5.26.0/spec/files/transaction_specified_migrations/002_create_basic.rb +4 -0
  3025. data/vendor/bundle/gems/sequel-5.26.0/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +3 -0
  3026. data/vendor/bundle/gems/sequel-5.26.0/spec/files/transaction_unspecified_migrations/002_create_basic.rb +3 -0
  3027. data/vendor/bundle/gems/sequel-5.26.0/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +9 -0
  3028. data/vendor/bundle/gems/sequel-5.26.0/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +9 -0
  3029. data/vendor/bundle/gems/sequel-5.26.0/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +4 -0
  3030. data/vendor/bundle/gems/sequel-5.26.0/spec/guards_helper.rb +59 -0
  3031. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/associations_test.rb +2597 -0
  3032. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/database_test.rb +113 -0
  3033. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/dataset_test.rb +1997 -0
  3034. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/eager_loader_test.rb +687 -0
  3035. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/migrator_test.rb +262 -0
  3036. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/model_test.rb +203 -0
  3037. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/plugin_test.rb +2423 -0
  3038. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/prepared_statement_test.rb +405 -0
  3039. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/schema_test.rb +903 -0
  3040. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/spec_helper.rb +65 -0
  3041. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/timezone_test.rb +86 -0
  3042. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/transaction_test.rb +603 -0
  3043. data/vendor/bundle/gems/sequel-5.26.0/spec/integration/type_test.rb +127 -0
  3044. data/vendor/bundle/gems/sequel-5.26.0/spec/model/association_reflection_spec.rb +803 -0
  3045. data/vendor/bundle/gems/sequel-5.26.0/spec/model/associations_spec.rb +4738 -0
  3046. data/vendor/bundle/gems/sequel-5.26.0/spec/model/base_spec.rb +875 -0
  3047. data/vendor/bundle/gems/sequel-5.26.0/spec/model/class_dataset_methods_spec.rb +146 -0
  3048. data/vendor/bundle/gems/sequel-5.26.0/spec/model/dataset_methods_spec.rb +198 -0
  3049. data/vendor/bundle/gems/sequel-5.26.0/spec/model/eager_loading_spec.rb +2377 -0
  3050. data/vendor/bundle/gems/sequel-5.26.0/spec/model/hooks_spec.rb +370 -0
  3051. data/vendor/bundle/gems/sequel-5.26.0/spec/model/inflector_spec.rb +26 -0
  3052. data/vendor/bundle/gems/sequel-5.26.0/spec/model/model_spec.rb +956 -0
  3053. data/vendor/bundle/gems/sequel-5.26.0/spec/model/plugins_spec.rb +429 -0
  3054. data/vendor/bundle/gems/sequel-5.26.0/spec/model/record_spec.rb +2118 -0
  3055. data/vendor/bundle/gems/sequel-5.26.0/spec/model/spec_helper.rb +46 -0
  3056. data/vendor/bundle/gems/sequel-5.26.0/spec/model/validations_spec.rb +220 -0
  3057. data/vendor/bundle/gems/sequel-5.26.0/spec/model_no_assoc_spec.rb +1 -0
  3058. data/vendor/bundle/gems/sequel-5.26.0/spec/model_spec.rb +1 -0
  3059. data/vendor/bundle/gems/sequel-5.26.0/spec/plugin_spec.rb +1 -0
  3060. data/vendor/bundle/gems/sequel-5.26.0/spec/sequel_coverage.rb +15 -0
  3061. data/vendor/bundle/gems/sequel-5.26.0/spec/sequel_warning.rb +4 -0
  3062. data/vendor/bundle/gems/sequel-5.26.0/spec/spec_config.rb +12 -0
  3063. data/vendor/bundle/gems/simplecov-0.16.1/CHANGELOG.md +481 -0
  3064. data/vendor/bundle/gems/simplecov-0.16.1/CONTRIBUTING.md +51 -0
  3065. data/vendor/bundle/gems/simplecov-0.16.1/ISSUE_TEMPLATE.md +23 -0
  3066. data/vendor/bundle/gems/simplecov-0.16.1/LICENSE +20 -0
  3067. data/vendor/bundle/gems/simplecov-0.16.1/README.md +710 -0
  3068. data/vendor/bundle/gems/simplecov-0.16.1/doc/alternate-formatters.md +51 -0
  3069. data/vendor/bundle/gems/simplecov-0.16.1/doc/commercial-services.md +20 -0
  3070. data/vendor/bundle/gems/simplecov-0.16.1/doc/editor-integration.md +18 -0
  3071. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov.rb +281 -0
  3072. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/command_guesser.rb +61 -0
  3073. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/configuration.rb +305 -0
  3074. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/defaults.rb +50 -0
  3075. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/exit_codes.rb +10 -0
  3076. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/file_list.rb +61 -0
  3077. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/filter.rb +91 -0
  3078. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/formatter.rb +10 -0
  3079. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/formatter/multi_formatter.rb +34 -0
  3080. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/formatter/simple_formatter.rb +25 -0
  3081. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/jruby_fix.rb +44 -0
  3082. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/last_run.rb +26 -0
  3083. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/lines_classifier.rb +48 -0
  3084. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/load_global_config.rb +8 -0
  3085. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/no_defaults.rb +4 -0
  3086. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/profiles.rb +33 -0
  3087. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/profiles/bundler_filter.rb +5 -0
  3088. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/profiles/rails.rb +18 -0
  3089. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/profiles/root_filter.rb +10 -0
  3090. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/profiles/test_frameworks.rb +8 -0
  3091. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/railtie.rb +9 -0
  3092. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/railties/tasks.rake +13 -0
  3093. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/raw_coverage.rb +41 -0
  3094. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/result.rb +88 -0
  3095. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/result_merger.rb +123 -0
  3096. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/source_file.rb +203 -0
  3097. data/vendor/bundle/gems/simplecov-0.16.1/lib/simplecov/version.rb +5 -0
  3098. data/vendor/bundle/gems/simplecov-html-0.10.2/CHANGELOG.md +13 -0
  3099. data/vendor/bundle/gems/simplecov-html-0.10.2/Gemfile +34 -0
  3100. data/vendor/bundle/gems/simplecov-html-0.10.2/Guardfile +12 -0
  3101. data/vendor/bundle/gems/simplecov-html-0.10.2/LICENSE +20 -0
  3102. data/vendor/bundle/gems/simplecov-html-0.10.2/README.md +30 -0
  3103. data/vendor/bundle/gems/simplecov-html-0.10.2/Rakefile +41 -0
  3104. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/application.js +127 -0
  3105. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/libraries/jquery-1.6.2.min.js +18 -0
  3106. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/plugins/highlight.pack.js +1 -0
  3107. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/plugins/jquery.colorbox.js +1090 -0
  3108. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/plugins/jquery.dataTables.min.js +152 -0
  3109. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/plugins/jquery.timeago.js +141 -0
  3110. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/javascripts/plugins/jquery.url.js +174 -0
  3111. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/stylesheets/application.css +3 -0
  3112. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/stylesheets/plugins/highlight.css +129 -0
  3113. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/stylesheets/plugins/jquery-ui-1.8.4.custom.css +295 -0
  3114. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/stylesheets/plugins/jquery.colorbox.css +52 -0
  3115. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/stylesheets/reset.css +103 -0
  3116. data/vendor/bundle/gems/simplecov-html-0.10.2/assets/stylesheets/screen.css.sass +220 -0
  3117. data/vendor/bundle/gems/simplecov-html-0.10.2/lib/simplecov-html.rb +110 -0
  3118. data/vendor/bundle/gems/simplecov-html-0.10.2/lib/simplecov-html/version.rb +7 -0
  3119. data/vendor/bundle/gems/simplecov-html-0.10.2/public/application.css +799 -0
  3120. data/vendor/bundle/gems/simplecov-html-0.10.2/public/application.js +1707 -0
  3121. data/vendor/bundle/gems/simplecov-html-0.10.2/public/colorbox/border.png +0 -0
  3122. data/vendor/bundle/gems/simplecov-html-0.10.2/public/colorbox/controls.png +0 -0
  3123. data/vendor/bundle/gems/simplecov-html-0.10.2/public/colorbox/loading.gif +0 -0
  3124. data/vendor/bundle/gems/simplecov-html-0.10.2/public/colorbox/loading_background.png +0 -0
  3125. data/vendor/bundle/gems/simplecov-html-0.10.2/public/favicon_green.png +0 -0
  3126. data/vendor/bundle/gems/simplecov-html-0.10.2/public/favicon_red.png +0 -0
  3127. data/vendor/bundle/gems/simplecov-html-0.10.2/public/favicon_yellow.png +0 -0
  3128. data/vendor/bundle/gems/simplecov-html-0.10.2/public/loading.gif +0 -0
  3129. data/vendor/bundle/gems/simplecov-html-0.10.2/public/magnify.png +0 -0
  3130. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  3131. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  3132. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  3133. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  3134. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  3135. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  3136. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  3137. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  3138. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-icons_222222_256x240.png +0 -0
  3139. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  3140. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-icons_454545_256x240.png +0 -0
  3141. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-icons_888888_256x240.png +0 -0
  3142. data/vendor/bundle/gems/simplecov-html-0.10.2/public/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  3143. data/vendor/bundle/gems/simplecov-html-0.10.2/simplecov-html.gemspec +22 -0
  3144. data/vendor/bundle/gems/simplecov-html-0.10.2/test/helper.rb +4 -0
  3145. data/vendor/bundle/gems/simplecov-html-0.10.2/test/test_simple_cov-html.rb +8 -0
  3146. data/vendor/bundle/gems/simplecov-html-0.10.2/views/file_list.erb +45 -0
  3147. data/vendor/bundle/gems/simplecov-html-0.10.2/views/layout.erb +41 -0
  3148. data/vendor/bundle/gems/simplecov-html-0.10.2/views/source_file.erb +23 -0
  3149. data/vendor/bundle/gems/sqlite3-1.4.1/API_CHANGES.rdoc +50 -0
  3150. data/vendor/bundle/gems/sqlite3-1.4.1/CHANGELOG.rdoc +306 -0
  3151. data/vendor/bundle/gems/sqlite3-1.4.1/ChangeLog.cvs +88 -0
  3152. data/vendor/bundle/gems/sqlite3-1.4.1/Gemfile +17 -0
  3153. data/vendor/bundle/gems/sqlite3-1.4.1/LICENSE +27 -0
  3154. data/vendor/bundle/gems/sqlite3-1.4.1/Manifest.txt +60 -0
  3155. data/vendor/bundle/gems/sqlite3-1.4.1/README.rdoc +118 -0
  3156. data/vendor/bundle/gems/sqlite3-1.4.1/Rakefile +8 -0
  3157. data/vendor/bundle/gems/sqlite3-1.4.1/appveyor.yml +36 -0
  3158. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/Makefile +266 -0
  3159. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/aggregator.c +273 -0
  3160. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/aggregator.h +12 -0
  3161. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/aggregator.o +0 -0
  3162. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/backup.c +168 -0
  3163. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/backup.h +15 -0
  3164. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/backup.o +0 -0
  3165. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/database.c +823 -0
  3166. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/database.h +17 -0
  3167. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/database.o +0 -0
  3168. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/exception.c +98 -0
  3169. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/exception.h +8 -0
  3170. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/exception.o +0 -0
  3171. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/extconf.rb +96 -0
  3172. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/sqlite3.c +161 -0
  3173. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/sqlite3.o +0 -0
  3174. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/sqlite3_native.so +0 -0
  3175. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/sqlite3_ruby.h +45 -0
  3176. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/statement.c +442 -0
  3177. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/statement.h +16 -0
  3178. data/vendor/bundle/gems/sqlite3-1.4.1/ext/sqlite3/statement.o +0 -0
  3179. data/vendor/bundle/gems/sqlite3-1.4.1/faq/faq.rb +145 -0
  3180. data/vendor/bundle/gems/sqlite3-1.4.1/faq/faq.yml +426 -0
  3181. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3.rb +15 -0
  3182. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/constants.rb +50 -0
  3183. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/database.rb +736 -0
  3184. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/errors.rb +35 -0
  3185. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/pragmas.rb +588 -0
  3186. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/resultset.rb +187 -0
  3187. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/sqlite3_native.so +0 -0
  3188. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/statement.rb +144 -0
  3189. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/translator.rb +118 -0
  3190. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/value.rb +57 -0
  3191. data/vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/version.rb +25 -0
  3192. data/vendor/bundle/gems/sqlite3-1.4.1/rakelib/faq.rake +9 -0
  3193. data/vendor/bundle/gems/sqlite3-1.4.1/rakelib/gem.rake +40 -0
  3194. data/vendor/bundle/gems/sqlite3-1.4.1/rakelib/native.rake +56 -0
  3195. data/vendor/bundle/gems/sqlite3-1.4.1/rakelib/vendor_sqlite3.rake +97 -0
  3196. data/vendor/bundle/gems/sqlite3-1.4.1/setup.rb +1333 -0
  3197. data/vendor/bundle/gems/sqlite3-1.4.1/test/helper.rb +18 -0
  3198. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_backup.rb +33 -0
  3199. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_collation.rb +82 -0
  3200. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_database.rb +503 -0
  3201. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_database_flags.rb +95 -0
  3202. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_database_readonly.rb +36 -0
  3203. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_database_readwrite.rb +41 -0
  3204. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_deprecated.rb +44 -0
  3205. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_encoding.rb +155 -0
  3206. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_integration.rb +507 -0
  3207. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_integration_aggregate.rb +336 -0
  3208. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_integration_open_close.rb +30 -0
  3209. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_integration_pending.rb +115 -0
  3210. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_integration_resultset.rb +159 -0
  3211. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_integration_statement.rb +194 -0
  3212. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_result_set.rb +37 -0
  3213. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_sqlite3.rb +21 -0
  3214. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_statement.rb +268 -0
  3215. data/vendor/bundle/gems/sqlite3-1.4.1/test/test_statement_execute.rb +35 -0
  3216. data/vendor/bundle/gems/term-ansicolor-1.7.1/CHANGES +69 -0
  3217. data/vendor/bundle/gems/term-ansicolor-1.7.1/COPYING +202 -0
  3218. data/vendor/bundle/gems/term-ansicolor-1.7.1/Gemfile +5 -0
  3219. data/vendor/bundle/gems/term-ansicolor-1.7.1/README.md +42 -0
  3220. data/vendor/bundle/gems/term-ansicolor-1.7.1/Rakefile +28 -0
  3221. data/vendor/bundle/gems/term-ansicolor-1.7.1/VERSION +1 -0
  3222. data/vendor/bundle/gems/term-ansicolor-1.7.1/bin/term_cdiff +19 -0
  3223. data/vendor/bundle/gems/term-ansicolor-1.7.1/bin/term_colortab +49 -0
  3224. data/vendor/bundle/gems/term-ansicolor-1.7.1/bin/term_decolor +12 -0
  3225. data/vendor/bundle/gems/term-ansicolor-1.7.1/bin/term_display +91 -0
  3226. data/vendor/bundle/gems/term-ansicolor-1.7.1/bin/term_mandel +52 -0
  3227. data/vendor/bundle/gems/term-ansicolor-1.7.1/bin/term_snow +72 -0
  3228. data/vendor/bundle/gems/term-ansicolor-1.7.1/examples/example.rb +90 -0
  3229. data/vendor/bundle/gems/term-ansicolor-1.7.1/examples/lambda-red-plain.ppm +135 -0
  3230. data/vendor/bundle/gems/term-ansicolor-1.7.1/examples/lambda-red.png +0 -0
  3231. data/vendor/bundle/gems/term-ansicolor-1.7.1/examples/lambda-red.ppm +4 -0
  3232. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor.rb +127 -0
  3233. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/attribute.rb +142 -0
  3234. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/attribute/color256.rb +69 -0
  3235. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/attribute/color8.rb +25 -0
  3236. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/attribute/intense_color8.rb +43 -0
  3237. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/attribute/text.rb +23 -0
  3238. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/hsl_triple.rb +169 -0
  3239. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/movement.rb +108 -0
  3240. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/ppm_reader.rb +96 -0
  3241. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/rgb_color_metrics.rb +161 -0
  3242. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/rgb_triple.rb +179 -0
  3243. data/vendor/bundle/gems/term-ansicolor-1.7.1/lib/term/ansicolor/version.rb +8 -0
  3244. data/vendor/bundle/gems/term-ansicolor-1.7.1/term-ansicolor.gemspec +45 -0
  3245. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/ansicolor_test.rb +160 -0
  3246. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/attribute_test.rb +73 -0
  3247. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/hsl_triple_test.rb +85 -0
  3248. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/ppm_reader_test.rb +46 -0
  3249. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/rgb_color_metrics_test.rb +100 -0
  3250. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/rgb_triple_test.rb +101 -0
  3251. data/vendor/bundle/gems/term-ansicolor-1.7.1/tests/test_helper.rb +8 -0
  3252. data/vendor/bundle/gems/test-unit-3.3.4/COPYING +67 -0
  3253. data/vendor/bundle/gems/test-unit-3.3.4/GPL +339 -0
  3254. data/vendor/bundle/gems/test-unit-3.3.4/LGPL +502 -0
  3255. data/vendor/bundle/gems/test-unit-3.3.4/PSFL +271 -0
  3256. data/vendor/bundle/gems/test-unit-3.3.4/README.md +101 -0
  3257. data/vendor/bundle/gems/test-unit-3.3.4/Rakefile +80 -0
  3258. data/vendor/bundle/gems/test-unit-3.3.4/doc/text/getting-started.md +246 -0
  3259. data/vendor/bundle/gems/test-unit-3.3.4/doc/text/how-to.md +90 -0
  3260. data/vendor/bundle/gems/test-unit-3.3.4/doc/text/news.md +1453 -0
  3261. data/vendor/bundle/gems/test-unit-3.3.4/lib/test-unit.rb +34 -0
  3262. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit.rb +514 -0
  3263. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/assertion-failed-error.rb +25 -0
  3264. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/assertions.rb +2256 -0
  3265. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/attribute-matcher.rb +26 -0
  3266. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/attribute.rb +227 -0
  3267. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/auto-runner-loader.rb +17 -0
  3268. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/autorunner.rb +537 -0
  3269. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/code-snippet-fetcher.rb +56 -0
  3270. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/collector.rb +73 -0
  3271. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/collector/descendant.rb +19 -0
  3272. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/collector/dir.rb +108 -0
  3273. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/collector/load.rb +197 -0
  3274. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/collector/objectspace.rb +34 -0
  3275. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/collector/xml.rb +249 -0
  3276. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/color-scheme.rb +198 -0
  3277. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/color.rb +134 -0
  3278. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/data-sets.rb +116 -0
  3279. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/data.rb +371 -0
  3280. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/diff.rb +746 -0
  3281. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/error.rb +158 -0
  3282. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/exception-handler.rb +82 -0
  3283. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/failure.rb +169 -0
  3284. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/fault-location-detector.rb +100 -0
  3285. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/fixture.rb +298 -0
  3286. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/notification.rb +138 -0
  3287. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/omission.rb +198 -0
  3288. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/pending.rb +155 -0
  3289. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/priority.rb +196 -0
  3290. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/runner/console.rb +84 -0
  3291. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/runner/emacs.rb +8 -0
  3292. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/runner/xml.rb +15 -0
  3293. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/test-suite-creator.rb +103 -0
  3294. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/testcase.rb +899 -0
  3295. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/testresult.rb +132 -0
  3296. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/testsuite.rb +175 -0
  3297. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/console/outputlevel.rb +15 -0
  3298. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/console/testrunner.rb +750 -0
  3299. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  3300. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/testrunner.rb +53 -0
  3301. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/testrunnermediator.rb +114 -0
  3302. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  3303. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/ui/xml/testrunner.rb +224 -0
  3304. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/util/backtracefilter.rb +59 -0
  3305. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/util/method-owner-finder.rb +28 -0
  3306. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/util/observable.rb +90 -0
  3307. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/util/output.rb +32 -0
  3308. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/util/procwrapper.rb +48 -0
  3309. data/vendor/bundle/gems/test-unit-3.3.4/lib/test/unit/version.rb +5 -0
  3310. data/vendor/bundle/gems/test-unit-3.3.4/sample/adder.rb +13 -0
  3311. data/vendor/bundle/gems/test-unit-3.3.4/sample/subtracter.rb +12 -0
  3312. data/vendor/bundle/gems/test-unit-3.3.4/sample/test_adder.rb +20 -0
  3313. data/vendor/bundle/gems/test-unit-3.3.4/sample/test_subtracter.rb +20 -0
  3314. data/vendor/bundle/gems/test-unit-3.3.4/sample/test_user.rb +23 -0
  3315. data/vendor/bundle/gems/test-unit-3.3.4/test/collector/test-descendant.rb +182 -0
  3316. data/vendor/bundle/gems/test-unit-3.3.4/test/collector/test-load.rb +475 -0
  3317. data/vendor/bundle/gems/test-unit-3.3.4/test/collector/test_dir.rb +407 -0
  3318. data/vendor/bundle/gems/test-unit-3.3.4/test/collector/test_objectspace.rb +102 -0
  3319. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/header-label.csv +3 -0
  3320. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/header-label.tsv +3 -0
  3321. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/header.csv +3 -0
  3322. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/header.tsv +3 -0
  3323. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/no-header.csv +2 -0
  3324. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/no-header.tsv +2 -0
  3325. data/vendor/bundle/gems/test-unit-3.3.4/test/fixtures/plus.csv +3 -0
  3326. data/vendor/bundle/gems/test-unit-3.3.4/test/run-test.rb +22 -0
  3327. data/vendor/bundle/gems/test-unit-3.3.4/test/test-assertions.rb +2187 -0
  3328. data/vendor/bundle/gems/test-unit-3.3.4/test/test-attribute-matcher.rb +38 -0
  3329. data/vendor/bundle/gems/test-unit-3.3.4/test/test-attribute.rb +123 -0
  3330. data/vendor/bundle/gems/test-unit-3.3.4/test/test-code-snippet.rb +79 -0
  3331. data/vendor/bundle/gems/test-unit-3.3.4/test/test-color-scheme.rb +82 -0
  3332. data/vendor/bundle/gems/test-unit-3.3.4/test/test-color.rb +47 -0
  3333. data/vendor/bundle/gems/test-unit-3.3.4/test/test-data.rb +419 -0
  3334. data/vendor/bundle/gems/test-unit-3.3.4/test/test-diff.rb +518 -0
  3335. data/vendor/bundle/gems/test-unit-3.3.4/test/test-emacs-runner.rb +60 -0
  3336. data/vendor/bundle/gems/test-unit-3.3.4/test/test-error.rb +26 -0
  3337. data/vendor/bundle/gems/test-unit-3.3.4/test/test-failure.rb +33 -0
  3338. data/vendor/bundle/gems/test-unit-3.3.4/test/test-fault-location-detector.rb +163 -0
  3339. data/vendor/bundle/gems/test-unit-3.3.4/test/test-fixture.rb +713 -0
  3340. data/vendor/bundle/gems/test-unit-3.3.4/test/test-notification.rb +33 -0
  3341. data/vendor/bundle/gems/test-unit-3.3.4/test/test-omission.rb +81 -0
  3342. data/vendor/bundle/gems/test-unit-3.3.4/test/test-pending.rb +70 -0
  3343. data/vendor/bundle/gems/test-unit-3.3.4/test/test-priority.rb +184 -0
  3344. data/vendor/bundle/gems/test-unit-3.3.4/test/test-test-case.rb +1279 -0
  3345. data/vendor/bundle/gems/test-unit-3.3.4/test/test-test-result.rb +113 -0
  3346. data/vendor/bundle/gems/test-unit-3.3.4/test/test-test-suite-creator.rb +97 -0
  3347. data/vendor/bundle/gems/test-unit-3.3.4/test/test-test-suite.rb +151 -0
  3348. data/vendor/bundle/gems/test-unit-3.3.4/test/testunit-test-util.rb +33 -0
  3349. data/vendor/bundle/gems/test-unit-3.3.4/test/ui/test_testrunmediator.rb +20 -0
  3350. data/vendor/bundle/gems/test-unit-3.3.4/test/util/test-method-owner-finder.rb +38 -0
  3351. data/vendor/bundle/gems/test-unit-3.3.4/test/util/test-output.rb +11 -0
  3352. data/vendor/bundle/gems/test-unit-3.3.4/test/util/test_backtracefilter.rb +52 -0
  3353. data/vendor/bundle/gems/test-unit-3.3.4/test/util/test_observable.rb +102 -0
  3354. data/vendor/bundle/gems/test-unit-3.3.4/test/util/test_procwrapper.rb +36 -0
  3355. data/vendor/bundle/gems/thor-0.20.3/CHANGELOG.md +204 -0
  3356. data/vendor/bundle/gems/thor-0.20.3/CONTRIBUTING.md +15 -0
  3357. data/vendor/bundle/gems/thor-0.20.3/LICENSE.md +20 -0
  3358. data/vendor/bundle/gems/thor-0.20.3/README.md +51 -0
  3359. data/vendor/bundle/gems/thor-0.20.3/bin/thor +6 -0
  3360. data/vendor/bundle/gems/thor-0.20.3/lib/thor.rb +509 -0
  3361. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions.rb +331 -0
  3362. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions/create_file.rb +104 -0
  3363. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions/create_link.rb +60 -0
  3364. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions/directory.rb +118 -0
  3365. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions/empty_directory.rb +143 -0
  3366. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions/file_manipulation.rb +373 -0
  3367. data/vendor/bundle/gems/thor-0.20.3/lib/thor/actions/inject_into_file.rb +109 -0
  3368. data/vendor/bundle/gems/thor-0.20.3/lib/thor/base.rb +678 -0
  3369. data/vendor/bundle/gems/thor-0.20.3/lib/thor/command.rb +135 -0
  3370. data/vendor/bundle/gems/thor-0.20.3/lib/thor/core_ext/hash_with_indifferent_access.rb +97 -0
  3371. data/vendor/bundle/gems/thor-0.20.3/lib/thor/core_ext/io_binary_read.rb +12 -0
  3372. data/vendor/bundle/gems/thor-0.20.3/lib/thor/core_ext/ordered_hash.rb +129 -0
  3373. data/vendor/bundle/gems/thor-0.20.3/lib/thor/error.rb +114 -0
  3374. data/vendor/bundle/gems/thor-0.20.3/lib/thor/group.rb +281 -0
  3375. data/vendor/bundle/gems/thor-0.20.3/lib/thor/invocation.rb +177 -0
  3376. data/vendor/bundle/gems/thor-0.20.3/lib/thor/line_editor.rb +17 -0
  3377. data/vendor/bundle/gems/thor-0.20.3/lib/thor/line_editor/basic.rb +37 -0
  3378. data/vendor/bundle/gems/thor-0.20.3/lib/thor/line_editor/readline.rb +88 -0
  3379. data/vendor/bundle/gems/thor-0.20.3/lib/thor/parser.rb +4 -0
  3380. data/vendor/bundle/gems/thor-0.20.3/lib/thor/parser/argument.rb +70 -0
  3381. data/vendor/bundle/gems/thor-0.20.3/lib/thor/parser/arguments.rb +175 -0
  3382. data/vendor/bundle/gems/thor-0.20.3/lib/thor/parser/option.rb +146 -0
  3383. data/vendor/bundle/gems/thor-0.20.3/lib/thor/parser/options.rb +226 -0
  3384. data/vendor/bundle/gems/thor-0.20.3/lib/thor/rake_compat.rb +71 -0
  3385. data/vendor/bundle/gems/thor-0.20.3/lib/thor/runner.rb +324 -0
  3386. data/vendor/bundle/gems/thor-0.20.3/lib/thor/shell.rb +81 -0
  3387. data/vendor/bundle/gems/thor-0.20.3/lib/thor/shell/basic.rb +482 -0
  3388. data/vendor/bundle/gems/thor-0.20.3/lib/thor/shell/color.rb +149 -0
  3389. data/vendor/bundle/gems/thor-0.20.3/lib/thor/shell/html.rb +126 -0
  3390. data/vendor/bundle/gems/thor-0.20.3/lib/thor/util.rb +268 -0
  3391. data/vendor/bundle/gems/thor-0.20.3/lib/thor/version.rb +3 -0
  3392. data/vendor/bundle/gems/thor-0.20.3/thor.gemspec +21 -0
  3393. data/vendor/bundle/gems/tins-1.22.2/COPYING +18 -0
  3394. data/vendor/bundle/gems/tins-1.22.2/Gemfile +10 -0
  3395. data/vendor/bundle/gems/tins-1.22.2/README.md +107 -0
  3396. data/vendor/bundle/gems/tins-1.22.2/Rakefile +23 -0
  3397. data/vendor/bundle/gems/tins-1.22.2/TODO +3 -0
  3398. data/vendor/bundle/gems/tins-1.22.2/VERSION +1 -0
  3399. data/vendor/bundle/gems/tins-1.22.2/examples/add_one.png +0 -0
  3400. data/vendor/bundle/gems/tins-1.22.2/examples/add_one.stm +13 -0
  3401. data/vendor/bundle/gems/tins-1.22.2/examples/bb3.png +0 -0
  3402. data/vendor/bundle/gems/tins-1.22.2/examples/bb3.stm +26 -0
  3403. data/vendor/bundle/gems/tins-1.22.2/examples/concatenate_compare.mtm +31 -0
  3404. data/vendor/bundle/gems/tins-1.22.2/examples/concatenate_compare.png +0 -0
  3405. data/vendor/bundle/gems/tins-1.22.2/examples/length_difference.mtm +17 -0
  3406. data/vendor/bundle/gems/tins-1.22.2/examples/length_difference.png +0 -0
  3407. data/vendor/bundle/gems/tins-1.22.2/examples/let.rb +62 -0
  3408. data/vendor/bundle/gems/tins-1.22.2/examples/mail.rb +73 -0
  3409. data/vendor/bundle/gems/tins-1.22.2/examples/minsky.rb +145 -0
  3410. data/vendor/bundle/gems/tins-1.22.2/examples/multiply.reg +42 -0
  3411. data/vendor/bundle/gems/tins-1.22.2/examples/null_pattern.rb +52 -0
  3412. data/vendor/bundle/gems/tins-1.22.2/examples/ones_difference-mtm.png +0 -0
  3413. data/vendor/bundle/gems/tins-1.22.2/examples/ones_difference-stm.png +0 -0
  3414. data/vendor/bundle/gems/tins-1.22.2/examples/ones_difference.mtm +12 -0
  3415. data/vendor/bundle/gems/tins-1.22.2/examples/ones_difference.stm +25 -0
  3416. data/vendor/bundle/gems/tins-1.22.2/examples/prefix-equals-suffix-reversed-with-infix.png +0 -0
  3417. data/vendor/bundle/gems/tins-1.22.2/examples/prefix-equals-suffix-reversed-with-infix.stm +38 -0
  3418. data/vendor/bundle/gems/tins-1.22.2/examples/recipe.rb +81 -0
  3419. data/vendor/bundle/gems/tins-1.22.2/examples/recipe2.rb +82 -0
  3420. data/vendor/bundle/gems/tins-1.22.2/examples/recipe_common.rb +65 -0
  3421. data/vendor/bundle/gems/tins-1.22.2/examples/subtract.reg +9 -0
  3422. data/vendor/bundle/gems/tins-1.22.2/examples/turing-graph.rb +17 -0
  3423. data/vendor/bundle/gems/tins-1.22.2/examples/turing.rb +310 -0
  3424. data/vendor/bundle/gems/tins-1.22.2/lib/dslkit.rb +2 -0
  3425. data/vendor/bundle/gems/tins-1.22.2/lib/dslkit/polite.rb +1 -0
  3426. data/vendor/bundle/gems/tins-1.22.2/lib/dslkit/rude.rb +1 -0
  3427. data/vendor/bundle/gems/tins-1.22.2/lib/spruz.rb +2 -0
  3428. data/vendor/bundle/gems/tins-1.22.2/lib/tins.rb +61 -0
  3429. data/vendor/bundle/gems/tins-1.22.2/lib/tins/alias.rb +1 -0
  3430. data/vendor/bundle/gems/tins-1.22.2/lib/tins/annotate.rb +38 -0
  3431. data/vendor/bundle/gems/tins-1.22.2/lib/tins/ask_and_send.rb +31 -0
  3432. data/vendor/bundle/gems/tins-1.22.2/lib/tins/attempt.rb +99 -0
  3433. data/vendor/bundle/gems/tins-1.22.2/lib/tins/bijection.rb +46 -0
  3434. data/vendor/bundle/gems/tins-1.22.2/lib/tins/case_predicate.rb +7 -0
  3435. data/vendor/bundle/gems/tins-1.22.2/lib/tins/complete.rb +18 -0
  3436. data/vendor/bundle/gems/tins-1.22.2/lib/tins/concern.rb +30 -0
  3437. data/vendor/bundle/gems/tins-1.22.2/lib/tins/count_by.rb +8 -0
  3438. data/vendor/bundle/gems/tins-1.22.2/lib/tins/date_dummy.rb +53 -0
  3439. data/vendor/bundle/gems/tins-1.22.2/lib/tins/date_time_dummy.rb +51 -0
  3440. data/vendor/bundle/gems/tins-1.22.2/lib/tins/deep_const_get.rb +42 -0
  3441. data/vendor/bundle/gems/tins-1.22.2/lib/tins/deep_dup.rb +11 -0
  3442. data/vendor/bundle/gems/tins-1.22.2/lib/tins/dslkit.rb +636 -0
  3443. data/vendor/bundle/gems/tins-1.22.2/lib/tins/duration.rb +95 -0
  3444. data/vendor/bundle/gems/tins-1.22.2/lib/tins/expose.rb +27 -0
  3445. data/vendor/bundle/gems/tins-1.22.2/lib/tins/extract_last_argument_options.rb +14 -0
  3446. data/vendor/bundle/gems/tins-1.22.2/lib/tins/file_binary.rb +83 -0
  3447. data/vendor/bundle/gems/tins-1.22.2/lib/tins/find.rb +149 -0
  3448. data/vendor/bundle/gems/tins-1.22.2/lib/tins/generator.rb +68 -0
  3449. data/vendor/bundle/gems/tins-1.22.2/lib/tins/go.rb +96 -0
  3450. data/vendor/bundle/gems/tins-1.22.2/lib/tins/hash_symbolize_keys_recursive.rb +48 -0
  3451. data/vendor/bundle/gems/tins-1.22.2/lib/tins/hash_union.rb +15 -0
  3452. data/vendor/bundle/gems/tins-1.22.2/lib/tins/if_predicate.rb +7 -0
  3453. data/vendor/bundle/gems/tins-1.22.2/lib/tins/implement.rb +40 -0
  3454. data/vendor/bundle/gems/tins-1.22.2/lib/tins/limited.rb +38 -0
  3455. data/vendor/bundle/gems/tins-1.22.2/lib/tins/lines_file.rb +123 -0
  3456. data/vendor/bundle/gems/tins-1.22.2/lib/tins/memoize.rb +91 -0
  3457. data/vendor/bundle/gems/tins-1.22.2/lib/tins/method_description.rb +143 -0
  3458. data/vendor/bundle/gems/tins-1.22.2/lib/tins/minimize.rb +55 -0
  3459. data/vendor/bundle/gems/tins-1.22.2/lib/tins/module_group.rb +13 -0
  3460. data/vendor/bundle/gems/tins-1.22.2/lib/tins/named_set.rb +12 -0
  3461. data/vendor/bundle/gems/tins-1.22.2/lib/tins/null.rb +101 -0
  3462. data/vendor/bundle/gems/tins-1.22.2/lib/tins/once.rb +25 -0
  3463. data/vendor/bundle/gems/tins-1.22.2/lib/tins/p.rb +23 -0
  3464. data/vendor/bundle/gems/tins-1.22.2/lib/tins/partial_application.rb +31 -0
  3465. data/vendor/bundle/gems/tins-1.22.2/lib/tins/proc_compose.rb +15 -0
  3466. data/vendor/bundle/gems/tins-1.22.2/lib/tins/proc_prelude.rb +73 -0
  3467. data/vendor/bundle/gems/tins-1.22.2/lib/tins/range_plus.rb +9 -0
  3468. data/vendor/bundle/gems/tins-1.22.2/lib/tins/require_maybe.rb +9 -0
  3469. data/vendor/bundle/gems/tins-1.22.2/lib/tins/responding.rb +19 -0
  3470. data/vendor/bundle/gems/tins-1.22.2/lib/tins/secure_write.rb +27 -0
  3471. data/vendor/bundle/gems/tins-1.22.2/lib/tins/sexy_singleton.rb +39 -0
  3472. data/vendor/bundle/gems/tins-1.22.2/lib/tins/string_byte_order_mark.rb +20 -0
  3473. data/vendor/bundle/gems/tins-1.22.2/lib/tins/string_camelize.rb +16 -0
  3474. data/vendor/bundle/gems/tins-1.22.2/lib/tins/string_underscore.rb +15 -0
  3475. data/vendor/bundle/gems/tins-1.22.2/lib/tins/string_version.rb +104 -0
  3476. data/vendor/bundle/gems/tins-1.22.2/lib/tins/subhash.rb +42 -0
  3477. data/vendor/bundle/gems/tins-1.22.2/lib/tins/temp_io.rb +26 -0
  3478. data/vendor/bundle/gems/tins-1.22.2/lib/tins/temp_io_enum.rb +26 -0
  3479. data/vendor/bundle/gems/tins-1.22.2/lib/tins/terminal.rb +42 -0
  3480. data/vendor/bundle/gems/tins-1.22.2/lib/tins/thread_local.rb +57 -0
  3481. data/vendor/bundle/gems/tins-1.22.2/lib/tins/time_dummy.rb +57 -0
  3482. data/vendor/bundle/gems/tins-1.22.2/lib/tins/to.rb +8 -0
  3483. data/vendor/bundle/gems/tins-1.22.2/lib/tins/to_proc.rb +12 -0
  3484. data/vendor/bundle/gems/tins-1.22.2/lib/tins/token.rb +36 -0
  3485. data/vendor/bundle/gems/tins-1.22.2/lib/tins/uniq_by.rb +10 -0
  3486. data/vendor/bundle/gems/tins-1.22.2/lib/tins/unit.rb +179 -0
  3487. data/vendor/bundle/gems/tins-1.22.2/lib/tins/version.rb +8 -0
  3488. data/vendor/bundle/gems/tins-1.22.2/lib/tins/write.rb +19 -0
  3489. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt.rb +45 -0
  3490. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/annotate.rb +5 -0
  3491. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/ask_and_send.rb +7 -0
  3492. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/attempt.rb +7 -0
  3493. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/blank.rb +67 -0
  3494. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/case_predicate.rb +8 -0
  3495. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/complete.rb +7 -0
  3496. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/concern.rb +20 -0
  3497. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/count_by.rb +11 -0
  3498. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/date_dummy.rb +7 -0
  3499. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/date_time_dummy.rb +7 -0
  3500. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/deep_const_get.rb +7 -0
  3501. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/deep_dup.rb +7 -0
  3502. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/dslkit.rb +22 -0
  3503. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/expose.rb +5 -0
  3504. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/extract_last_argument_options.rb +7 -0
  3505. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/file_binary.rb +7 -0
  3506. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/full.rb +39 -0
  3507. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/hash_symbolize_keys_recursive.rb +7 -0
  3508. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/hash_union.rb +11 -0
  3509. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/if_predicate.rb +7 -0
  3510. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/implement.rb +5 -0
  3511. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/irb.rb +23 -0
  3512. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/method_description.rb +23 -0
  3513. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/named.rb +23 -0
  3514. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/null.rb +9 -0
  3515. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/p.rb +7 -0
  3516. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/partial_application.rb +11 -0
  3517. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/proc_compose.rb +7 -0
  3518. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/proc_prelude.rb +7 -0
  3519. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/range_plus.rb +12 -0
  3520. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/require_maybe.rb +7 -0
  3521. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/responding.rb +7 -0
  3522. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/secure_write.rb +11 -0
  3523. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/sexy_singleton.rb +3 -0
  3524. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/string.rb +6 -0
  3525. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/string_byte_order_mark.rb +7 -0
  3526. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/string_camelize.rb +6 -0
  3527. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/string_underscore.rb +6 -0
  3528. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/string_version.rb +7 -0
  3529. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/subhash.rb +11 -0
  3530. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/temp_io.rb +5 -0
  3531. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/time_dummy.rb +7 -0
  3532. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/time_freezer.rb +15 -0
  3533. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/to.rb +5 -0
  3534. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/uniq_by.rb +15 -0
  3535. data/vendor/bundle/gems/tins-1.22.2/lib/tins/xt/write.rb +11 -0
  3536. data/vendor/bundle/gems/tins-1.22.2/tests/annotate_test.rb +68 -0
  3537. data/vendor/bundle/gems/tins-1.22.2/tests/ask_and_send_test.rb +46 -0
  3538. data/vendor/bundle/gems/tins-1.22.2/tests/attempt_test.rb +109 -0
  3539. data/vendor/bundle/gems/tins-1.22.2/tests/bijection_test.rb +19 -0
  3540. data/vendor/bundle/gems/tins-1.22.2/tests/blank_full_test.rb +77 -0
  3541. data/vendor/bundle/gems/tins-1.22.2/tests/case_predicate_test.rb +29 -0
  3542. data/vendor/bundle/gems/tins-1.22.2/tests/concern_test.rb +35 -0
  3543. data/vendor/bundle/gems/tins-1.22.2/tests/count_by_test.rb +17 -0
  3544. data/vendor/bundle/gems/tins-1.22.2/tests/date_dummy_test.rb +31 -0
  3545. data/vendor/bundle/gems/tins-1.22.2/tests/date_time_dummy_test.rb +31 -0
  3546. data/vendor/bundle/gems/tins-1.22.2/tests/deep_const_get_test.rb +37 -0
  3547. data/vendor/bundle/gems/tins-1.22.2/tests/deep_dup_test.rb +20 -0
  3548. data/vendor/bundle/gems/tins-1.22.2/tests/delegate_test.rb +49 -0
  3549. data/vendor/bundle/gems/tins-1.22.2/tests/dslkit_test.rb +314 -0
  3550. data/vendor/bundle/gems/tins-1.22.2/tests/duration_test.rb +81 -0
  3551. data/vendor/bundle/gems/tins-1.22.2/tests/dynamic_scope_test.rb +31 -0
  3552. data/vendor/bundle/gems/tins-1.22.2/tests/expose_test.rb +43 -0
  3553. data/vendor/bundle/gems/tins-1.22.2/tests/extract_last_argument_options_test.rb +30 -0
  3554. data/vendor/bundle/gems/tins-1.22.2/tests/file_binary_test.rb +65 -0
  3555. data/vendor/bundle/gems/tins-1.22.2/tests/find_test.rb +135 -0
  3556. data/vendor/bundle/gems/tins-1.22.2/tests/from_module_test.rb +61 -0
  3557. data/vendor/bundle/gems/tins-1.22.2/tests/generator_test.rb +47 -0
  3558. data/vendor/bundle/gems/tins-1.22.2/tests/go_test.rb +80 -0
  3559. data/vendor/bundle/gems/tins-1.22.2/tests/hash_symbolize_keys_recursive_test.rb +64 -0
  3560. data/vendor/bundle/gems/tins-1.22.2/tests/hash_union_test.rb +42 -0
  3561. data/vendor/bundle/gems/tins-1.22.2/tests/if_predicate_test.rb +12 -0
  3562. data/vendor/bundle/gems/tins-1.22.2/tests/implement_test.rb +75 -0
  3563. data/vendor/bundle/gems/tins-1.22.2/tests/limited_test.rb +21 -0
  3564. data/vendor/bundle/gems/tins-1.22.2/tests/lines_file_test.rb +82 -0
  3565. data/vendor/bundle/gems/tins-1.22.2/tests/memoize_test.rb +115 -0
  3566. data/vendor/bundle/gems/tins-1.22.2/tests/method_description_test.rb +104 -0
  3567. data/vendor/bundle/gems/tins-1.22.2/tests/minimize_test.rb +54 -0
  3568. data/vendor/bundle/gems/tins-1.22.2/tests/module_group_test.rb +29 -0
  3569. data/vendor/bundle/gems/tins-1.22.2/tests/named_set_test.rb +18 -0
  3570. data/vendor/bundle/gems/tins-1.22.2/tests/named_test.rb +30 -0
  3571. data/vendor/bundle/gems/tins-1.22.2/tests/null_test.rb +64 -0
  3572. data/vendor/bundle/gems/tins-1.22.2/tests/p_test.rb +14 -0
  3573. data/vendor/bundle/gems/tins-1.22.2/tests/partial_application_test.rb +30 -0
  3574. data/vendor/bundle/gems/tins-1.22.2/tests/proc_compose_test.rb +21 -0
  3575. data/vendor/bundle/gems/tins-1.22.2/tests/proc_prelude_test.rb +81 -0
  3576. data/vendor/bundle/gems/tins-1.22.2/tests/range_plus_test.rb +14 -0
  3577. data/vendor/bundle/gems/tins-1.22.2/tests/require_maybe_test.rb +24 -0
  3578. data/vendor/bundle/gems/tins-1.22.2/tests/responding_test.rb +24 -0
  3579. data/vendor/bundle/gems/tins-1.22.2/tests/rotate_test.rb +65 -0
  3580. data/vendor/bundle/gems/tins-1.22.2/tests/scope_test.rb +31 -0
  3581. data/vendor/bundle/gems/tins-1.22.2/tests/secure_write_test.rb +42 -0
  3582. data/vendor/bundle/gems/tins-1.22.2/tests/sexy_singleton_test.rb +16 -0
  3583. data/vendor/bundle/gems/tins-1.22.2/tests/string_byte_order_mark_test.rb +40 -0
  3584. data/vendor/bundle/gems/tins-1.22.2/tests/string_camelize_test.rb +21 -0
  3585. data/vendor/bundle/gems/tins-1.22.2/tests/string_underscore_test.rb +11 -0
  3586. data/vendor/bundle/gems/tins-1.22.2/tests/string_version_test.rb +60 -0
  3587. data/vendor/bundle/gems/tins-1.22.2/tests/subhash_test.rb +37 -0
  3588. data/vendor/bundle/gems/tins-1.22.2/tests/temp_io_test.rb +51 -0
  3589. data/vendor/bundle/gems/tins-1.22.2/tests/test_helper.rb +11 -0
  3590. data/vendor/bundle/gems/tins-1.22.2/tests/time_dummy_test.rb +31 -0
  3591. data/vendor/bundle/gems/tins-1.22.2/tests/time_freezer_test.rb +45 -0
  3592. data/vendor/bundle/gems/tins-1.22.2/tests/to_test.rb +32 -0
  3593. data/vendor/bundle/gems/tins-1.22.2/tests/token_test.rb +38 -0
  3594. data/vendor/bundle/gems/tins-1.22.2/tests/uniq_by_test.rb +31 -0
  3595. data/vendor/bundle/gems/tins-1.22.2/tests/unit_test.rb +63 -0
  3596. data/vendor/bundle/gems/tins-1.22.2/tins.gemspec +41 -0
  3597. data/vendor/bundle/gems/xpath-3.2.0/README.md +78 -0
  3598. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath.rb +18 -0
  3599. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath/dsl.rb +174 -0
  3600. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath/expression.rb +22 -0
  3601. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath/literal.rb +10 -0
  3602. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath/renderer.rb +126 -0
  3603. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath/union.rb +31 -0
  3604. data/vendor/bundle/gems/xpath-3.2.0/lib/xpath/version.rb +5 -0
  3605. data/vendor/bundle/gems/xpath-3.2.0/spec/fixtures/form.html +201 -0
  3606. data/vendor/bundle/gems/xpath-3.2.0/spec/fixtures/simple.html +53 -0
  3607. data/vendor/bundle/gems/xpath-3.2.0/spec/fixtures/stuff.html +54 -0
  3608. data/vendor/bundle/gems/xpath-3.2.0/spec/spec_helper.rb +8 -0
  3609. data/vendor/bundle/gems/xpath-3.2.0/spec/union_spec.rb +63 -0
  3610. data/vendor/bundle/gems/xpath-3.2.0/spec/xpath_spec.rb +562 -0
  3611. data/vendor/bundle/specifications/addressable-2.7.0.gemspec +39 -0
  3612. data/vendor/bundle/specifications/capybara-3.29.0.gemspec +116 -0
  3613. data/vendor/bundle/specifications/childprocess-3.0.0.gemspec +39 -0
  3614. data/vendor/bundle/specifications/coveralls-0.8.23.gemspec +50 -0
  3615. data/vendor/bundle/specifications/diff-lcs-1.3.gemspec +61 -0
  3616. data/vendor/bundle/specifications/docile-1.3.2.gemspec +48 -0
  3617. data/vendor/bundle/specifications/emot-0.0.4.gemspec +44 -0
  3618. data/vendor/bundle/specifications/faraday-0.17.1.gemspec +33 -0
  3619. data/vendor/bundle/specifications/fastimage-2.1.7.gemspec +45 -0
  3620. data/vendor/bundle/specifications/hikidoc-0.1.0.gemspec +37 -0
  3621. data/vendor/bundle/specifications/jasmine-2.99.0.gemspec +59 -0
  3622. data/vendor/bundle/specifications/jasmine-core-2.99.2.gemspec +41 -0
  3623. data/vendor/bundle/specifications/json-2.2.0.gemspec +0 -0
  3624. data/vendor/bundle/specifications/launchy-2.4.3.gemspec +45 -0
  3625. data/vendor/bundle/specifications/mail-2.7.1.gemspec +50 -0
  3626. data/vendor/bundle/specifications/mime-types-3.3.gemspec +84 -0
  3627. data/vendor/bundle/specifications/mime-types-data-3.2019.1009.gemspec +60 -0
  3628. data/vendor/bundle/specifications/mini_mime-1.0.2.gemspec +39 -0
  3629. data/vendor/bundle/specifications/mini_portile2-2.4.0.gemspec +48 -0
  3630. data/vendor/bundle/specifications/multipart-post-2.1.1.gemspec +38 -0
  3631. data/vendor/bundle/specifications/nokogiri-1.10.5.gemspec +83 -0
  3632. data/vendor/bundle/specifications/octokit-4.14.0.gemspec +36 -0
  3633. data/vendor/bundle/specifications/phantomjs-2.1.1.0.gemspec +44 -0
  3634. data/vendor/bundle/specifications/pit-0.0.7.gemspec +21 -0
  3635. data/vendor/bundle/specifications/power_assert-1.1.5.gemspec +54 -0
  3636. data/vendor/bundle/specifications/public_suffix-4.0.1.gemspec +41 -0
  3637. data/vendor/bundle/specifications/rack-2.0.7.gemspec +42 -0
  3638. data/vendor/bundle/specifications/rack-test-1.1.0.gemspec +54 -0
  3639. data/vendor/bundle/specifications/racksh-1.0.0.gemspec +35 -0
  3640. data/vendor/bundle/specifications/rake-13.0.1.gemspec +26 -0
  3641. data/vendor/bundle/specifications/redcarpet-3.5.0.gemspec +44 -0
  3642. data/vendor/bundle/specifications/regexp_parser-1.6.0.gemspec +23 -0
  3643. data/vendor/bundle/specifications/rspec-3.9.0.gemspec +43 -0
  3644. data/vendor/bundle/specifications/rspec-core-3.9.0.gemspec +63 -0
  3645. data/vendor/bundle/specifications/rspec-expectations-3.9.0.gemspec +51 -0
  3646. data/vendor/bundle/specifications/rspec-mocks-3.9.0.gemspec +51 -0
  3647. data/vendor/bundle/specifications/rspec-support-3.9.0.gemspec +39 -0
  3648. data/vendor/bundle/specifications/rubyzip-2.0.0.gemspec +45 -0
  3649. data/vendor/bundle/specifications/sawyer-0.8.2.gemspec +34 -0
  3650. data/vendor/bundle/specifications/selenium-webdriver-3.142.6.gemspec +64 -0
  3651. data/vendor/bundle/specifications/sequel-5.26.0.gemspec +56 -0
  3652. data/vendor/bundle/specifications/simplecov-0.16.1.gemspec +42 -0
  3653. data/vendor/bundle/specifications/simplecov-html-0.10.2.gemspec +33 -0
  3654. data/vendor/bundle/specifications/sqlite3-1.4.1.gemspec +60 -0
  3655. data/vendor/bundle/specifications/term-ansicolor-1.7.1.gemspec +46 -0
  3656. data/vendor/bundle/specifications/test-unit-3.3.4.gemspec +48 -0
  3657. data/vendor/bundle/specifications/thor-0.20.3.gemspec +35 -0
  3658. data/vendor/bundle/specifications/tins-1.22.2.gemspec +42 -0
  3659. data/vendor/bundle/specifications/xpath-3.2.0.gemspec +46 -0
  3660. metadata +3650 -2
@@ -0,0 +1,3761 @@
1
+ # frozen-string-literal: true
2
+
3
+ module Sequel
4
+ class Model
5
+ # Associations are used in order to specify relationships between model classes
6
+ # that reflect relations between tables in the database using foreign keys.
7
+ module Associations
8
+ # Map of association type symbols to association reflection classes.
9
+ ASSOCIATION_TYPES = {}
10
+
11
+ # Set an empty association reflection hash in the model
12
+ def self.apply(model)
13
+ model.instance_exec do
14
+ @association_reflections = {}
15
+ @autoreloading_associations = {}
16
+ @cache_associations = true
17
+ @default_eager_limit_strategy = true
18
+ @default_association_options = {}
19
+ @default_association_type_options = {}
20
+ @dataset_module_class = DatasetModule
21
+ end
22
+ end
23
+
24
+ # The dataset module to use for classes using the associations plugin.
25
+ class DatasetModule < Model::DatasetModule
26
+ def_dataset_caching_method(self, :eager)
27
+ end
28
+
29
+ # AssociationReflection is a Hash subclass that keeps information on Sequel::Model associations. It
30
+ # provides methods to reduce internal code duplication. It should not
31
+ # be instantiated by the user.
32
+ class AssociationReflection < Hash
33
+ include Sequel::Inflections
34
+
35
+ # Name symbol for the _add internal association method
36
+ def _add_method
37
+ self[:_add_method]
38
+ end
39
+
40
+ # Name symbol for the _remove_all internal association method
41
+ def _remove_all_method
42
+ self[:_remove_all_method]
43
+ end
44
+
45
+ # Name symbol for the _remove internal association method
46
+ def _remove_method
47
+ self[:_remove_method]
48
+ end
49
+
50
+ # Name symbol for the _setter association method
51
+ def _setter_method
52
+ self[:_setter_method]
53
+ end
54
+
55
+ # Name symbol for the add association method
56
+ def add_method
57
+ self[:add_method]
58
+ end
59
+
60
+ # Name symbol for association method, the same as the name of the association.
61
+ def association_method
62
+ self[:name]
63
+ end
64
+
65
+ # The class associated to the current model class via this association
66
+ def associated_class
67
+ cached_fetch(:class) do
68
+ begin
69
+ constantize(self[:class_name])
70
+ rescue NameError => e
71
+ raise NameError, "#{e.message} (this happened when attempting to find the associated class for #{inspect})", e.backtrace
72
+ end
73
+ end
74
+ end
75
+
76
+ # The dataset associated via this association, with the non-instance specific
77
+ # changes already applied. This will be a joined dataset if the association
78
+ # requires joining tables.
79
+ def associated_dataset
80
+ cached_fetch(:_dataset){apply_dataset_changes(_associated_dataset)}
81
+ end
82
+
83
+ # Apply all non-instance specific changes to the given dataset and return it.
84
+ def apply_dataset_changes(ds)
85
+ ds = ds.with_extend(AssociationDatasetMethods).clone(:association_reflection => self)
86
+ if exts = self[:reverse_extend]
87
+ ds = ds.with_extend(*exts)
88
+ end
89
+ ds = ds.select(*select) if select
90
+ if c = self[:conditions]
91
+ ds = (c.is_a?(Array) && !Sequel.condition_specifier?(c)) ? ds.where(*c) : ds.where(c)
92
+ end
93
+ ds = ds.order(*self[:order]) if self[:order]
94
+ ds = ds.limit(*self[:limit]) if self[:limit]
95
+ ds = ds.limit(1).skip_limit_check if limit_to_single_row?
96
+ ds = ds.eager(self[:eager]) if self[:eager]
97
+ ds = ds.distinct if self[:distinct]
98
+ ds
99
+ end
100
+
101
+ # Apply all non-instance specific changes and the eager_block option to the given
102
+ # dataset and return it.
103
+ def apply_eager_dataset_changes(ds)
104
+ ds = apply_dataset_changes(ds)
105
+ if block = self[:eager_block]
106
+ ds = block.call(ds)
107
+ end
108
+ ds
109
+ end
110
+
111
+ # Apply the eager graph limit strategy to the dataset to graph into the current dataset, or return
112
+ # the dataset unmodified if no SQL limit strategy is needed.
113
+ def apply_eager_graph_limit_strategy(strategy, ds)
114
+ case strategy
115
+ when :distinct_on
116
+ apply_distinct_on_eager_limit_strategy(ds.order_prepend(*self[:order]))
117
+ when :window_function
118
+ apply_window_function_eager_limit_strategy(ds.order_prepend(*self[:order])).select(*ds.columns)
119
+ else
120
+ ds
121
+ end
122
+ end
123
+
124
+ # Apply an eager limit strategy to the dataset, or return the dataset
125
+ # unmodified if it doesn't need an eager limit strategy.
126
+ def apply_eager_limit_strategy(ds, strategy=eager_limit_strategy, limit_and_offset=limit_and_offset())
127
+ case strategy
128
+ when :distinct_on
129
+ apply_distinct_on_eager_limit_strategy(ds)
130
+ when :window_function
131
+ apply_window_function_eager_limit_strategy(ds, limit_and_offset)
132
+ else
133
+ ds
134
+ end
135
+ end
136
+
137
+ # Use DISTINCT ON and ORDER BY clauses to limit the results to the first record with matching keys.
138
+ def apply_distinct_on_eager_limit_strategy(ds)
139
+ keys = predicate_key
140
+ ds.distinct(*keys).order_prepend(*keys)
141
+ end
142
+
143
+ # Use a window function to limit the results of the eager loading dataset.
144
+ def apply_window_function_eager_limit_strategy(ds, limit_and_offset=limit_and_offset())
145
+ rn = ds.row_number_column
146
+ limit, offset = limit_and_offset
147
+ ds = ds.unordered.select_append{|o| o.row_number.function.over(:partition=>predicate_key, :order=>ds.opts[:order]).as(rn)}.from_self
148
+ ds = ds.order(rn) if ds.db.database_type == :mysql
149
+ ds = if !returns_array?
150
+ ds.where(rn => offset ? offset+1 : 1)
151
+ elsif offset
152
+ offset += 1
153
+ if limit
154
+ ds.where(rn => (offset...(offset+limit)))
155
+ else
156
+ ds.where{SQL::Identifier.new(rn) >= offset}
157
+ end
158
+ else
159
+ ds.where{SQL::Identifier.new(rn) <= limit}
160
+ end
161
+ end
162
+
163
+ # If the ruby eager limit strategy is being used, slice the array using the slice
164
+ # range to return the object(s) at the correct offset/limit.
165
+ def apply_ruby_eager_limit_strategy(rows, limit_and_offset = limit_and_offset())
166
+ name = self[:name]
167
+ if returns_array?
168
+ range = slice_range(limit_and_offset)
169
+ rows.each{|o| o.associations[name] = o.associations[name][range] || []}
170
+ elsif sr = slice_range(limit_and_offset)
171
+ offset = sr.begin
172
+ rows.each{|o| o.associations[name] = o.associations[name][offset]}
173
+ end
174
+ end
175
+
176
+ # Whether the associations cache should use an array when storing the
177
+ # associated records during eager loading.
178
+ def assign_singular?
179
+ !returns_array?
180
+ end
181
+
182
+ # Whether this association can have associated objects, given the current
183
+ # object. Should be false if obj cannot have associated objects because
184
+ # the necessary key columns are NULL.
185
+ def can_have_associated_objects?(obj)
186
+ true
187
+ end
188
+
189
+ # Whether you are able to clone from the given association type to the current
190
+ # association type, true by default only if the types match.
191
+ def cloneable?(ref)
192
+ ref[:type] == self[:type]
193
+ end
194
+
195
+ # Name symbol for the dataset association method
196
+ def dataset_method
197
+ self[:dataset_method]
198
+ end
199
+
200
+ # Whether the dataset needs a primary key to function, true by default.
201
+ def dataset_need_primary_key?
202
+ true
203
+ end
204
+
205
+ # Return the symbol used for the row number column if the window function
206
+ # eager limit strategy is being used, or nil otherwise.
207
+ def delete_row_number_column(ds=associated_dataset)
208
+ if eager_limit_strategy == :window_function
209
+ ds.row_number_column
210
+ end
211
+ end
212
+
213
+ # Return an dataset that will load the appropriate associated objects for
214
+ # the given object using this association.
215
+ def association_dataset_for(object)
216
+ condition = if can_have_associated_objects?(object)
217
+ predicate_keys.zip(predicate_key_values(object))
218
+ else
219
+ false
220
+ end
221
+
222
+ associated_dataset.where(condition)
223
+ end
224
+
225
+ ASSOCIATION_DATASET_PROC = proc{|r| r.association_dataset_for(self)}
226
+ # Proc used to create the association dataset method.
227
+ def association_dataset_proc
228
+ ASSOCIATION_DATASET_PROC
229
+ end
230
+
231
+ # The eager_graph limit strategy to use for this dataset
232
+ def eager_graph_limit_strategy(strategy)
233
+ if self[:limit] || !returns_array?
234
+ strategy = strategy[self[:name]] if strategy.is_a?(Hash)
235
+ case strategy
236
+ when true
237
+ true_eager_graph_limit_strategy
238
+ when Symbol
239
+ strategy
240
+ else
241
+ if returns_array? || offset
242
+ :ruby
243
+ end
244
+ end
245
+ end
246
+ end
247
+
248
+ # The eager limit strategy to use for this dataset.
249
+ def eager_limit_strategy
250
+ cached_fetch(:_eager_limit_strategy) do
251
+ if self[:limit] || !returns_array?
252
+ case s = cached_fetch(:eager_limit_strategy){default_eager_limit_strategy}
253
+ when true
254
+ true_eager_limit_strategy
255
+ else
256
+ s
257
+ end
258
+ end
259
+ end
260
+ end
261
+
262
+ # Eager load the associated objects using the hash of eager options,
263
+ # yielding each row to the block.
264
+ def eager_load_results(eo, &block)
265
+ rows = eo[:rows]
266
+ initialize_association_cache(rows) unless eo[:initialize_rows] == false
267
+ if eo[:id_map]
268
+ ids = eo[:id_map].keys
269
+ return ids if ids.empty?
270
+ end
271
+ strategy = eager_limit_strategy
272
+ cascade = eo[:associations]
273
+ eager_limit = nil
274
+
275
+ if eo[:eager_block] || eo[:loader] == false
276
+ ds = eager_loading_dataset(eo)
277
+
278
+ strategy = ds.opts[:eager_limit_strategy] || strategy
279
+
280
+ eager_limit =
281
+ if el = ds.opts[:eager_limit]
282
+ raise Error, "The :eager_limit dataset option is not supported for associations returning a single record" unless returns_array?
283
+ strategy ||= true_eager_graph_limit_strategy
284
+ if el.is_a?(Array)
285
+ el
286
+ else
287
+ [el, nil]
288
+ end
289
+ else
290
+ limit_and_offset
291
+ end
292
+
293
+ strategy = true_eager_graph_limit_strategy if strategy == :union
294
+ # Correlated subqueries are not supported for regular eager loading
295
+ strategy = :ruby if strategy == :correlated_subquery
296
+ strategy = nil if strategy == :ruby && assign_singular?
297
+ objects = apply_eager_limit_strategy(ds, strategy, eager_limit).all
298
+ elsif strategy == :union
299
+ objects = []
300
+ ds = associated_dataset
301
+ loader = union_eager_loader
302
+ joiner = " UNION ALL "
303
+ ids.each_slice(subqueries_per_union).each do |slice|
304
+ objects.concat(ds.with_sql(slice.map{|k| loader.sql(*k)}.join(joiner)).to_a)
305
+ end
306
+ ds = ds.eager(cascade) if cascade
307
+ ds.send(:post_load, objects)
308
+ else
309
+ loader = placeholder_eager_loader
310
+ loader = loader.with_dataset{|dataset| dataset.eager(cascade)} if cascade
311
+ objects = loader.all(ids)
312
+ end
313
+
314
+ objects.each(&block)
315
+ if strategy == :ruby
316
+ apply_ruby_eager_limit_strategy(rows, eager_limit || limit_and_offset)
317
+ end
318
+ end
319
+
320
+ # The key to use for the key hash when eager loading
321
+ def eager_loader_key
322
+ self[:eager_loader_key]
323
+ end
324
+
325
+ # By default associations do not need to select a key in an associated table
326
+ # to eagerly load.
327
+ def eager_loading_use_associated_key?
328
+ false
329
+ end
330
+
331
+ # Whether to eagerly graph a lazy dataset, true by default. If this
332
+ # is false, the association won't respect the :eager_graph option
333
+ # when loading the association for a single record.
334
+ def eager_graph_lazy_dataset?
335
+ true
336
+ end
337
+
338
+ # Whether additional conditions should be added when using the filter
339
+ # by associations support.
340
+ def filter_by_associations_add_conditions?
341
+ self[:conditions] || self[:eager_block] || self[:limit]
342
+ end
343
+
344
+ # The expression to use for the additional conditions to be added for
345
+ # the filter by association support, when the association itself is
346
+ # filtered. Works by using a subquery to test that the objects passed
347
+ # also meet the association filter criteria.
348
+ def filter_by_associations_conditions_expression(obj)
349
+ ds = filter_by_associations_conditions_dataset.where(filter_by_associations_conditions_subquery_conditions(obj))
350
+ {filter_by_associations_conditions_key=>ds}
351
+ end
352
+
353
+ # Finalize the association by first attempting to populate the thread-safe cache,
354
+ # and then transfering the thread-safe cache value to the association itself,
355
+ # so that a mutex is not needed to get the value.
356
+ def finalize
357
+ return unless cache = self[:cache]
358
+
359
+ finalize_settings.each do |meth, key|
360
+ next if has_key?(key)
361
+
362
+ # Allow calling private methods to make sure caching is done appropriately
363
+ send(meth)
364
+ self[key] = cache.delete(key) if cache.has_key?(key)
365
+ end
366
+
367
+ nil
368
+ end
369
+
370
+ # Map of methods to cache keys used for finalizing associations.
371
+ FINALIZE_SETTINGS = {
372
+ :associated_class=>:class,
373
+ :associated_dataset=>:_dataset,
374
+ :associated_eager_dataset=>:associated_eager_dataset,
375
+ :eager_limit_strategy=>:_eager_limit_strategy,
376
+ :filter_by_associations_conditions_dataset=>:filter_by_associations_conditions_dataset,
377
+ :placeholder_loader=>:placeholder_loader,
378
+ :predicate_key=>:predicate_key,
379
+ :predicate_keys=>:predicate_keys,
380
+ :reciprocal=>:reciprocal,
381
+ }.freeze
382
+ def finalize_settings
383
+ FINALIZE_SETTINGS
384
+ end
385
+
386
+ # Whether to handle silent modification failure when adding/removing
387
+ # associated records, false by default.
388
+ def handle_silent_modification_failure?
389
+ false
390
+ end
391
+
392
+ # Initialize the associations cache for the current association for the given objects.
393
+ def initialize_association_cache(objects)
394
+ name = self[:name]
395
+ if assign_singular?
396
+ objects.each{|object| object.associations[name] = nil}
397
+ else
398
+ objects.each{|object| object.associations[name] = []}
399
+ end
400
+ end
401
+
402
+ # Show which type of reflection this is, and a guess at what code was used to create the
403
+ # association.
404
+ def inspect
405
+ o = self[:orig_opts].dup
406
+ o.delete(:class)
407
+ o.delete(:class_name)
408
+ o.delete(:block) unless o[:block]
409
+ o[:class] = self[:orig_class] if self[:orig_class]
410
+
411
+ "#<#{self.class} #{self[:model]}.#{self[:type]} #{self[:name].inspect}#{", #{o.inspect[1...-1]}" unless o.empty?}>"
412
+ end
413
+
414
+ # The limit and offset for this association (returned as a two element array).
415
+ def limit_and_offset
416
+ if (v = self[:limit]).is_a?(Array)
417
+ v
418
+ else
419
+ [v, nil]
420
+ end
421
+ end
422
+
423
+ # Whether the associated object needs a primary key to be added/removed,
424
+ # false by default.
425
+ def need_associated_primary_key?
426
+ false
427
+ end
428
+
429
+ # A placeholder literalizer that can be used to lazily load the association. If
430
+ # one can't be used, returns nil.
431
+ def placeholder_loader
432
+ if use_placeholder_loader?
433
+ cached_fetch(:placeholder_loader) do
434
+ Sequel::Dataset::PlaceholderLiteralizer.loader(associated_dataset) do |pl, ds|
435
+ ds.where(Sequel.&(*predicate_keys.map{|k| SQL::BooleanExpression.new(:'=', k, pl.arg)}))
436
+ end
437
+ end
438
+ end
439
+ end
440
+
441
+ # The keys to use for loading of the regular dataset, as an array.
442
+ def predicate_keys
443
+ cached_fetch(:predicate_keys){Array(predicate_key)}
444
+ end
445
+
446
+ # The values that predicate_keys should match for objects to be associated.
447
+ def predicate_key_values(object)
448
+ predicate_key_methods.map{|k| object.get_column_value(k)}
449
+ end
450
+
451
+ # Qualify +col+ with the given table name.
452
+ def qualify(table, col)
453
+ transform(col) do |k|
454
+ case k
455
+ when Symbol, SQL::Identifier
456
+ SQL::QualifiedIdentifier.new(table, k)
457
+ else
458
+ Sequel::Qualifier.new(table).transform(k)
459
+ end
460
+ end
461
+ end
462
+
463
+ # Qualify col with the associated model's table name.
464
+ def qualify_assoc(col)
465
+ qualify(associated_class.table_name, col)
466
+ end
467
+
468
+ # Qualify col with the current model's table name.
469
+ def qualify_cur(col)
470
+ qualify(self[:model].table_name, col)
471
+ end
472
+
473
+ # Returns the reciprocal association variable, if one exists. The reciprocal
474
+ # association is the association in the associated class that is the opposite
475
+ # of the current association. For example, Album.many_to_one :artist and
476
+ # Artist.one_to_many :albums are reciprocal associations. This information is
477
+ # to populate reciprocal associations. For example, when you do this_artist.add_album(album)
478
+ # it sets album.artist to this_artist.
479
+ def reciprocal
480
+ cached_fetch(:reciprocal) do
481
+ possible_recips = []
482
+
483
+ associated_class.all_association_reflections.each do |assoc_reflect|
484
+ if reciprocal_association?(assoc_reflect)
485
+ possible_recips << assoc_reflect
486
+ end
487
+ end
488
+
489
+ if possible_recips.length == 1
490
+ cached_set(:reciprocal_type, possible_recips.first[:type]) if ambiguous_reciprocal_type?
491
+ possible_recips.first[:name]
492
+ end
493
+ end
494
+ end
495
+
496
+ # Whether the reciprocal of this association returns an array of objects instead of a single object,
497
+ # true by default.
498
+ def reciprocal_array?
499
+ true
500
+ end
501
+
502
+ # Name symbol for the remove_all_ association method
503
+ def remove_all_method
504
+ self[:remove_all_method]
505
+ end
506
+
507
+ # Whether associated objects need to be removed from the association before
508
+ # being destroyed in order to preserve referential integrity.
509
+ def remove_before_destroy?
510
+ true
511
+ end
512
+
513
+ # Name symbol for the remove_ association method
514
+ def remove_method
515
+ self[:remove_method]
516
+ end
517
+
518
+ # Whether to check that an object to be disassociated is already associated to this object, false by default.
519
+ def remove_should_check_existing?
520
+ false
521
+ end
522
+
523
+ # Whether this association returns an array of objects instead of a single object,
524
+ # true by default.
525
+ def returns_array?
526
+ true
527
+ end
528
+
529
+ # The columns to select when loading the association.
530
+ def select
531
+ self[:select]
532
+ end
533
+
534
+ # Whether to set the reciprocal association to self when loading associated
535
+ # records, false by default.
536
+ def set_reciprocal_to_self?
537
+ false
538
+ end
539
+
540
+ # Name symbol for the setter association method
541
+ def setter_method
542
+ self[:setter_method]
543
+ end
544
+
545
+ # The range used for slicing when using the :ruby eager limit strategy.
546
+ def slice_range(limit_and_offset = limit_and_offset())
547
+ limit, offset = limit_and_offset
548
+ if limit || offset
549
+ (offset||0)..(limit ? (offset||0)+limit-1 : -1)
550
+ end
551
+ end
552
+
553
+ private
554
+
555
+ # If the key exists in the reflection hash, return it.
556
+ # If the key doesn't exist and association reflections are uncached, then yield to get the value.
557
+ # If the key doesn't exist and association reflection are cached, check the cache and return
558
+ # the value if present, or yield to get the value, cache the value, and return it.
559
+ def cached_fetch(key)
560
+ fetch(key) do
561
+ return yield unless h = self[:cache]
562
+ Sequel.synchronize{return h[key] if h.has_key?(key)}
563
+ value = yield
564
+ Sequel.synchronize{h[key] = value}
565
+ end
566
+ end
567
+
568
+ # Cache the value at the given key if caching.
569
+ def cached_set(key, value)
570
+ return unless h = self[:cache]
571
+ Sequel.synchronize{h[key] = value}
572
+ end
573
+
574
+ # The base dataset used for the association, before any order/conditions
575
+ # options have been applied.
576
+ def _associated_dataset
577
+ associated_class.dataset
578
+ end
579
+
580
+ # Whether for the reciprocal type for the given association cannot be
581
+ # known in advantage, false by default.
582
+ def ambiguous_reciprocal_type?
583
+ false
584
+ end
585
+
586
+ # Apply a limit strategy to the given dataset so that filter by
587
+ # associations works with a limited dataset.
588
+ def apply_filter_by_associations_limit_strategy(ds)
589
+ case filter_by_associations_limit_strategy
590
+ when :distinct_on
591
+ apply_filter_by_associations_distinct_on_limit_strategy(ds)
592
+ when :window_function
593
+ apply_filter_by_associations_window_function_limit_strategy(ds)
594
+ else
595
+ ds
596
+ end
597
+ end
598
+
599
+ # Apply a distinct on eager limit strategy using IN with a subquery
600
+ # that uses DISTINCT ON to ensure only the first matching record for
601
+ # each key is included.
602
+ def apply_filter_by_associations_distinct_on_limit_strategy(ds)
603
+ k = filter_by_associations_limit_key
604
+ ds.where(k=>apply_distinct_on_eager_limit_strategy(associated_eager_dataset.select(*k)))
605
+ end
606
+
607
+ # Apply a distinct on eager limit strategy using IN with a subquery
608
+ # that uses a filter on the row_number window function to ensure
609
+ # that only rows inside the limit are returned.
610
+ def apply_filter_by_associations_window_function_limit_strategy(ds)
611
+ ds.where(filter_by_associations_limit_key=>apply_window_function_eager_limit_strategy(associated_eager_dataset.select(*filter_by_associations_limit_alias_key)).select(*filter_by_associations_limit_aliases))
612
+ end
613
+
614
+ # The associated_dataset with the eager_block callback already applied.
615
+ def associated_eager_dataset
616
+ cached_fetch(:associated_eager_dataset) do
617
+ ds = associated_dataset.unlimited
618
+ if block = self[:eager_block]
619
+ ds = block.call(ds)
620
+ end
621
+ ds
622
+ end
623
+ end
624
+
625
+ # The dataset to use for eager loading associated objects for multiple current objects,
626
+ # given the hash passed to the eager loader.
627
+ def eager_loading_dataset(eo=OPTS)
628
+ ds = eo[:dataset] || associated_eager_dataset
629
+ if id_map = eo[:id_map]
630
+ ds = ds.where(eager_loading_predicate_condition(id_map.keys))
631
+ end
632
+ if associations = eo[:associations]
633
+ ds = ds.eager(associations)
634
+ end
635
+ if block = eo[:eager_block]
636
+ orig_ds = ds
637
+ ds = block.call(ds)
638
+ end
639
+ if eager_loading_use_associated_key?
640
+ ds = if ds.opts[:eager_graph] && !orig_ds.opts[:eager_graph]
641
+ block.call(orig_ds.select_append(*associated_key_array))
642
+ else
643
+ ds.select_append(*associated_key_array)
644
+ end
645
+ end
646
+ if self[:eager_graph]
647
+ raise(Error, "cannot eagerly load a #{self[:type]} association that uses :eager_graph") if eager_loading_use_associated_key?
648
+ ds = ds.eager_graph(self[:eager_graph])
649
+ end
650
+ ds
651
+ end
652
+
653
+ # The default eager limit strategy to use for this association
654
+ def default_eager_limit_strategy
655
+ self[:model].default_eager_limit_strategy || :ruby
656
+ end
657
+
658
+ # The predicate condition to use for the eager_loader.
659
+ def eager_loading_predicate_condition(keys)
660
+ {predicate_key=>keys}
661
+ end
662
+
663
+ # Add conditions to the dataset to not include NULL values for
664
+ # the associated keys, and select those keys.
665
+ def filter_by_associations_add_conditions_dataset_filter(ds)
666
+ k = filter_by_associations_conditions_associated_keys
667
+ ds.select(*k).where(Sequel.negate(k.zip([])))
668
+ end
669
+
670
+ # The conditions to add to the filter by associations conditions
671
+ # subquery to restrict it to to the object(s) that was used as the
672
+ # filter value.
673
+ def filter_by_associations_conditions_subquery_conditions(obj)
674
+ key = qualify(associated_class.table_name, associated_class.primary_key)
675
+ case obj
676
+ when Array
677
+ {key=>obj.map(&:pk)}
678
+ when Sequel::Dataset
679
+ {key=>obj.select(*Array(qualify(associated_class.table_name, associated_class.primary_key)))}
680
+ else
681
+ Array(key).zip(Array(obj.pk))
682
+ end
683
+ end
684
+
685
+ # The base dataset to use for the filter by associations conditions
686
+ # subquery, regardless of the objects that are passed in as filter
687
+ # values.
688
+ def filter_by_associations_conditions_dataset
689
+ cached_fetch(:filter_by_associations_conditions_dataset) do
690
+ ds = associated_eager_dataset.unordered
691
+ ds = filter_by_associations_add_conditions_dataset_filter(ds)
692
+ ds = apply_filter_by_associations_limit_strategy(ds)
693
+ ds
694
+ end
695
+ end
696
+
697
+ # The strategy to use to filter by a limited association
698
+ def filter_by_associations_limit_strategy
699
+ v = fetch(:filter_limit_strategy, self[:eager_limit_strategy])
700
+ if v || self[:limit] || !returns_array?
701
+ case v ||= self[:model].default_eager_limit_strategy
702
+ when true, :union, :ruby
703
+ # Can't use a union or ruby-based strategy for filtering by associations, switch to default eager graph limit
704
+ # strategy.
705
+ true_eager_graph_limit_strategy
706
+ when Symbol
707
+ v
708
+ end
709
+ end
710
+ end
711
+
712
+ # Whether to limit the associated dataset to a single row.
713
+ def limit_to_single_row?
714
+ !returns_array?
715
+ end
716
+
717
+ # Any offset to use for this association (or nil if there is no offset).
718
+ def offset
719
+ limit_and_offset.last
720
+ end
721
+
722
+ # A placeholder literalizer used to speed up eager loading.
723
+ def placeholder_eager_loader
724
+ cached_fetch(:placeholder_eager_loader) do
725
+ Sequel::Dataset::PlaceholderLiteralizer.loader(associated_dataset) do |pl, ds|
726
+ apply_eager_limit_strategy(eager_loading_dataset.where(predicate_key=>pl.arg), eager_limit_strategy)
727
+ end
728
+ end
729
+ end
730
+
731
+ # The reciprocal type as an array, should be overridden in reflection subclasses that
732
+ # have ambiguous reciprocal types.
733
+ def possible_reciprocal_types
734
+ [reciprocal_type]
735
+ end
736
+
737
+ # Whether the given association reflection is possible reciprocal
738
+ # association for the current association reflection.
739
+ def reciprocal_association?(assoc_reflect)
740
+ possible_reciprocal_types.include?(assoc_reflect[:type]) &&
741
+ (begin; assoc_reflect.associated_class; rescue NameError; end) == self[:model] &&
742
+ assoc_reflect[:conditions].nil? &&
743
+ assoc_reflect[:block].nil?
744
+ end
745
+
746
+ # The number of subqueries to use in each union query, used to eagerly load
747
+ # limited associations. Defaults to 40, the optimal number depends on the
748
+ # latency between the database and the application.
749
+ def subqueries_per_union
750
+ self[:subqueries_per_union] || 40
751
+ end
752
+
753
+ # If +s+ is an array, map +s+ over the block. Otherwise, just call the
754
+ # block with +s+.
755
+ def transform(s, &block)
756
+ s.is_a?(Array) ? s.map(&block) : (yield s)
757
+ end
758
+
759
+ # What eager limit strategy should be used when true is given as the value,
760
+ # defaults to UNION as that is the fastest strategy if the appropriate keys are indexed.
761
+ def true_eager_limit_strategy
762
+ if self[:eager_graph] || (offset && !associated_dataset.supports_offsets_in_correlated_subqueries?)
763
+ # An SQL-based approach won't work if you are also eager graphing,
764
+ # so use a ruby based approach in that case.
765
+ :ruby
766
+ else
767
+ :union
768
+ end
769
+ end
770
+
771
+ # The eager_graph limit strategy used when true is given as the value, choosing the
772
+ # best strategy based on what the database supports.
773
+ def true_eager_graph_limit_strategy
774
+ if associated_class.dataset.supports_window_functions?
775
+ :window_function
776
+ else
777
+ :ruby
778
+ end
779
+ end
780
+
781
+ # A placeholder literalizer used to speed up the creation of union queries when eager
782
+ # loading a limited association.
783
+ def union_eager_loader
784
+ cached_fetch(:union_eager_loader) do
785
+ Sequel::Dataset::PlaceholderLiteralizer.loader(associated_dataset) do |pl, ds|
786
+ ds = self[:eager_block].call(ds) if self[:eager_block]
787
+ keys = predicate_keys
788
+ ds = ds.where(keys.map{pl.arg}.zip(keys))
789
+ if eager_loading_use_associated_key?
790
+ ds = ds.select_append(*associated_key_array)
791
+ end
792
+ ds.from_self
793
+ end
794
+ end
795
+ end
796
+
797
+ # Whether the placeholder loader can be used to load the association.
798
+ def use_placeholder_loader?
799
+ !self[:instance_specific] && !self[:eager_graph]
800
+ end
801
+ end
802
+
803
+ class ManyToOneAssociationReflection < AssociationReflection
804
+ ASSOCIATION_TYPES[:many_to_one] = self
805
+
806
+ # many_to_one associations can only have associated objects if none of
807
+ # the :keys options have a nil value.
808
+ def can_have_associated_objects?(obj)
809
+ !self[:keys].any?{|k| obj.get_column_value(k).nil?}
810
+ end
811
+
812
+ # Whether the dataset needs a primary key to function, false for many_to_one associations.
813
+ def dataset_need_primary_key?
814
+ false
815
+ end
816
+
817
+ # Default foreign key name symbol for foreign key in current model's table that points to
818
+ # the given association's table's primary key.
819
+ def default_key
820
+ :"#{self[:name]}_id"
821
+ end
822
+
823
+ # Whether to eagerly graph a lazy dataset, true for many_to_one associations
824
+ # only if the key is nil.
825
+ def eager_graph_lazy_dataset?
826
+ self[:key].nil?
827
+ end
828
+
829
+ # many_to_one associations don't need an eager_graph limit strategy
830
+ def eager_graph_limit_strategy(_)
831
+ nil
832
+ end
833
+
834
+ # many_to_one associations don't need an eager limit strategy
835
+ def eager_limit_strategy
836
+ nil
837
+ end
838
+
839
+ # many_to_one associations don't need a filter by associations limit strategy
840
+ def filter_by_associations_limit_strategy
841
+ nil
842
+ end
843
+
844
+ FINALIZE_SETTINGS = superclass::FINALIZE_SETTINGS.merge(
845
+ :primary_key=>:primary_key,
846
+ :primary_keys=>:primary_keys,
847
+ :primary_key_method=>:primary_key_method,
848
+ :primary_key_methods=>:primary_key_methods,
849
+ :qualified_primary_key=>:qualified_primary_key,
850
+ :reciprocal_type=>:reciprocal_type
851
+ ).freeze
852
+ def finalize_settings
853
+ FINALIZE_SETTINGS
854
+ end
855
+
856
+ # The expression to use on the left hand side of the IN lookup when eager loading
857
+ def predicate_key
858
+ cached_fetch(:predicate_key){qualified_primary_key}
859
+ end
860
+
861
+ # The column(s) in the associated table that the key in the current table references (either a symbol or an array).
862
+ def primary_key
863
+ cached_fetch(:primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")}
864
+ end
865
+
866
+ # The columns in the associated table that the key in the current table references (always an array).
867
+ def primary_keys
868
+ cached_fetch(:primary_keys){Array(primary_key)}
869
+ end
870
+ alias associated_object_keys primary_keys
871
+
872
+ # The method symbol or array of method symbols to call on the associated object
873
+ # to get the value to use for the foreign keys.
874
+ def primary_key_method
875
+ cached_fetch(:primary_key_method){primary_key}
876
+ end
877
+
878
+ # The array of method symbols to call on the associated object
879
+ # to get the value to use for the foreign keys.
880
+ def primary_key_methods
881
+ cached_fetch(:primary_key_methods){Array(primary_key_method)}
882
+ end
883
+
884
+ # #primary_key qualified by the associated table
885
+ def qualified_primary_key
886
+ cached_fetch(:qualified_primary_key){self[:qualify] == false ? primary_key : qualify_assoc(primary_key)}
887
+ end
888
+
889
+ # True only if the reciprocal is a one_to_many association.
890
+ def reciprocal_array?
891
+ !set_reciprocal_to_self?
892
+ end
893
+
894
+ # Whether this association returns an array of objects instead of a single object,
895
+ # false for a many_to_one association.
896
+ def returns_array?
897
+ false
898
+ end
899
+
900
+ # True only if the reciprocal is a one_to_one association.
901
+ def set_reciprocal_to_self?
902
+ reciprocal
903
+ reciprocal_type == :one_to_one
904
+ end
905
+
906
+ private
907
+
908
+ # Reciprocals of many_to_one associations could be either one_to_many or one_to_one,
909
+ # and which is not known in advance.
910
+ def ambiguous_reciprocal_type?
911
+ true
912
+ end
913
+
914
+ def filter_by_associations_conditions_associated_keys
915
+ qualify(associated_class.table_name, primary_keys)
916
+ end
917
+
918
+ def filter_by_associations_conditions_key
919
+ qualify(self[:model].table_name, self[:key_column])
920
+ end
921
+
922
+ # many_to_one associations do not need to be limited to a single row if they
923
+ # explicitly do not have a key.
924
+ def limit_to_single_row?
925
+ super && self[:key]
926
+ end
927
+
928
+ def predicate_key_methods
929
+ self[:keys]
930
+ end
931
+
932
+ # The reciprocal type of a many_to_one association is either
933
+ # a one_to_many or a one_to_one association.
934
+ def possible_reciprocal_types
935
+ [:one_to_many, :one_to_one]
936
+ end
937
+
938
+ # Whether the given association reflection is possible reciprocal
939
+ def reciprocal_association?(assoc_reflect)
940
+ super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key
941
+ end
942
+
943
+ # The reciprocal type of a many_to_one association is either
944
+ # a one_to_many or a one_to_one association, look in the associated class
945
+ # to try to figure out which.
946
+ def reciprocal_type
947
+ cached_fetch(:reciprocal_type) do
948
+ possible_recips = []
949
+
950
+ associated_class.all_association_reflections.each do |assoc_reflect|
951
+ if reciprocal_association?(assoc_reflect)
952
+ possible_recips << assoc_reflect
953
+ end
954
+ end
955
+
956
+ if possible_recips.length == 1
957
+ possible_recips.first[:type]
958
+ else
959
+ possible_reciprocal_types
960
+ end
961
+ end
962
+ end
963
+ end
964
+
965
+ class OneToManyAssociationReflection < AssociationReflection
966
+ ASSOCIATION_TYPES[:one_to_many] = self
967
+
968
+ # Support a correlated subquery limit strategy when using eager_graph.
969
+ def apply_eager_graph_limit_strategy(strategy, ds)
970
+ case strategy
971
+ when :correlated_subquery
972
+ apply_correlated_subquery_limit_strategy(ds)
973
+ else
974
+ super
975
+ end
976
+ end
977
+
978
+ # The keys in the associated model's table related to this association
979
+ def associated_object_keys
980
+ self[:keys]
981
+ end
982
+
983
+ # one_to_many associations can only have associated objects if none of
984
+ # the :keys options have a nil value.
985
+ def can_have_associated_objects?(obj)
986
+ !self[:primary_keys].any?{|k| obj.get_column_value(k).nil?}
987
+ end
988
+
989
+ # one_to_many and one_to_one associations can be clones
990
+ def cloneable?(ref)
991
+ ref[:type] == :one_to_many || ref[:type] == :one_to_one
992
+ end
993
+
994
+ # Default foreign key name symbol for key in associated table that points to
995
+ # current table's primary key.
996
+ def default_key
997
+ :"#{underscore(demodulize(self[:model].name))}_id"
998
+ end
999
+
1000
+ FINALIZE_SETTINGS = superclass::FINALIZE_SETTINGS.merge(
1001
+ :qualified_primary_key=>:qualified_primary_key
1002
+ ).freeze
1003
+ def finalize_settings
1004
+ FINALIZE_SETTINGS
1005
+ end
1006
+
1007
+ # Handle silent failure of add/remove methods if raise_on_save_failure is false.
1008
+ def handle_silent_modification_failure?
1009
+ self[:raise_on_save_failure] == false
1010
+ end
1011
+
1012
+ # The hash key to use for the eager loading predicate (left side of IN (1, 2, 3))
1013
+ def predicate_key
1014
+ cached_fetch(:predicate_key){qualify_assoc(self[:key])}
1015
+ end
1016
+ alias qualified_key predicate_key
1017
+
1018
+ # The column in the current table that the key in the associated table references.
1019
+ def primary_key
1020
+ self[:primary_key]
1021
+ end
1022
+
1023
+ # #primary_key qualified by the current table
1024
+ def qualified_primary_key
1025
+ cached_fetch(:qualified_primary_key){qualify_cur(primary_key)}
1026
+ end
1027
+
1028
+ # Whether the reciprocal of this association returns an array of objects instead of a single object,
1029
+ # false for a one_to_many association.
1030
+ def reciprocal_array?
1031
+ false
1032
+ end
1033
+
1034
+ # Destroying one_to_many associated objects automatically deletes the foreign key.
1035
+ def remove_before_destroy?
1036
+ false
1037
+ end
1038
+
1039
+ # The one_to_many association needs to check that an object to be removed already is associated.
1040
+ def remove_should_check_existing?
1041
+ true
1042
+ end
1043
+
1044
+ # One to many associations set the reciprocal to self when loading associated records.
1045
+ def set_reciprocal_to_self?
1046
+ true
1047
+ end
1048
+
1049
+ private
1050
+
1051
+ # Use a correlated subquery to limit the dataset. Note that this will not
1052
+ # work correctly if the associated dataset uses qualified identifers in the WHERE clause,
1053
+ # as they would reference the containing query instead of the subquery.
1054
+ def apply_correlated_subquery_limit_strategy(ds)
1055
+ table = ds.first_source_table
1056
+ table_alias = ds.first_source_alias
1057
+ primary_key = associated_class.primary_key
1058
+ key = self[:key]
1059
+ cs_alias = :t1
1060
+ cs = associated_dataset.
1061
+ from(Sequel.as(table, :t1)).
1062
+ select(*qualify(cs_alias, primary_key)).
1063
+ where(Array(qualify(cs_alias, key)).zip(Array(qualify(table_alias, key)))).
1064
+ limit(*limit_and_offset)
1065
+ ds.where(qualify(table_alias, primary_key)=>cs)
1066
+ end
1067
+
1068
+ # Support correlated subquery strategy when filtering by limited associations.
1069
+ def apply_filter_by_associations_limit_strategy(ds)
1070
+ case filter_by_associations_limit_strategy
1071
+ when :correlated_subquery
1072
+ apply_correlated_subquery_limit_strategy(ds)
1073
+ else
1074
+ super
1075
+ end
1076
+ end
1077
+
1078
+ def filter_by_associations_conditions_associated_keys
1079
+ qualify(associated_class.table_name, self[:keys])
1080
+ end
1081
+
1082
+ def filter_by_associations_conditions_key
1083
+ qualify(self[:model].table_name, self[:primary_key_column])
1084
+ end
1085
+
1086
+ def filter_by_associations_limit_alias_key
1087
+ Array(filter_by_associations_limit_key)
1088
+ end
1089
+
1090
+ def filter_by_associations_limit_aliases
1091
+ filter_by_associations_limit_alias_key.map(&:column)
1092
+ end
1093
+
1094
+ def filter_by_associations_limit_key
1095
+ qualify(associated_class.table_name, associated_class.primary_key)
1096
+ end
1097
+
1098
+ def predicate_key_methods
1099
+ self[:primary_keys]
1100
+ end
1101
+
1102
+ def reciprocal_association?(assoc_reflect)
1103
+ super && self[:keys] == assoc_reflect[:keys] && primary_key == assoc_reflect.primary_key
1104
+ end
1105
+
1106
+ # The reciprocal type of a one_to_many association is a many_to_one association.
1107
+ def reciprocal_type
1108
+ :many_to_one
1109
+ end
1110
+
1111
+ # Support automatic use of correlated subqueries if :ruby option is best available option,
1112
+ # the database supports them, and either the associated class has a non-composite primary key
1113
+ # or the database supports multiple columns in IN.
1114
+ def true_eager_graph_limit_strategy
1115
+ r = super
1116
+ ds = associated_dataset
1117
+ if r == :ruby && ds.supports_limits_in_correlated_subqueries? && (Array(associated_class.primary_key).length == 1 || ds.supports_multiple_column_in?) && (!offset || ds.supports_offsets_in_correlated_subqueries?)
1118
+ :correlated_subquery
1119
+ else
1120
+ r
1121
+ end
1122
+ end
1123
+ end
1124
+
1125
+ # Methods that turn an association that returns multiple objects into an association that
1126
+ # returns a single object.
1127
+ module SingularAssociationReflection
1128
+ # Singular associations do not assign singular if they are using the ruby eager limit strategy
1129
+ # and have a slice range, since they need to store the array of associated objects in order to
1130
+ # pick the correct one with an offset.
1131
+ def assign_singular?
1132
+ super && (eager_limit_strategy != :ruby || !slice_range)
1133
+ end
1134
+
1135
+ # Add conditions when filtering by singular associations with orders, since the
1136
+ # underlying relationship is probably not one-to-one.
1137
+ def filter_by_associations_add_conditions?
1138
+ super || self[:order] || self[:eager_limit_strategy] || self[:filter_limit_strategy]
1139
+ end
1140
+
1141
+ # Make sure singular associations always have 1 as the limit
1142
+ def limit_and_offset
1143
+ r = super
1144
+ if r.first == 1
1145
+ r
1146
+ else
1147
+ [1, r[1]]
1148
+ end
1149
+ end
1150
+
1151
+ # Singular associations always return a single object, not an array.
1152
+ def returns_array?
1153
+ false
1154
+ end
1155
+
1156
+ private
1157
+
1158
+ # Only use a eager limit strategy by default if there is an offset or an order.
1159
+ def default_eager_limit_strategy
1160
+ super if self[:order] || offset
1161
+ end
1162
+
1163
+ # Use a strategy for filtering by associations if there is an order or an offset,
1164
+ # or a specific limiting strategy has been specified.
1165
+ def filter_by_associations_limit_strategy
1166
+ super if self[:order] || offset || self[:eager_limit_strategy] || self[:filter_limit_strategy]
1167
+ end
1168
+
1169
+ # Use the DISTINCT ON eager limit strategy for true if the database supports it.
1170
+ def true_eager_graph_limit_strategy
1171
+ if associated_class.dataset.supports_ordered_distinct_on? && !offset
1172
+ :distinct_on
1173
+ else
1174
+ super
1175
+ end
1176
+ end
1177
+ end
1178
+
1179
+ class OneToOneAssociationReflection < OneToManyAssociationReflection
1180
+ ASSOCIATION_TYPES[:one_to_one] = self
1181
+ include SingularAssociationReflection
1182
+ end
1183
+
1184
+ class ManyToManyAssociationReflection < AssociationReflection
1185
+ ASSOCIATION_TYPES[:many_to_many] = self
1186
+
1187
+ # The alias to use for the associated key when eagerly loading
1188
+ def associated_key_alias
1189
+ self[:left_key_alias]
1190
+ end
1191
+
1192
+ # Array of associated keys used when eagerly loading.
1193
+ def associated_key_array
1194
+ cached_fetch(:associated_key_array) do
1195
+ if self[:uses_left_composite_keys]
1196
+ associated_key_alias.zip(predicate_keys).map{|a, k| SQL::AliasedExpression.new(k, a)}
1197
+ else
1198
+ [SQL::AliasedExpression.new(predicate_key, associated_key_alias)]
1199
+ end
1200
+ end
1201
+ end
1202
+
1203
+ # The column to use for the associated key when eagerly loading
1204
+ def associated_key_column
1205
+ self[:left_key]
1206
+ end
1207
+
1208
+ # Alias of right_primary_keys
1209
+ def associated_object_keys
1210
+ right_primary_keys
1211
+ end
1212
+
1213
+ # many_to_many associations can only have associated objects if none of
1214
+ # the :left_primary_keys options have a nil value.
1215
+ def can_have_associated_objects?(obj)
1216
+ !self[:left_primary_keys].any?{|k| obj.get_column_value(k).nil?}
1217
+ end
1218
+
1219
+ # one_through_one and many_to_many associations can be clones
1220
+ def cloneable?(ref)
1221
+ ref[:type] == :many_to_many || ref[:type] == :one_through_one
1222
+ end
1223
+
1224
+ # The default associated key alias(es) to use when eager loading
1225
+ # associations via eager.
1226
+ def default_associated_key_alias
1227
+ self[:uses_left_composite_keys] ? (0...self[:left_keys].length).map{|i| :"x_foreign_key_#{i}_x"} : :x_foreign_key_x
1228
+ end
1229
+
1230
+ # The default eager loader used if the user doesn't override it. Extracted
1231
+ # to a method so the code can be shared with the many_through_many plugin.
1232
+ def default_eager_loader(eo)
1233
+ h = eo[:id_map]
1234
+ assign_singular = assign_singular?
1235
+ delete_rn = delete_row_number_column
1236
+ uses_lcks = self[:uses_left_composite_keys]
1237
+ left_key_alias = self[:left_key_alias]
1238
+ name = self[:name]
1239
+
1240
+ self[:model].eager_load_results(self, eo) do |assoc_record|
1241
+ assoc_record.values.delete(delete_rn) if delete_rn
1242
+ hash_key = if uses_lcks
1243
+ left_key_alias.map{|k| assoc_record.values.delete(k)}
1244
+ else
1245
+ assoc_record.values.delete(left_key_alias)
1246
+ end
1247
+ next unless objects = h[hash_key]
1248
+ if assign_singular
1249
+ objects.each do |object|
1250
+ object.associations[name] ||= assoc_record
1251
+ end
1252
+ else
1253
+ objects.each do |object|
1254
+ object.associations[name].push(assoc_record)
1255
+ end
1256
+ end
1257
+ end
1258
+ end
1259
+
1260
+ # Default name symbol for the join table.
1261
+ def default_join_table
1262
+ [self[:class_name], self[:model].name].map{|i| underscore(pluralize(demodulize(i)))}.sort.join('_').to_sym
1263
+ end
1264
+
1265
+ # Default foreign key name symbol for key in join table that points to
1266
+ # current table's primary key (or :left_primary_key column).
1267
+ def default_left_key
1268
+ :"#{underscore(demodulize(self[:model].name))}_id"
1269
+ end
1270
+
1271
+ # Default foreign key name symbol for foreign key in join table that points to
1272
+ # the association's table's primary key (or :right_primary_key column).
1273
+ def default_right_key
1274
+ :"#{singularize(self[:name])}_id"
1275
+ end
1276
+
1277
+ FINALIZE_SETTINGS = superclass::FINALIZE_SETTINGS.merge(
1278
+ :associated_key_array=>:associated_key_array,
1279
+ :qualified_right_key=>:qualified_right_key,
1280
+ :join_table_source=>:join_table_source,
1281
+ :join_table_alias=>:join_table_alias,
1282
+ :qualified_right_primary_key=>:qualified_right_primary_key,
1283
+ :right_primary_key=>:right_primary_key,
1284
+ :right_primary_keys=>:right_primary_keys,
1285
+ :right_primary_key_method=>:right_primary_key_method,
1286
+ :right_primary_key_methods=>:right_primary_key_methods,
1287
+ :select=>:select
1288
+ ).freeze
1289
+ def finalize_settings
1290
+ FINALIZE_SETTINGS
1291
+ end
1292
+
1293
+ # The hash key to use for the eager loading predicate (left side of IN (1, 2, 3)).
1294
+ # The left key qualified by the join table.
1295
+ def predicate_key
1296
+ cached_fetch(:predicate_key){qualify(join_table_alias, self[:left_key])}
1297
+ end
1298
+ alias qualified_left_key predicate_key
1299
+
1300
+ # The right key qualified by the join table.
1301
+ def qualified_right_key
1302
+ cached_fetch(:qualified_right_key){qualify(join_table_alias, self[:right_key])}
1303
+ end
1304
+
1305
+ # many_to_many associations need to select a key in an associated table to eagerly load
1306
+ def eager_loading_use_associated_key?
1307
+ true
1308
+ end
1309
+
1310
+ # The source of the join table. This is the join table itself, unless it
1311
+ # is aliased, in which case it is the unaliased part.
1312
+ def join_table_source
1313
+ cached_fetch(:join_table_source){split_join_table_alias[0]}
1314
+ end
1315
+
1316
+ # The join table itself, unless it is aliased, in which case this
1317
+ # is the alias.
1318
+ def join_table_alias
1319
+ cached_fetch(:join_table_alias) do
1320
+ s, a = split_join_table_alias
1321
+ a || s
1322
+ end
1323
+ end
1324
+ alias associated_key_table join_table_alias
1325
+
1326
+ # Whether the associated object needs a primary key to be added/removed,
1327
+ # true for many_to_many associations.
1328
+ def need_associated_primary_key?
1329
+ true
1330
+ end
1331
+
1332
+ # #right_primary_key qualified by the associated table
1333
+ def qualified_right_primary_key
1334
+ cached_fetch(:qualified_right_primary_key){qualify_assoc(right_primary_key)}
1335
+ end
1336
+
1337
+ # The primary key column(s) to use in the associated table (can be symbol or array).
1338
+ def right_primary_key
1339
+ cached_fetch(:right_primary_key){associated_class.primary_key || raise(Error, "no primary key specified for #{associated_class.inspect}")}
1340
+ end
1341
+
1342
+ # The primary key columns to use in the associated table (always array).
1343
+ def right_primary_keys
1344
+ cached_fetch(:right_primary_keys){Array(right_primary_key)}
1345
+ end
1346
+
1347
+ # The method symbol or array of method symbols to call on the associated objects
1348
+ # to get the foreign key values for the join table.
1349
+ def right_primary_key_method
1350
+ cached_fetch(:right_primary_key_method){right_primary_key}
1351
+ end
1352
+
1353
+ # The array of method symbols to call on the associated objects
1354
+ # to get the foreign key values for the join table.
1355
+ def right_primary_key_methods
1356
+ cached_fetch(:right_primary_key_methods){Array(right_primary_key_method)}
1357
+ end
1358
+
1359
+ # The columns to select when loading the association, associated_class.table_name.* by default.
1360
+ def select
1361
+ cached_fetch(:select){default_select}
1362
+ end
1363
+
1364
+ private
1365
+
1366
+ def _associated_dataset
1367
+ super.inner_join(self[:join_table], self[:right_keys].zip(right_primary_keys), :qualify=>:deep)
1368
+ end
1369
+
1370
+ # The default selection for associations that require joins. These do not use the default
1371
+ # model selection unless all entries in the select are explicitly qualified identifiers, as
1372
+ # other it can include unqualified columns which would be made ambiguous by joining.
1373
+ def default_select
1374
+ if (sel = associated_class.dataset.opts[:select]) && sel.all?{|c| selection_is_qualified?(c)}
1375
+ sel
1376
+ else
1377
+ Sequel::SQL::ColumnAll.new(associated_class.table_name)
1378
+ end
1379
+ end
1380
+
1381
+ def filter_by_associations_conditions_associated_keys
1382
+ qualify(join_table_alias, self[:left_keys])
1383
+ end
1384
+
1385
+ def filter_by_associations_conditions_key
1386
+ qualify(self[:model].table_name, self[:left_primary_key_column])
1387
+ end
1388
+
1389
+ def filter_by_associations_limit_alias_key
1390
+ aliaz = 'a'
1391
+ filter_by_associations_limit_key.map{|c| c.as(Sequel.identifier(aliaz = aliaz.next))}
1392
+ end
1393
+
1394
+ def filter_by_associations_limit_aliases
1395
+ filter_by_associations_limit_alias_key.map(&:alias)
1396
+ end
1397
+
1398
+ def filter_by_associations_limit_key
1399
+ qualify(join_table_alias, self[:left_keys]) + Array(qualify(associated_class.table_name, associated_class.primary_key))
1400
+ end
1401
+
1402
+ def predicate_key_methods
1403
+ self[:left_primary_keys]
1404
+ end
1405
+
1406
+ def reciprocal_association?(assoc_reflect)
1407
+ super && assoc_reflect[:left_keys] == self[:right_keys] &&
1408
+ assoc_reflect[:right_keys] == self[:left_keys] &&
1409
+ assoc_reflect[:join_table] == self[:join_table] &&
1410
+ right_primary_keys == assoc_reflect[:left_primary_key_columns] &&
1411
+ self[:left_primary_key_columns] == assoc_reflect.right_primary_keys
1412
+ end
1413
+
1414
+ def reciprocal_type
1415
+ :many_to_many
1416
+ end
1417
+
1418
+ # Whether the given expression represents a qualified identifier. Used to determine if it is
1419
+ # OK to use directly when joining.
1420
+ def selection_is_qualified?(c)
1421
+ case c
1422
+ when Symbol
1423
+ Sequel.split_symbol(c)[0]
1424
+ when Sequel::SQL::QualifiedIdentifier
1425
+ true
1426
+ when Sequel::SQL::AliasedExpression
1427
+ selection_is_qualified?(c.expression)
1428
+ else
1429
+ false
1430
+ end
1431
+ end
1432
+
1433
+ # Split the join table into source and alias parts.
1434
+ def split_join_table_alias
1435
+ associated_class.dataset.split_alias(self[:join_table])
1436
+ end
1437
+ end
1438
+
1439
+ class OneThroughOneAssociationReflection < ManyToManyAssociationReflection
1440
+ ASSOCIATION_TYPES[:one_through_one] = self
1441
+ include SingularAssociationReflection
1442
+
1443
+ # one_through_one associations should not singularize the association name when
1444
+ # creating the foreign key.
1445
+ def default_right_key
1446
+ :"#{self[:name]}_id"
1447
+ end
1448
+
1449
+ # one_through_one associations have no reciprocals
1450
+ def reciprocal
1451
+ nil
1452
+ end
1453
+ end
1454
+
1455
+ # This module contains methods added to all association datasets
1456
+ module AssociationDatasetMethods
1457
+ # The model object that created the association dataset
1458
+ def model_object
1459
+ @opts[:model_object]
1460
+ end
1461
+
1462
+ # The association reflection related to the association dataset
1463
+ def association_reflection
1464
+ @opts[:association_reflection]
1465
+ end
1466
+
1467
+ private
1468
+
1469
+ def non_sql_option?(key)
1470
+ super || key == :model_object || key == :association_reflection
1471
+ end
1472
+ end
1473
+
1474
+ # Each kind of association adds a number of instance methods to the model class which
1475
+ # are specialized according to the association type and optional parameters
1476
+ # given in the definition. Example:
1477
+ #
1478
+ # class Project < Sequel::Model
1479
+ # many_to_one :portfolio
1480
+ # # or: one_to_one :portfolio
1481
+ # one_to_many :milestones
1482
+ # # or: many_to_many :milestones
1483
+ # end
1484
+ #
1485
+ # The project class now has the following instance methods:
1486
+ # portfolio :: Returns the associated portfolio.
1487
+ # portfolio=(obj) :: Sets the associated portfolio to the object,
1488
+ # but the change is not persisted until you save the record (for many_to_one associations).
1489
+ # portfolio_dataset :: Returns a dataset that would return the associated
1490
+ # portfolio, only useful in fairly specific circumstances.
1491
+ # milestones :: Returns an array of associated milestones
1492
+ # add_milestone(obj) :: Associates the passed milestone with this object.
1493
+ # remove_milestone(obj) :: Removes the association with the passed milestone.
1494
+ # remove_all_milestones :: Removes associations with all associated milestones.
1495
+ # milestones_dataset :: Returns a dataset that would return the associated
1496
+ # milestones, allowing for further filtering/limiting/etc.
1497
+ #
1498
+ # If you want to override the behavior of the add_/remove_/remove_all_/ methods
1499
+ # or the association setter method, use the :adder, :remover, :clearer, and/or :setter
1500
+ # options. These options override the default behavior.
1501
+ #
1502
+ # By default the classes for the associations are inferred from the association
1503
+ # name, so for example the Project#portfolio will return an instance of
1504
+ # Portfolio, and Project#milestones will return an array of Milestone
1505
+ # instances. You can use the :class option to change which class is used.
1506
+ #
1507
+ # Association definitions are also reflected by the class, e.g.:
1508
+ #
1509
+ # Project.associations
1510
+ # => [:portfolio, :milestones]
1511
+ # Project.association_reflection(:portfolio)
1512
+ # => #<Sequel::Model::Associations::ManyToOneAssociationReflection Project.many_to_one :portfolio>
1513
+ #
1514
+ # Associations should not have the same names as any of the columns in the
1515
+ # model's current table they reference. If you are dealing with an existing schema that
1516
+ # has a column named status, you can't name the association status, you'd
1517
+ # have to name it foo_status or something else. If you give an association the same name
1518
+ # as a column, you will probably end up with an association that doesn't work, or a SystemStackError.
1519
+ #
1520
+ # For a more in depth general overview, as well as a reference guide,
1521
+ # see the {Association Basics guide}[rdoc-ref:doc/association_basics.rdoc].
1522
+ # For examples of advanced usage, see the {Advanced Associations guide}[rdoc-ref:doc/advanced_associations.rdoc].
1523
+ module ClassMethods
1524
+ # All association reflections defined for this model (default: {}).
1525
+ attr_reader :association_reflections
1526
+
1527
+ # Hash with column symbol keys and arrays of many_to_one
1528
+ # association symbols that should be cleared when the column
1529
+ # value changes.
1530
+ attr_reader :autoreloading_associations
1531
+
1532
+ # Whether association metadata should be cached in the association reflection. If not cached, it will be computed
1533
+ # on demand. In general you only want to set this to false when using code reloading. When using code reloading,
1534
+ # setting this will make sure that if an associated class is removed or modified, this class will not have a reference to
1535
+ # the previous class.
1536
+ attr_accessor :cache_associations
1537
+
1538
+ # The default options to use for all associations. This hash is merged into the association reflection hash for
1539
+ # all association reflections.
1540
+ attr_accessor :default_association_options
1541
+
1542
+ # The default options to use for all associations of a given type. This is a hash keyed by association type
1543
+ # symbol. If there is a value for the association type symbol key, the resulting hash will be merged into the
1544
+ # association reflection hash for all association reflections of that type.
1545
+ attr_accessor :default_association_type_options
1546
+
1547
+ # The default :eager_limit_strategy option to use for limited or offset associations (default: true, causing Sequel
1548
+ # to use what it considers the most appropriate strategy).
1549
+ attr_accessor :default_eager_limit_strategy
1550
+
1551
+ # Array of all association reflections for this model class
1552
+ def all_association_reflections
1553
+ association_reflections.values
1554
+ end
1555
+
1556
+ # Associates a related model with the current model. The following types are
1557
+ # supported:
1558
+ #
1559
+ # :many_to_one :: Foreign key in current model's table points to
1560
+ # associated model's primary key. Each associated model object can
1561
+ # be associated with more than one current model objects. Each current
1562
+ # model object can be associated with only one associated model object.
1563
+ # :one_to_many :: Foreign key in associated model's table points to this
1564
+ # model's primary key. Each current model object can be associated with
1565
+ # more than one associated model objects. Each associated model object
1566
+ # can be associated with only one current model object.
1567
+ # :one_through_one :: Similar to many_to_many in terms of foreign keys, but only one object
1568
+ # is associated to the current object through the association.
1569
+ # Provides only getter methods, no setter or modification methods.
1570
+ # :one_to_one :: Similar to one_to_many in terms of foreign keys, but
1571
+ # only one object is associated to the current object through the
1572
+ # association. The methods created are similar to many_to_one, except
1573
+ # that the one_to_one setter method saves the passed object.
1574
+ # :many_to_many :: A join table is used that has a foreign key that points
1575
+ # to this model's primary key and a foreign key that points to the
1576
+ # associated model's primary key. Each current model object can be
1577
+ # associated with many associated model objects, and each associated
1578
+ # model object can be associated with many current model objects.
1579
+ #
1580
+ # The following options can be supplied:
1581
+ # === Multiple Types
1582
+ # :adder :: Proc used to define the private _add_* method for doing the database work
1583
+ # to associate the given object to the current object (*_to_many assocations).
1584
+ # :after_add :: Symbol, Proc, or array of both/either specifying a callback to call
1585
+ # after a new item is added to the association.
1586
+ # :after_load :: Symbol, Proc, or array of both/either specifying a callback to call
1587
+ # after the associated record(s) have been retrieved from the database.
1588
+ # :after_remove :: Symbol, Proc, or array of both/either specifying a callback to call
1589
+ # after an item is removed from the association.
1590
+ # :after_set :: Symbol, Proc, or array of both/either specifying a callback to call
1591
+ # after an item is set using the association setter method.
1592
+ # :allow_eager :: If set to false, you cannot load the association eagerly
1593
+ # via eager or eager_graph
1594
+ # :before_add :: Symbol, Proc, or array of both/either specifying a callback to call
1595
+ # before a new item is added to the association.
1596
+ # :before_remove :: Symbol, Proc, or array of both/either specifying a callback to call
1597
+ # before an item is removed from the association.
1598
+ # :before_set :: Symbol, Proc, or array of both/either specifying a callback to call
1599
+ # before an item is set using the association setter method.
1600
+ # :cartesian_product_number :: the number of joins completed by this association that could cause more
1601
+ # than one row for each row in the current table (default: 0 for
1602
+ # many_to_one, one_to_one, and one_through_one associations, 1
1603
+ # for one_to_many and many_to_many associations).
1604
+ # :class :: The associated class or its name as a string or symbol. If not
1605
+ # given, uses the association's name, which is camelized (and
1606
+ # singularized unless the type is :many_to_one, :one_to_one, or one_through_one). If this is specified
1607
+ # as a string or symbol, you must specify the full class name (e.g. "::SomeModule::MyModel").
1608
+ # :class_namespace :: If :class is given as a string or symbol, sets the default namespace in which to look for
1609
+ # the class. <tt>class: 'Foo', class_namespace: 'Bar'</tt> looks for <tt>::Bar::Foo</tt>.)
1610
+ # :clearer :: Proc used to define the private _remove_all_* method for doing the database work
1611
+ # to remove all objects associated to the current object (*_to_many assocations).
1612
+ # :clone :: Merge the current options and block into the options and block used in defining
1613
+ # the given association. Can be used to DRY up a bunch of similar associations that
1614
+ # all share the same options such as :class and :key, while changing the order and block used.
1615
+ # :conditions :: The conditions to use to filter the association, can be any argument passed to where.
1616
+ # This option is not respected when using eager_graph or association_join, unless it
1617
+ # is hash or array of two element arrays. Consider also specifying the :graph_block
1618
+ # option if the value for this option is not a hash or array of two element arrays
1619
+ # and you plan to use this association in eager_graph or association_join.
1620
+ # :dataset :: A proc that is used to define the method to get the base dataset to use (before the other
1621
+ # options are applied). If the proc accepts an argument, it is passed the related
1622
+ # association reflection. It is a best practice to always have the dataset accept an argument
1623
+ # and use the argument to return the appropriate dataset.
1624
+ # :distinct :: Use the DISTINCT clause when selecting associating object, both when
1625
+ # lazy loading and eager loading via .eager (but not when using .eager_graph).
1626
+ # :eager :: The associations to eagerly load via +eager+ when loading the associated object(s).
1627
+ # :eager_block :: If given, use the block instead of the default block when
1628
+ # eagerly loading. To not use a block when eager loading (when one is used normally),
1629
+ # set to nil.
1630
+ # :eager_graph :: The associations to eagerly load via +eager_graph+ when loading the associated object(s).
1631
+ # many_to_many associations with this option cannot be eagerly loaded via +eager+.
1632
+ # :eager_grapher :: A proc to use to implement eager loading via +eager_graph+, overriding the default.
1633
+ # Takes an options hash with at least the entries :self (the receiver of the eager_graph call),
1634
+ # :table_alias (the alias to use for table to graph into the association), and :implicit_qualifier
1635
+ # (the alias that was used for the current table).
1636
+ # Should return a copy of the dataset with the association graphed into it.
1637
+ # :eager_limit_strategy :: Determines the strategy used for enforcing limits and offsets when eager loading
1638
+ # associations via the +eager+ method.
1639
+ # :eager_loader :: A proc to use to implement eager loading, overriding the default. Takes a single hash argument,
1640
+ # with at least the keys: :rows, which is an array of current model instances, :associations,
1641
+ # which is a hash of dependent associations, :self, which is the dataset doing the eager loading,
1642
+ # :eager_block, which is a dynamic callback that should be called with the dataset, and :id_map,
1643
+ # which is a mapping of key values to arrays of current model instances. In the proc, the
1644
+ # associated records should be queried from the database and the associations cache for each
1645
+ # record should be populated.
1646
+ # :eager_loader_key :: A symbol for the key column to use to populate the key_hash
1647
+ # for the eager loader. Can be set to nil to not populate the key_hash.
1648
+ # :extend :: A module or array of modules to extend the dataset with.
1649
+ # :filter_limit_strategy :: Determines the strategy used for enforcing limits and offsets when filtering by
1650
+ # limited associations. Possible options are :window_function, :distinct_on, or
1651
+ # :correlated_subquery depending on association type and database type.
1652
+ # :graph_alias_base :: The base name to use for the table alias when eager graphing. Defaults to the name
1653
+ # of the association. If the alias name has already been used in the query, Sequel will create
1654
+ # a unique alias by appending a numeric suffix (e.g. alias_0, alias_1, ...) until the alias is
1655
+ # unique.
1656
+ # :graph_block :: The block to pass to join_table when eagerly loading
1657
+ # the association via +eager_graph+.
1658
+ # :graph_conditions :: The additional conditions to use on the SQL join when eagerly loading
1659
+ # the association via +eager_graph+. Should be a hash or an array of two element arrays. If not
1660
+ # specified, the :conditions option is used if it is a hash or array of two element arrays.
1661
+ # :graph_join_type :: The type of SQL join to use when eagerly loading the association via
1662
+ # eager_graph. Defaults to :left_outer.
1663
+ # :graph_only_conditions :: The conditions to use on the SQL join when eagerly loading
1664
+ # the association via +eager_graph+, instead of the default conditions specified by the
1665
+ # foreign/primary keys. This option causes the :graph_conditions option to be ignored.
1666
+ # :graph_order :: Over the order to use when using eager_graph, instead of the default order. This should be used
1667
+ # in the case where :order contains an identifier qualified by the table's name, which may not match
1668
+ # the alias used when eager graphing. By setting this to the unqualified identifier, it will be
1669
+ # automatically qualified when using eager_graph.
1670
+ # :graph_select :: A column or array of columns to select from the associated table
1671
+ # when eagerly loading the association via +eager_graph+. Defaults to all
1672
+ # columns in the associated table.
1673
+ # :limit :: Limit the number of records to the provided value. Use
1674
+ # an array with two elements for the value to specify a
1675
+ # limit (first element) and an offset (second element).
1676
+ # :methods_module :: The module that methods the association creates will be placed into. Defaults
1677
+ # to the module containing the model's columns.
1678
+ # :order :: the column(s) by which to order the association dataset. Can be a
1679
+ # singular column symbol or an array of column symbols.
1680
+ # :order_eager_graph :: Whether to add the association's order to the graphed dataset's order when graphing
1681
+ # via +eager_graph+. Defaults to true, so set to false to disable.
1682
+ # :read_only :: Do not add a setter method (for many_to_one or one_to_one associations),
1683
+ # or add_/remove_/remove_all_ methods (for one_to_many and many_to_many associations).
1684
+ # :reciprocal :: the symbol name of the reciprocal association,
1685
+ # if it exists. By default, Sequel will try to determine it by looking at the
1686
+ # associated model's assocations for a association that matches
1687
+ # the current association's key(s). Set to nil to not use a reciprocal.
1688
+ # :remover :: Proc used to define the private _remove_* method for doing the database work
1689
+ # to remove the association between the given object and the current object (*_to_many assocations).
1690
+ # :select :: the columns to select. Defaults to the associated class's table_name.* in an association
1691
+ # that uses joins, which means it doesn't include the attributes from the
1692
+ # join table. If you want to include the join table attributes, you can
1693
+ # use this option, but beware that the join table attributes can clash with
1694
+ # attributes from the model table, so you should alias any attributes that have
1695
+ # the same name in both the join table and the associated table.
1696
+ # :setter :: Proc used to define the private _*= method for doing the work to setup the assocation
1697
+ # between the given object and the current object (*_to_one associations).
1698
+ # :subqueries_per_union :: The number of subqueries to use in each UNION query, for eager
1699
+ # loading limited associations using the default :union strategy.
1700
+ # :validate :: Set to false to not validate when implicitly saving any associated object.
1701
+ # === :many_to_one
1702
+ # :key :: foreign key in current model's table that references
1703
+ # associated model's primary key, as a symbol. Defaults to :"#{name}_id". Can use an
1704
+ # array of symbols for a composite key association.
1705
+ # :key_column :: Similar to, and usually identical to, :key, but :key refers to the model method
1706
+ # to call, where :key_column refers to the underlying column. Should only be
1707
+ # used if the model method differs from the foreign key column, in conjunction
1708
+ # with defining a model alias method for the key column.
1709
+ # :primary_key :: column in the associated table that :key option references, as a symbol.
1710
+ # Defaults to the primary key of the associated table. Can use an
1711
+ # array of symbols for a composite key association.
1712
+ # :primary_key_method :: the method symbol or array of method symbols to call on the associated
1713
+ # object to get the foreign key values. Defaults to :primary_key option.
1714
+ # :qualify :: Whether to use qualified primary keys when loading the association. The default
1715
+ # is true, so you must set to false to not qualify. Qualification rarely causes
1716
+ # problems, but it's necessary to disable in some cases, such as when you are doing
1717
+ # a JOIN USING operation on the column on Oracle.
1718
+ # === :one_to_many and :one_to_one
1719
+ # :key :: foreign key in associated model's table that references
1720
+ # current model's primary key, as a symbol. Defaults to
1721
+ # :"#{self.name.underscore}_id". Can use an
1722
+ # array of symbols for a composite key association.
1723
+ # :key_method :: the method symbol or array of method symbols to call on the associated
1724
+ # object to get the foreign key values. Defaults to :key option.
1725
+ # :primary_key :: column in the current table that :key option references, as a symbol.
1726
+ # Defaults to primary key of the current table. Can use an
1727
+ # array of symbols for a composite key association.
1728
+ # :primary_key_column :: Similar to, and usually identical to, :primary_key, but :primary_key refers
1729
+ # to the model method call, where :primary_key_column refers to the underlying column.
1730
+ # Should only be used if the model method differs from the primary key column, in
1731
+ # conjunction with defining a model alias method for the primary key column.
1732
+ # :raise_on_save_failure :: Do not raise exceptions for hook or validation failures when saving associated
1733
+ # objects in the add/remove methods (return nil instead) [one_to_many only].
1734
+ # === :many_to_many and :one_through_one
1735
+ # :graph_join_table_block :: The block to pass to +join_table+ for
1736
+ # the join table when eagerly loading the association via +eager_graph+.
1737
+ # :graph_join_table_conditions :: The additional conditions to use on the SQL join for
1738
+ # the join table when eagerly loading the association via +eager_graph+.
1739
+ # Should be a hash or an array of two element arrays.
1740
+ # :graph_join_table_join_type :: The type of SQL join to use for the join table when eagerly
1741
+ # loading the association via +eager_graph+. Defaults to the
1742
+ # :graph_join_type option or :left_outer.
1743
+ # :graph_join_table_only_conditions :: The conditions to use on the SQL join for the join
1744
+ # table when eagerly loading the association via +eager_graph+,
1745
+ # instead of the default conditions specified by the
1746
+ # foreign/primary keys. This option causes the
1747
+ # :graph_join_table_conditions option to be ignored.
1748
+ # :join_table :: name of table that includes the foreign keys to both
1749
+ # the current model and the associated model, as a symbol. Defaults to the name
1750
+ # of current model and name of associated model, pluralized,
1751
+ # underscored, sorted, and joined with '_'.
1752
+ # :join_table_block :: proc that can be used to modify the dataset used in the add/remove/remove_all
1753
+ # methods. Should accept a dataset argument and return a modified dataset if present.
1754
+ # :left_key :: foreign key in join table that points to current model's
1755
+ # primary key, as a symbol. Defaults to :"#{self.name.underscore}_id".
1756
+ # Can use an array of symbols for a composite key association.
1757
+ # :left_primary_key :: column in current table that :left_key points to, as a symbol.
1758
+ # Defaults to primary key of current table. Can use an
1759
+ # array of symbols for a composite key association.
1760
+ # :left_primary_key_column :: Similar to, and usually identical to, :left_primary_key, but :left_primary_key refers to
1761
+ # the model method to call, where :left_primary_key_column refers to the underlying column. Should only
1762
+ # be used if the model method differs from the left primary key column, in conjunction
1763
+ # with defining a model alias method for the left primary key column.
1764
+ # :right_key :: foreign key in join table that points to associated
1765
+ # model's primary key, as a symbol. Defaults to :"#{name.to_s.singularize}_id".
1766
+ # Can use an array of symbols for a composite key association.
1767
+ # :right_primary_key :: column in associated table that :right_key points to, as a symbol.
1768
+ # Defaults to primary key of the associated table. Can use an
1769
+ # array of symbols for a composite key association.
1770
+ # :right_primary_key_method :: the method symbol or array of method symbols to call on the associated
1771
+ # object to get the foreign key values for the join table.
1772
+ # Defaults to :right_primary_key option.
1773
+ # :uniq :: Adds a after_load callback that makes the array of objects unique.
1774
+ def associate(type, name, opts = OPTS, &block)
1775
+ raise(Error, 'invalid association type') unless assoc_class = Sequel.synchronize{ASSOCIATION_TYPES[type]}
1776
+ raise(Error, 'Model.associate name argument must be a symbol') unless name.is_a?(Symbol)
1777
+
1778
+ # dup early so we don't modify opts
1779
+ orig_opts = opts.dup
1780
+
1781
+ if opts[:clone]
1782
+ cloned_assoc = association_reflection(opts[:clone])
1783
+ orig_opts = cloned_assoc[:orig_opts].merge(orig_opts)
1784
+ end
1785
+
1786
+ opts = Hash[default_association_options]
1787
+ if type_options = default_association_type_options[type]
1788
+ opts.merge!(type_options)
1789
+ end
1790
+ opts.merge!(orig_opts)
1791
+ opts.merge!(:type => type, :name => name, :cache=>({} if cache_associations), :model => self)
1792
+
1793
+ opts[:block] = block if block
1794
+ if !opts.has_key?(:instance_specific) && (block || orig_opts[:block] || orig_opts[:dataset])
1795
+ # It's possible the association is instance specific, in that it depends on
1796
+ # values other than the foreign key value. This needs to be checked for
1797
+ # in certain places to disable optimizations.
1798
+ opts[:instance_specific] = true
1799
+ end
1800
+ opts = assoc_class.new.merge!(opts)
1801
+
1802
+ if opts[:clone] && !opts.cloneable?(cloned_assoc)
1803
+ raise(Error, "cannot clone an association to an association of different type (association #{name} with type #{type} cloning #{opts[:clone]} with type #{cloned_assoc[:type]})")
1804
+ end
1805
+
1806
+ opts[:eager_block] = opts[:block] unless opts.include?(:eager_block)
1807
+ opts[:graph_join_type] ||= :left_outer
1808
+ opts[:order_eager_graph] = true unless opts.include?(:order_eager_graph)
1809
+ conds = opts[:conditions]
1810
+ opts[:graph_alias_base] ||= name
1811
+ opts[:graph_conditions] = conds if !opts.include?(:graph_conditions) and Sequel.condition_specifier?(conds)
1812
+ opts[:graph_conditions] = opts.fetch(:graph_conditions, []).to_a
1813
+ opts[:graph_select] = Array(opts[:graph_select]) if opts[:graph_select]
1814
+ [:before_add, :before_remove, :after_add, :after_remove, :after_load, :before_set, :after_set].each do |cb_type|
1815
+ opts[cb_type] = Array(opts[cb_type]) if opts[cb_type]
1816
+ end
1817
+
1818
+ if opts[:extend]
1819
+ opts[:extend] = Array(opts[:extend])
1820
+ opts[:reverse_extend] = opts[:extend].reverse
1821
+ end
1822
+
1823
+ late_binding_class_option(opts, opts.returns_array? ? singularize(name) : name)
1824
+
1825
+ # Remove :class entry if it exists and is nil, to work with cached_fetch
1826
+ opts.delete(:class) unless opts[:class]
1827
+
1828
+ send(:"def_#{type}", opts)
1829
+ def_association_instance_methods(opts)
1830
+
1831
+ orig_opts.delete(:clone)
1832
+ opts[:orig_class] = orig_opts[:class] || orig_opts[:class_name]
1833
+ orig_opts.merge!(:class_name=>opts[:class_name], :class=>opts[:class], :block=>opts[:block])
1834
+ opts[:orig_opts] = orig_opts
1835
+ # don't add to association_reflections until we are sure there are no errors
1836
+ association_reflections[name] = opts
1837
+ end
1838
+
1839
+ # The association reflection hash for the association of the given name.
1840
+ def association_reflection(name)
1841
+ association_reflections[name]
1842
+ end
1843
+
1844
+ # Array of association name symbols
1845
+ def associations
1846
+ association_reflections.keys
1847
+ end
1848
+
1849
+ # Eager load the association with the given eager loader options.
1850
+ def eager_load_results(opts, eo, &block)
1851
+ opts.eager_load_results(eo, &block)
1852
+ end
1853
+
1854
+ # Freeze association related metadata when freezing model class.
1855
+ def freeze
1856
+ @association_reflections.freeze.each_value(&:freeze)
1857
+ @autoreloading_associations.freeze.each_value(&:freeze)
1858
+ @default_association_options.freeze
1859
+ @default_association_type_options.freeze
1860
+ @default_association_type_options.each_value(&:freeze)
1861
+
1862
+ super
1863
+ end
1864
+
1865
+ # Finalize all associations such that values that are looked up
1866
+ # dynamically in associated classes are set statically.
1867
+ # As this modifies the associations, it must be done before
1868
+ # calling freeze.
1869
+ def finalize_associations
1870
+ @association_reflections.each_value(&:finalize)
1871
+ end
1872
+
1873
+ # Shortcut for adding a many_to_many association, see #associate
1874
+ def many_to_many(name, opts=OPTS, &block)
1875
+ associate(:many_to_many, name, opts, &block)
1876
+ end
1877
+
1878
+ # Shortcut for adding a many_to_one association, see #associate
1879
+ def many_to_one(name, opts=OPTS, &block)
1880
+ associate(:many_to_one, name, opts, &block)
1881
+ end
1882
+
1883
+ # Shortcut for adding a one_through_one association, see #associate
1884
+ def one_through_one(name, opts=OPTS, &block)
1885
+ associate(:one_through_one, name, opts, &block)
1886
+ end
1887
+
1888
+ # Shortcut for adding a one_to_many association, see #associate
1889
+ def one_to_many(name, opts=OPTS, &block)
1890
+ associate(:one_to_many, name, opts, &block)
1891
+ end
1892
+
1893
+ # Shortcut for adding a one_to_one association, see #associate
1894
+ def one_to_one(name, opts=OPTS, &block)
1895
+ associate(:one_to_one, name, opts, &block)
1896
+ end
1897
+
1898
+ Plugins.inherited_instance_variables(self, :@association_reflections=>:dup, :@autoreloading_associations=>:hash_dup, :@default_association_options=>:dup, :@default_association_type_options=>:hash_dup, :@cache_associations=>nil, :@default_eager_limit_strategy=>nil)
1899
+ Plugins.def_dataset_methods(self, [:eager, :eager_graph, :eager_graph_with_options, :association_join, :association_full_join, :association_inner_join, :association_left_join, :association_right_join])
1900
+
1901
+ private
1902
+
1903
+ # The module to use for the association's methods. Defaults to
1904
+ # the overridable_methods_module.
1905
+ def association_module(opts=OPTS)
1906
+ opts.fetch(:methods_module, overridable_methods_module)
1907
+ end
1908
+
1909
+ # Add a method to the module included in the class, so the method
1910
+ # can be easily overridden in the class itself while allowing for
1911
+ # super to be called.
1912
+ def association_module_def(name, opts=OPTS, &block)
1913
+ association_module(opts).send(:define_method, name, &block)
1914
+ end
1915
+
1916
+ # Add a private method to the module included in the class.
1917
+ def association_module_private_def(name, opts=OPTS, &block)
1918
+ association_module_def(name, opts, &block)
1919
+ association_module(opts).send(:private, name)
1920
+ end
1921
+
1922
+ # Adds the association method to the association methods module.
1923
+ def def_association_method(opts)
1924
+ association_module_def(opts.association_method, opts) do |dynamic_opts=OPTS, &block|
1925
+ load_associated_objects(opts, dynamic_opts, &block)
1926
+ end
1927
+ end
1928
+
1929
+ # Define all of the association instance methods for this association.
1930
+ def def_association_instance_methods(opts)
1931
+ # Always set the method names in the association reflection, even if they
1932
+ # are not used, for backwards compatibility.
1933
+ opts[:dataset_method] = :"#{opts[:name]}_dataset"
1934
+ if opts.returns_array?
1935
+ sname = singularize(opts[:name])
1936
+ opts[:_add_method] = :"_add_#{sname}"
1937
+ opts[:add_method] = :"add_#{sname}"
1938
+ opts[:_remove_method] = :"_remove_#{sname}"
1939
+ opts[:remove_method] = :"remove_#{sname}"
1940
+ opts[:_remove_all_method] = :"_remove_all_#{opts[:name]}"
1941
+ opts[:remove_all_method] = :"remove_all_#{opts[:name]}"
1942
+ else
1943
+ opts[:_setter_method] = :"_#{opts[:name]}="
1944
+ opts[:setter_method] = :"#{opts[:name]}="
1945
+ end
1946
+
1947
+ association_module_def(opts.dataset_method, opts){_dataset(opts)}
1948
+ if opts[:block]
1949
+ opts[:block_method] = Plugins.def_sequel_method(association_module(opts), "#{opts[:name]}_block", 1, &opts[:block])
1950
+ end
1951
+ if opts[:dataset]
1952
+ opts[:dataset_opt_arity] = opts[:dataset].arity == 0 ? 0 : 1
1953
+ opts[:dataset_opt_method] = Plugins.def_sequel_method(association_module(opts), "#{opts[:name]}_dataset_opt", opts[:dataset_opt_arity], &opts[:dataset])
1954
+ end
1955
+ def_association_method(opts)
1956
+
1957
+ return if opts[:read_only]
1958
+
1959
+ if opts[:setter] && opts[:_setter]
1960
+ # This is backwards due to backwards compatibility
1961
+ association_module_private_def(opts[:_setter_method], opts, &opts[:setter])
1962
+ association_module_def(opts[:setter_method], opts, &opts[:_setter])
1963
+ end
1964
+
1965
+ if adder = opts[:adder]
1966
+ association_module_private_def(opts[:_add_method], opts, &adder)
1967
+ association_module_def(opts[:add_method], opts){|o,*args| add_associated_object(opts, o, *args)}
1968
+ end
1969
+
1970
+ if remover = opts[:remover]
1971
+ association_module_private_def(opts[:_remove_method], opts, &remover)
1972
+ association_module_def(opts[:remove_method], opts){|o,*args| remove_associated_object(opts, o, *args)}
1973
+ end
1974
+
1975
+ if clearer = opts[:clearer]
1976
+ association_module_private_def(opts[:_remove_all_method], opts, &clearer)
1977
+ association_module_def(opts[:remove_all_method], opts){|*args| remove_all_associated_objects(opts, *args)}
1978
+ end
1979
+ end
1980
+
1981
+ # Configures many_to_many and one_through_one association reflection and adds the related association methods
1982
+ def def_many_to_many(opts)
1983
+ one_through_one = opts[:type] == :one_through_one
1984
+ left = (opts[:left_key] ||= opts.default_left_key)
1985
+ lcks = opts[:left_keys] = Array(left)
1986
+ right = (opts[:right_key] ||= opts.default_right_key)
1987
+ rcks = opts[:right_keys] = Array(right)
1988
+ left_pk = (opts[:left_primary_key] ||= self.primary_key)
1989
+ opts[:eager_loader_key] = left_pk unless opts.has_key?(:eager_loader_key)
1990
+ lcpks = opts[:left_primary_keys] = Array(left_pk)
1991
+ lpkc = opts[:left_primary_key_column] ||= left_pk
1992
+ lpkcs = opts[:left_primary_key_columns] ||= Array(lpkc)
1993
+ raise(Error, "mismatched number of left keys: #{lcks.inspect} vs #{lcpks.inspect}") unless lcks.length == lcpks.length
1994
+ if opts[:right_primary_key]
1995
+ rcpks = Array(opts[:right_primary_key])
1996
+ raise(Error, "mismatched number of right keys: #{rcks.inspect} vs #{rcpks.inspect}") unless rcks.length == rcpks.length
1997
+ end
1998
+ opts[:uses_left_composite_keys] = lcks.length > 1
1999
+ opts[:uses_right_composite_keys] = rcks.length > 1
2000
+ opts[:cartesian_product_number] ||= one_through_one ? 0 : 1
2001
+ join_table = (opts[:join_table] ||= opts.default_join_table)
2002
+ opts[:left_key_alias] ||= opts.default_associated_key_alias
2003
+ opts[:graph_join_table_join_type] ||= opts[:graph_join_type]
2004
+ if opts[:uniq]
2005
+ opts[:after_load] ||= []
2006
+ opts[:after_load].unshift(:array_uniq!)
2007
+ end
2008
+ opts[:dataset] ||= opts.association_dataset_proc
2009
+ opts[:eager_loader] ||= opts.method(:default_eager_loader)
2010
+
2011
+ join_type = opts[:graph_join_type]
2012
+ select = opts[:graph_select]
2013
+ use_only_conditions = opts.include?(:graph_only_conditions)
2014
+ only_conditions = opts[:graph_only_conditions]
2015
+ conditions = opts[:graph_conditions]
2016
+ graph_block = opts[:graph_block]
2017
+ graph_jt_conds = opts[:graph_join_table_conditions] = opts.fetch(:graph_join_table_conditions, []).to_a
2018
+ use_jt_only_conditions = opts.include?(:graph_join_table_only_conditions)
2019
+ jt_only_conditions = opts[:graph_join_table_only_conditions]
2020
+ jt_join_type = opts[:graph_join_table_join_type]
2021
+ jt_graph_block = opts[:graph_join_table_block]
2022
+ opts[:eager_grapher] ||= proc do |eo|
2023
+ ds = eo[:self]
2024
+ egls = eo[:limit_strategy]
2025
+ if egls && egls != :ruby
2026
+ associated_key_array = opts.associated_key_array
2027
+ orig_egds = egds = eager_graph_dataset(opts, eo)
2028
+ egds = egds.
2029
+ inner_join(join_table, rcks.zip(opts.right_primary_keys) + graph_jt_conds, :qualify=>:deep).
2030
+ select_all(egds.first_source).
2031
+ select_append(*associated_key_array)
2032
+ egds = opts.apply_eager_graph_limit_strategy(egls, egds)
2033
+ ds.graph(egds, associated_key_array.map(&:alias).zip(lpkcs) + conditions, :qualify=>:deep, :table_alias=>eo[:table_alias], :implicit_qualifier=>eo[:implicit_qualifier], :join_type=>eo[:join_type]||join_type, :from_self_alias=>eo[:from_self_alias], :join_only=>eo[:join_only], :select=>select||orig_egds.columns, &graph_block)
2034
+ else
2035
+ ds = ds.graph(join_table, use_jt_only_conditions ? jt_only_conditions : lcks.zip(lpkcs) + graph_jt_conds, :select=>false, :table_alias=>ds.unused_table_alias(join_table, [eo[:table_alias]]), :join_type=>eo[:join_type]||jt_join_type, :join_only=>eo[:join_only], :implicit_qualifier=>eo[:implicit_qualifier], :qualify=>:deep, :from_self_alias=>eo[:from_self_alias], &jt_graph_block)
2036
+ ds.graph(eager_graph_dataset(opts, eo), use_only_conditions ? only_conditions : opts.right_primary_keys.zip(rcks) + conditions, :select=>select, :table_alias=>eo[:table_alias], :qualify=>:deep, :join_type=>eo[:join_type]||join_type, :join_only=>eo[:join_only], &graph_block)
2037
+ end
2038
+ end
2039
+
2040
+ return if opts[:read_only]
2041
+
2042
+ if one_through_one
2043
+ opts[:setter] ||= proc do |o|
2044
+ h = {}
2045
+ lh = lcks.zip(lcpks.map{|k| get_column_value(k)})
2046
+ jtds = _join_table_dataset(opts).where(lh)
2047
+
2048
+ checked_transaction do
2049
+ current = jtds.first
2050
+
2051
+ if o
2052
+ new_values = []
2053
+ rcks.zip(opts.right_primary_key_methods).each{|k, pk| new_values << (h[k] = o.get_column_value(pk))}
2054
+ end
2055
+
2056
+ if current
2057
+ current_values = rcks.map{|k| current[k]}
2058
+ jtds = jtds.where(rcks.zip(current_values))
2059
+ if o
2060
+ if current_values != new_values
2061
+ jtds.update(h)
2062
+ end
2063
+ else
2064
+ jtds.delete
2065
+ end
2066
+ elsif o
2067
+ lh.each{|k,v| h[k] = v}
2068
+ jtds.insert(h)
2069
+ end
2070
+ end
2071
+ end
2072
+ opts[:_setter] = proc{|o| set_one_through_one_associated_object(opts, o)}
2073
+ else
2074
+ opts[:adder] ||= proc do |o|
2075
+ h = {}
2076
+ lcks.zip(lcpks).each{|k, pk| h[k] = get_column_value(pk)}
2077
+ rcks.zip(opts.right_primary_key_methods).each{|k, pk| h[k] = o.get_column_value(pk)}
2078
+ _join_table_dataset(opts).insert(h)
2079
+ end
2080
+
2081
+ opts[:remover] ||= proc do |o|
2082
+ _join_table_dataset(opts).where(lcks.zip(lcpks.map{|k| get_column_value(k)}) + rcks.zip(opts.right_primary_key_methods.map{|k| o.get_column_value(k)})).delete
2083
+ end
2084
+
2085
+ opts[:clearer] ||= proc do
2086
+ _join_table_dataset(opts).where(lcks.zip(lcpks.map{|k| get_column_value(k)})).delete
2087
+ end
2088
+ end
2089
+ end
2090
+
2091
+ # Configures many_to_one association reflection and adds the related association methods
2092
+ def def_many_to_one(opts)
2093
+ name = opts[:name]
2094
+ opts[:key] = opts.default_key unless opts.has_key?(:key)
2095
+ key = opts[:key]
2096
+ opts[:eager_loader_key] = key unless opts.has_key?(:eager_loader_key)
2097
+ cks = opts[:graph_keys] = opts[:keys] = Array(key)
2098
+ opts[:key_column] ||= key
2099
+ opts[:graph_keys] = opts[:key_columns] = Array(opts[:key_column])
2100
+ opts[:qualified_key] = opts.qualify_cur(key)
2101
+ if opts[:primary_key]
2102
+ cpks = Array(opts[:primary_key])
2103
+ raise(Error, "mismatched number of keys: #{cks.inspect} vs #{cpks.inspect}") unless cks.length == cpks.length
2104
+ end
2105
+ uses_cks = opts[:uses_composite_keys] = cks.length > 1
2106
+ opts[:cartesian_product_number] ||= 0
2107
+
2108
+ if !opts.has_key?(:many_to_one_pk_lookup) &&
2109
+ (opts[:dataset] || opts[:conditions] || opts[:block] || opts[:select] ||
2110
+ (opts.has_key?(:key) && opts[:key] == nil))
2111
+ opts[:many_to_one_pk_lookup] = false
2112
+ end
2113
+ auto_assocs = @autoreloading_associations
2114
+ cks.each do |k|
2115
+ (auto_assocs[k] ||= []) << name
2116
+ end
2117
+
2118
+ opts[:dataset] ||= opts.association_dataset_proc
2119
+ opts[:eager_loader] ||= proc do |eo|
2120
+ h = eo[:id_map]
2121
+ pk_meths = opts.primary_key_methods
2122
+
2123
+ eager_load_results(opts, eo) do |assoc_record|
2124
+ hash_key = uses_cks ? pk_meths.map{|k| assoc_record.get_column_value(k)} : assoc_record.get_column_value(opts.primary_key_method)
2125
+ if objects = h[hash_key]
2126
+ objects.each{|object| object.associations[name] = assoc_record}
2127
+ end
2128
+ end
2129
+ end
2130
+
2131
+ join_type = opts[:graph_join_type]
2132
+ select = opts[:graph_select]
2133
+ use_only_conditions = opts.include?(:graph_only_conditions)
2134
+ only_conditions = opts[:graph_only_conditions]
2135
+ conditions = opts[:graph_conditions]
2136
+ graph_block = opts[:graph_block]
2137
+ graph_cks = opts[:graph_keys]
2138
+ opts[:eager_grapher] ||= proc do |eo|
2139
+ ds = eo[:self]
2140
+ ds.graph(eager_graph_dataset(opts, eo), use_only_conditions ? only_conditions : opts.primary_keys.zip(graph_cks) + conditions, eo.merge(:select=>select, :join_type=>eo[:join_type]||join_type, :qualify=>:deep), &graph_block)
2141
+ end
2142
+
2143
+ return if opts[:read_only]
2144
+
2145
+ opts[:setter] ||= proc{|o| cks.zip(opts.primary_key_methods).each{|k, pk| set_column_value(:"#{k}=", (o.get_column_value(pk) if o))}}
2146
+ opts[:_setter] = proc{|o| set_associated_object(opts, o)}
2147
+ end
2148
+
2149
+ # Configures one_to_many and one_to_one association reflections and adds the related association methods
2150
+ def def_one_to_many(opts)
2151
+ one_to_one = opts[:type] == :one_to_one
2152
+ name = opts[:name]
2153
+ key = (opts[:key] ||= opts.default_key)
2154
+ km = opts[:key_method] ||= opts[:key]
2155
+ cks = opts[:keys] = Array(key)
2156
+ opts[:key_methods] = Array(opts[:key_method])
2157
+ primary_key = (opts[:primary_key] ||= self.primary_key)
2158
+ opts[:eager_loader_key] = primary_key unless opts.has_key?(:eager_loader_key)
2159
+ cpks = opts[:primary_keys] = Array(primary_key)
2160
+ pkc = opts[:primary_key_column] ||= primary_key
2161
+ pkcs = opts[:primary_key_columns] ||= Array(pkc)
2162
+ raise(Error, "mismatched number of keys: #{cks.inspect} vs #{cpks.inspect}") unless cks.length == cpks.length
2163
+ uses_cks = opts[:uses_composite_keys] = cks.length > 1
2164
+ opts[:dataset] ||= opts.association_dataset_proc
2165
+ opts[:eager_loader] ||= proc do |eo|
2166
+ h = eo[:id_map]
2167
+ reciprocal = opts.reciprocal
2168
+ assign_singular = opts.assign_singular?
2169
+ delete_rn = opts.delete_row_number_column
2170
+
2171
+ eager_load_results(opts, eo) do |assoc_record|
2172
+ assoc_record.values.delete(delete_rn) if delete_rn
2173
+ hash_key = uses_cks ? km.map{|k| assoc_record.get_column_value(k)} : assoc_record.get_column_value(km)
2174
+ next unless objects = h[hash_key]
2175
+ if assign_singular
2176
+ objects.each do |object|
2177
+ unless object.associations[name]
2178
+ object.associations[name] = assoc_record
2179
+ assoc_record.associations[reciprocal] = object if reciprocal
2180
+ end
2181
+ end
2182
+ else
2183
+ objects.each do |object|
2184
+ object.associations[name].push(assoc_record)
2185
+ assoc_record.associations[reciprocal] = object if reciprocal
2186
+ end
2187
+ end
2188
+ end
2189
+ end
2190
+
2191
+ join_type = opts[:graph_join_type]
2192
+ select = opts[:graph_select]
2193
+ use_only_conditions = opts.include?(:graph_only_conditions)
2194
+ only_conditions = opts[:graph_only_conditions]
2195
+ conditions = opts[:graph_conditions]
2196
+ opts[:cartesian_product_number] ||= one_to_one ? 0 : 1
2197
+ graph_block = opts[:graph_block]
2198
+ opts[:eager_grapher] ||= proc do |eo|
2199
+ ds = eo[:self]
2200
+ ds = ds.graph(opts.apply_eager_graph_limit_strategy(eo[:limit_strategy], eager_graph_dataset(opts, eo)), use_only_conditions ? only_conditions : cks.zip(pkcs) + conditions, eo.merge(:select=>select, :join_type=>eo[:join_type]||join_type, :qualify=>:deep), &graph_block)
2201
+ # We only load reciprocals for one_to_many associations, as other reciprocals don't make sense
2202
+ ds.opts[:eager_graph][:reciprocals][eo[:table_alias]] = opts.reciprocal
2203
+ ds
2204
+ end
2205
+
2206
+ return if opts[:read_only]
2207
+
2208
+ save_opts = {:validate=>opts[:validate]}
2209
+ ck_nil_hash ={}
2210
+ cks.each{|k| ck_nil_hash[k] = nil}
2211
+
2212
+ if one_to_one
2213
+ opts[:setter] ||= proc do |o|
2214
+ up_ds = _apply_association_options(opts, opts.associated_dataset.where(cks.zip(cpks.map{|k| get_column_value(k)})))
2215
+
2216
+ if (froms = up_ds.opts[:from]) && (from = froms[0]) && (from.is_a?(Sequel::Dataset) || (from.is_a?(Sequel::SQL::AliasedExpression) && from.expression.is_a?(Sequel::Dataset)))
2217
+ if old = up_ds.first
2218
+ cks.each{|k| old.set_column_value(:"#{k}=", nil)}
2219
+ end
2220
+ save_old = true
2221
+ end
2222
+
2223
+ if o
2224
+ if !o.new? && !save_old
2225
+ up_ds = up_ds.exclude(o.pk_hash)
2226
+ end
2227
+ cks.zip(cpks).each{|k, pk| o.set_column_value(:"#{k}=", get_column_value(pk))}
2228
+ end
2229
+
2230
+ checked_transaction do
2231
+ if save_old
2232
+ old.save(save_opts) || raise(Sequel::Error, "invalid previously associated object, cannot save") if old
2233
+ else
2234
+ up_ds.skip_limit_check.update(ck_nil_hash)
2235
+ end
2236
+
2237
+ o.save(save_opts) || raise(Sequel::Error, "invalid associated object, cannot save") if o
2238
+ end
2239
+ end
2240
+ opts[:_setter] = proc{|o| set_one_to_one_associated_object(opts, o)}
2241
+ else
2242
+ save_opts[:raise_on_failure] = opts[:raise_on_save_failure] != false
2243
+
2244
+ opts[:adder] ||= proc do |o|
2245
+ cks.zip(cpks).each{|k, pk| o.set_column_value(:"#{k}=", get_column_value(pk))}
2246
+ o.save(save_opts)
2247
+ end
2248
+
2249
+ opts[:remover] ||= proc do |o|
2250
+ cks.each{|k| o.set_column_value(:"#{k}=", nil)}
2251
+ o.save(save_opts)
2252
+ end
2253
+
2254
+ opts[:clearer] ||= proc do
2255
+ _apply_association_options(opts, opts.associated_dataset.where(cks.zip(cpks.map{|k| get_column_value(k)}))).update(ck_nil_hash)
2256
+ end
2257
+ end
2258
+ end
2259
+
2260
+ # Alias of def_many_to_many, since they share pretty much the same code.
2261
+ def def_one_through_one(opts)
2262
+ def_many_to_many(opts)
2263
+ end
2264
+
2265
+ # Alias of def_one_to_many, since they share pretty much the same code.
2266
+ def def_one_to_one(opts)
2267
+ def_one_to_many(opts)
2268
+ end
2269
+
2270
+ # Return dataset to graph into given the association reflection, applying the :callback option if set.
2271
+ def eager_graph_dataset(opts, eager_options)
2272
+ ds = opts.associated_class.dataset
2273
+ if cb = eager_options[:callback]
2274
+ ds = cb.call(ds)
2275
+ end
2276
+ ds
2277
+ end
2278
+
2279
+ # If not caching associations, reload the database schema by default,
2280
+ # ignoring any cached values.
2281
+ def reload_db_schema?
2282
+ !@cache_associations
2283
+ end
2284
+ end
2285
+
2286
+ # Instance methods used to implement the associations support.
2287
+ module InstanceMethods
2288
+ # The currently cached associations. A hash with the keys being the
2289
+ # association name symbols and the values being the associated object
2290
+ # or nil (many_to_one), or the array of associated objects (*_to_many).
2291
+ def associations
2292
+ @associations ||= {}
2293
+ end
2294
+
2295
+ # Freeze the associations cache when freezing the object. Note that
2296
+ # retrieving associations after freezing will still work in most cases,
2297
+ # but the associations will not be cached in the association cache.
2298
+ def freeze
2299
+ associations
2300
+ super
2301
+ associations.freeze
2302
+ self
2303
+ end
2304
+
2305
+ private
2306
+
2307
+ # Apply the association options such as :order and :limit to the given dataset, returning a modified dataset.
2308
+ def _apply_association_options(opts, ds)
2309
+ unless ds.kind_of?(AssociationDatasetMethods)
2310
+ ds = opts.apply_dataset_changes(ds)
2311
+ end
2312
+ ds = ds.clone(:model_object => self)
2313
+ ds = ds.eager_graph(opts[:eager_graph]) if opts[:eager_graph] && opts.eager_graph_lazy_dataset?
2314
+ # block method is private
2315
+ ds = send(opts[:block_method], ds) if opts[:block_method]
2316
+ ds
2317
+ end
2318
+
2319
+ # Return a dataset for the association after applying any dynamic callback.
2320
+ def _associated_dataset(opts, dynamic_opts)
2321
+ ds = public_send(opts.dataset_method)
2322
+ if callback = dynamic_opts[:callback]
2323
+ ds = callback.call(ds)
2324
+ end
2325
+ ds
2326
+ end
2327
+
2328
+ # A placeholder literalizer that can be used to load the association, or nil to not use one.
2329
+ def _associated_object_loader(opts, dynamic_opts)
2330
+ if !dynamic_opts[:callback] && (loader = opts.placeholder_loader)
2331
+ loader
2332
+ end
2333
+ end
2334
+
2335
+ # Return an association dataset for the given association reflection
2336
+ def _dataset(opts)
2337
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2338
+ ds = if opts[:dataset_opt_arity] == 1
2339
+ # dataset_opt_method is private
2340
+ send(opts[:dataset_opt_method], opts)
2341
+ else
2342
+ send(opts[:dataset_opt_method])
2343
+ end
2344
+ _apply_association_options(opts, ds)
2345
+ end
2346
+
2347
+ # Dataset for the join table of the given many to many association reflection
2348
+ def _join_table_dataset(opts)
2349
+ ds = model.db.from(opts.join_table_source)
2350
+ opts[:join_table_block] ? opts[:join_table_block].call(ds) : ds
2351
+ end
2352
+
2353
+ # Return the associated single object for the given association reflection and dynamic options
2354
+ # (or nil if no associated object).
2355
+ def _load_associated_object(opts, dynamic_opts)
2356
+ _load_associated_object_array(opts, dynamic_opts).first
2357
+ end
2358
+
2359
+ # Return the associated single object using a primary key lookup on the associated class.
2360
+ def _load_associated_object_via_primary_key(opts)
2361
+ opts.associated_class.send(:primary_key_lookup, ((fk = opts[:key]).is_a?(Array) ? fk.map{|c| get_column_value(c)} : get_column_value(fk)))
2362
+ end
2363
+
2364
+ # Load the associated objects for the given association reflection and dynamic options
2365
+ # as an array.
2366
+ def _load_associated_object_array(opts, dynamic_opts)
2367
+ if loader = _associated_object_loader(opts, dynamic_opts)
2368
+ loader.all(*opts.predicate_key_values(self))
2369
+ else
2370
+ _associated_dataset(opts, dynamic_opts).all
2371
+ end
2372
+ end
2373
+
2374
+ # Return the associated objects from the dataset, without association callbacks, reciprocals, and caching.
2375
+ # Still apply the dynamic callback if present.
2376
+ def _load_associated_objects(opts, dynamic_opts=OPTS)
2377
+ if opts.can_have_associated_objects?(self)
2378
+ if opts.returns_array?
2379
+ _load_associated_object_array(opts, dynamic_opts)
2380
+ elsif load_with_primary_key_lookup?(opts, dynamic_opts)
2381
+ _load_associated_object_via_primary_key(opts)
2382
+ else
2383
+ _load_associated_object(opts, dynamic_opts)
2384
+ end
2385
+ elsif opts.returns_array?
2386
+ []
2387
+ end
2388
+ end
2389
+
2390
+ # Clear the associations cache when refreshing
2391
+ def _refresh_set_values(hash)
2392
+ @associations.clear if @associations
2393
+ super
2394
+ end
2395
+
2396
+ # Add the given associated object to the given association
2397
+ def add_associated_object(opts, o, *args)
2398
+ o = make_add_associated_object(opts, o)
2399
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2400
+ ensure_associated_primary_key(opts, o, *args)
2401
+ return if run_association_callbacks(opts, :before_add, o) == false
2402
+ # Allow calling private _add method
2403
+ return if !send(opts[:_add_method], o, *args) && opts.handle_silent_modification_failure?
2404
+ if array = associations[opts[:name]] and !array.include?(o)
2405
+ array.push(o)
2406
+ end
2407
+ add_reciprocal_object(opts, o)
2408
+ run_association_callbacks(opts, :after_add, o)
2409
+ o
2410
+ end
2411
+
2412
+ # Add/Set the current object to/as the given object's reciprocal association.
2413
+ def add_reciprocal_object(opts, o)
2414
+ return if o.frozen?
2415
+ return unless reciprocal = opts.reciprocal
2416
+ if opts.reciprocal_array?
2417
+ if array = o.associations[reciprocal] and !array.include?(self)
2418
+ array.push(self)
2419
+ end
2420
+ else
2421
+ o.associations[reciprocal] = self
2422
+ end
2423
+ end
2424
+
2425
+ # Call uniq! on the given array. This is used by the :uniq option,
2426
+ # and is an actual method for memory reasons.
2427
+ def array_uniq!(a)
2428
+ a.uniq!
2429
+ end
2430
+
2431
+ # If a foreign key column value changes, clear the related
2432
+ # cached associations.
2433
+ def change_column_value(column, value)
2434
+ if assocs = model.autoreloading_associations[column]
2435
+ vals = @values
2436
+ if new?
2437
+ # Do deeper checking for new objects, so that associations are
2438
+ # not deleted when values do not change. This code is run at
2439
+ # a higher level for existing objects.
2440
+ if value == (c = vals[column]) && value.class == c.class
2441
+ # If the value is the same, there is no reason to delete
2442
+ # the related associations, so exit early in that case.
2443
+ return super
2444
+ end
2445
+
2446
+ only_delete_nil = c.nil?
2447
+ elsif vals[column].nil?
2448
+ only_delete_nil = true
2449
+ end
2450
+
2451
+ if only_delete_nil
2452
+ # If the current foreign key value is nil, but the association
2453
+ # is already present in the cache, it was probably added to the
2454
+ # cache for a reason, and we do not want to delete it in that case.
2455
+ # However, we still want to delete associations with nil values
2456
+ # to remove the cached false negative.
2457
+ assocs.each{|a| associations.delete(a) if associations[a].nil?}
2458
+ else
2459
+ assocs.each{|a| associations.delete(a)}
2460
+ end
2461
+ end
2462
+ super
2463
+ end
2464
+
2465
+ # Save the associated object if the associated object needs a primary key
2466
+ # and the associated object is new and does not have one. Raise an error if
2467
+ # the object still does not have a primary key
2468
+ def ensure_associated_primary_key(opts, o, *args)
2469
+ if opts.need_associated_primary_key?
2470
+ o.save(:validate=>opts[:validate]) if o.new?
2471
+ raise(Sequel::Error, "associated object #{o.inspect} does not have a primary key") unless o.pk
2472
+ end
2473
+ end
2474
+
2475
+ # Duplicate the associations hash when duplicating the object.
2476
+ def initialize_copy(other)
2477
+ super
2478
+ @associations = Hash[@associations] if @associations
2479
+ self
2480
+ end
2481
+
2482
+ # If a block is given, assign it as the :callback option in the hash, and return the hash.
2483
+ def load_association_objects_options(dynamic_opts, &block)
2484
+ if block
2485
+ dynamic_opts = Hash[dynamic_opts]
2486
+ dynamic_opts[:callback] = block
2487
+ end
2488
+
2489
+ dynamic_opts
2490
+ end
2491
+
2492
+ # Load the associated objects using the dataset, handling callbacks, reciprocals, and caching.
2493
+ def load_associated_objects(opts, dynamic_opts, &block)
2494
+ dynamic_opts = load_association_objects_options(dynamic_opts, &block)
2495
+ name = opts[:name]
2496
+ if associations.include?(name) && !dynamic_opts[:callback] && !dynamic_opts[:reload]
2497
+ associations[name]
2498
+ else
2499
+ objs = _load_associated_objects(opts, dynamic_opts)
2500
+ if opts.set_reciprocal_to_self?
2501
+ if opts.returns_array?
2502
+ objs.each{|o| add_reciprocal_object(opts, o)}
2503
+ elsif objs
2504
+ add_reciprocal_object(opts, objs)
2505
+ end
2506
+ end
2507
+
2508
+ # If the current object is frozen, you can't update the associations
2509
+ # cache. This can cause issues for after_load procs that expect
2510
+ # the objects to be already cached in the associations, but
2511
+ # unfortunately that case cannot be handled.
2512
+ associations[name] = objs unless frozen?
2513
+ run_association_callbacks(opts, :after_load, objs)
2514
+ frozen? ? objs : associations[name]
2515
+ end
2516
+ end
2517
+
2518
+ # Whether to use a simple primary key lookup on the associated class when loading.
2519
+ def load_with_primary_key_lookup?(opts, dynamic_opts)
2520
+ opts[:type] == :many_to_one &&
2521
+ !dynamic_opts[:callback] &&
2522
+ opts.send(:cached_fetch, :many_to_one_pk_lookup){opts.primary_key == opts.associated_class.primary_key}
2523
+ end
2524
+
2525
+ # Convert the input of the add_* association method into an associated object. For
2526
+ # hashes, this creates a new object using the hash. For integers, strings, and arrays,
2527
+ # assume the value specifies a primary key, and lookup an existing object with that primary key.
2528
+ # Otherwise, if the object is not already an instance of the class, raise an exception.
2529
+ def make_add_associated_object(opts, o)
2530
+ klass = opts.associated_class
2531
+
2532
+ case o
2533
+ when Hash
2534
+ klass.new(o)
2535
+ when Integer, String, Array
2536
+ klass.with_pk!(o)
2537
+ when klass
2538
+ o
2539
+ else
2540
+ raise(Sequel::Error, "associated object #{o.inspect} not of correct type #{klass}")
2541
+ end
2542
+ end
2543
+
2544
+ # Remove all associated objects from the given association
2545
+ def remove_all_associated_objects(opts, *args)
2546
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2547
+ # Allow calling private _remove_all method
2548
+ send(opts[:_remove_all_method], *args)
2549
+ ret = associations[opts[:name]].each{|o| remove_reciprocal_object(opts, o)} if associations.include?(opts[:name])
2550
+ associations[opts[:name]] = []
2551
+ ret
2552
+ end
2553
+
2554
+ # Remove the given associated object from the given association
2555
+ def remove_associated_object(opts, o, *args)
2556
+ klass = opts.associated_class
2557
+ if o.is_a?(Integer) || o.is_a?(String) || o.is_a?(Array)
2558
+ o = remove_check_existing_object_from_pk(opts, o, *args)
2559
+ elsif !o.is_a?(klass)
2560
+ raise(Sequel::Error, "associated object #{o.inspect} not of correct type #{klass}")
2561
+ elsif opts.remove_should_check_existing? && public_send(opts.dataset_method).where(o.pk_hash).empty?
2562
+ raise(Sequel::Error, "associated object #{o.inspect} is not currently associated to #{inspect}")
2563
+ end
2564
+ raise(Sequel::Error, "model object #{inspect} does not have a primary key") if opts.dataset_need_primary_key? && !pk
2565
+ raise(Sequel::Error, "associated object #{o.inspect} does not have a primary key") if opts.need_associated_primary_key? && !o.pk
2566
+ return if run_association_callbacks(opts, :before_remove, o) == false
2567
+ # Allow calling private _remove method
2568
+ return if !send(opts[:_remove_method], o, *args) && opts.handle_silent_modification_failure?
2569
+ associations[opts[:name]].delete_if{|x| o === x} if associations.include?(opts[:name])
2570
+ remove_reciprocal_object(opts, o)
2571
+ run_association_callbacks(opts, :after_remove, o)
2572
+ o
2573
+ end
2574
+
2575
+ # Check that the object from the associated table specified by the primary key
2576
+ # is currently associated to the receiver. If it is associated, return the object, otherwise
2577
+ # raise an error.
2578
+ def remove_check_existing_object_from_pk(opts, o, *args)
2579
+ key = o
2580
+ pkh = opts.associated_class.qualified_primary_key_hash(key)
2581
+ raise(Sequel::Error, "no object with key(s) #{key.inspect} is currently associated to #{inspect}") unless o = public_send(opts.dataset_method).first(pkh)
2582
+ o
2583
+ end
2584
+
2585
+ # Remove/unset the current object from/as the given object's reciprocal association.
2586
+ def remove_reciprocal_object(opts, o)
2587
+ return unless reciprocal = opts.reciprocal
2588
+ if opts.reciprocal_array?
2589
+ if array = o.associations[reciprocal]
2590
+ array.delete_if{|x| self === x}
2591
+ end
2592
+ else
2593
+ o.associations[reciprocal] = nil
2594
+ end
2595
+ end
2596
+
2597
+ # Run the callback for the association with the object.
2598
+ def run_association_callbacks(reflection, callback_type, object)
2599
+ return unless cbs = reflection[callback_type]
2600
+
2601
+ begin
2602
+ cbs.each do |cb|
2603
+ case cb
2604
+ when Symbol
2605
+ # Allow calling private methods in association callbacks
2606
+ send(cb, object)
2607
+ when Proc
2608
+ cb.call(self, object)
2609
+ else
2610
+ raise Error, "callbacks should either be Procs or Symbols"
2611
+ end
2612
+ end
2613
+ rescue HookFailed
2614
+ # The reason we automatically set raise_error for singular associations is that
2615
+ # assignment in ruby always returns the argument instead of the result of the
2616
+ # method, so we can't return nil to signal that the association callback prevented
2617
+ # the modification
2618
+ return false unless raise_on_save_failure || !reflection.returns_array?
2619
+ raise
2620
+ end
2621
+ end
2622
+
2623
+ # Set the given object as the associated object for the given *_to_one association reflection
2624
+ def _set_associated_object(opts, o)
2625
+ a = associations[opts[:name]]
2626
+ reciprocal = opts.reciprocal
2627
+ if set_associated_object_if_same?
2628
+ if reciprocal
2629
+ remove_reciprocal = a && (a != o || a.associations[reciprocal] != self)
2630
+ add_reciprocal = o && o.associations[reciprocal] != self
2631
+ end
2632
+ else
2633
+ return if a && a == o
2634
+ if reciprocal
2635
+ remove_reciprocal = a
2636
+ add_reciprocal = o
2637
+ end
2638
+ end
2639
+ run_association_callbacks(opts, :before_set, o)
2640
+ remove_reciprocal_object(opts, a) if remove_reciprocal
2641
+ # Allow calling private _setter method
2642
+ send(opts[:_setter_method], o)
2643
+ associations[opts[:name]] = o
2644
+ add_reciprocal_object(opts, o) if add_reciprocal
2645
+ run_association_callbacks(opts, :after_set, o)
2646
+ o
2647
+ end
2648
+
2649
+ # Whether run the associated object setter code if passed the same object as the one already
2650
+ # cached in the association. Usually not set (so nil), can be set on a per-object basis
2651
+ # if necessary.
2652
+ def set_associated_object_if_same?
2653
+ @set_associated_object_if_same
2654
+ end
2655
+
2656
+ # Set the given object as the associated object for the given many_to_one association reflection
2657
+ def set_associated_object(opts, o)
2658
+ raise(Error, "associated object #{o.inspect} does not have a primary key") if o && !o.pk
2659
+ _set_associated_object(opts, o)
2660
+ end
2661
+
2662
+ # Set the given object as the associated object for the given one_through_one association reflection
2663
+ def set_one_through_one_associated_object(opts, o)
2664
+ raise(Error, "object #{inspect} does not have a primary key") unless pk
2665
+ raise(Error, "associated object #{o.inspect} does not have a primary key") if o && !o.pk
2666
+ _set_associated_object(opts, o)
2667
+ end
2668
+
2669
+ # Set the given object as the associated object for the given one_to_one association reflection
2670
+ def set_one_to_one_associated_object(opts, o)
2671
+ raise(Error, "object #{inspect} does not have a primary key") unless pk
2672
+ _set_associated_object(opts, o)
2673
+ end
2674
+ end
2675
+
2676
+ # Eager loading makes it so that you can load all associated records for a
2677
+ # set of objects in a single query, instead of a separate query for each object.
2678
+ #
2679
+ # Two separate implementations are provided. +eager+ should be used most of the
2680
+ # time, as it loads associated records using one query per association. However,
2681
+ # it does not allow you the ability to filter or order based on columns in associated tables. +eager_graph+ loads
2682
+ # all records in a single query using JOINs, allowing you to filter or order based on columns in associated
2683
+ # tables. However, +eager_graph+ is usually slower than +eager+, especially if multiple
2684
+ # one_to_many or many_to_many associations are joined.
2685
+ #
2686
+ # You can cascade the eager loading (loading associations on associated objects)
2687
+ # with no limit to the depth of the cascades. You do this by passing a hash to +eager+ or +eager_graph+
2688
+ # with the keys being associations of the current model and values being
2689
+ # associations of the model associated with the current model via the key.
2690
+ #
2691
+ # The arguments can be symbols or hashes with symbol keys (for cascaded
2692
+ # eager loading). Examples:
2693
+ #
2694
+ # Album.eager(:artist).all
2695
+ # Album.eager_graph(:artist).all
2696
+ # Album.eager(:artist, :genre).all
2697
+ # Album.eager_graph(:artist, :genre).all
2698
+ # Album.eager(:artist).eager(:genre).all
2699
+ # Album.eager_graph(:artist).eager_graph(:genre).all
2700
+ # Artist.eager(albums: :tracks).all
2701
+ # Artist.eager_graph(albums: :tracks).all
2702
+ # Artist.eager(albums: {tracks: :genre}).all
2703
+ # Artist.eager_graph(albums: {tracks: :genre}).all
2704
+ #
2705
+ # You can also pass a callback as a hash value in order to customize the dataset being
2706
+ # eager loaded at query time, analogous to the way the :eager_block association option
2707
+ # allows you to customize it at association definition time. For example,
2708
+ # if you wanted artists with their albums since 1990:
2709
+ #
2710
+ # Artist.eager(albums: proc{|ds| ds.where{year > 1990}})
2711
+ #
2712
+ # Or if you needed albums and their artist's name only, using a single query:
2713
+ #
2714
+ # Albums.eager_graph(artist: proc{|ds| ds.select(:name)})
2715
+ #
2716
+ # To cascade eager loading while using a callback, you substitute the cascaded
2717
+ # associations with a single entry hash that has the proc callback as the key and
2718
+ # the cascaded associations as the value. This will load artists with their albums
2719
+ # since 1990, and also the tracks on those albums and the genre for those tracks:
2720
+ #
2721
+ # Artist.eager(albums: {proc{|ds| ds.where{year > 1990}}=>{tracks: :genre}})
2722
+ module DatasetMethods
2723
+ %w'inner left right full'.each do |type|
2724
+ class_eval(<<-END, __FILE__, __LINE__+1)
2725
+ def association_#{type}_join(*associations)
2726
+ _association_join(:#{type}, associations)
2727
+ end
2728
+ END
2729
+ end
2730
+
2731
+ # Adds one or more INNER JOINs to the existing dataset using the keys and conditions
2732
+ # specified by the given association(s). Take the same arguments as eager_graph, and
2733
+ # operates similarly, but only adds the joins as opposed to making the other changes
2734
+ # (such as adding selected columns and setting up eager loading).
2735
+ #
2736
+ # The following methods also exist for specifying a different type of JOIN:
2737
+ #
2738
+ # association_full_join :: FULL JOIN
2739
+ # association_inner_join :: INNER JOIN
2740
+ # association_left_join :: LEFT JOIN
2741
+ # association_right_join :: RIGHT JOIN
2742
+ #
2743
+ # Examples:
2744
+ #
2745
+ # # For each album, association_join load the artist
2746
+ # Album.association_join(:artist).all
2747
+ # # SELECT *
2748
+ # # FROM albums
2749
+ # # INNER JOIN artists AS artist ON (artists.id = albums.artist_id)
2750
+ #
2751
+ # # For each album, association_join load the artist, using a specified alias
2752
+ # Album.association_join(Sequel[:artist].as(:a)).all
2753
+ # # SELECT *
2754
+ # # FROM albums
2755
+ # # INNER JOIN artists AS a ON (a.id = albums.artist_id)
2756
+ #
2757
+ # # For each album, association_join load the artist and genre
2758
+ # Album.association_join(:artist, :genre).all
2759
+ # Album.association_join(:artist).association_join(:genre).all
2760
+ # # SELECT *
2761
+ # # FROM albums
2762
+ # # INNER JOIN artists AS artist ON (artist.id = albums.artist_id)
2763
+ # # INNER JOIN genres AS genre ON (genre.id = albums.genre_id)
2764
+ #
2765
+ # # For each artist, association_join load albums and tracks for each album
2766
+ # Artist.association_join(albums: :tracks).all
2767
+ # # SELECT *
2768
+ # # FROM artists
2769
+ # # INNER JOIN albums ON (albums.artist_id = artists.id)
2770
+ # # INNER JOIN tracks ON (tracks.album_id = albums.id)
2771
+ #
2772
+ # # For each artist, association_join load albums, tracks for each album, and genre for each track
2773
+ # Artist.association_join(albums: {tracks: :genre}).all
2774
+ # # SELECT *
2775
+ # # FROM artists
2776
+ # # INNER JOIN albums ON (albums.artist_id = artists.id)
2777
+ # # INNER JOIN tracks ON (tracks.album_id = albums.id)
2778
+ # # INNER JOIN genres AS genre ON (genre.id = tracks.genre_id)
2779
+ #
2780
+ # # For each artist, association_join load albums with year > 1990
2781
+ # Artist.association_join(albums: proc{|ds| ds.where{year > 1990}}).all
2782
+ # # SELECT *
2783
+ # # FROM artists
2784
+ # # INNER JOIN (
2785
+ # # SELECT * FROM albums WHERE (year > 1990)
2786
+ # # ) AS albums ON (albums.artist_id = artists.id)
2787
+ #
2788
+ # # For each artist, association_join load albums and tracks 1-10 for each album
2789
+ # Artist.association_join(albums: {tracks: proc{|ds| ds.where(number: 1..10)}}).all
2790
+ # # SELECT *
2791
+ # # FROM artists
2792
+ # # INNER JOIN albums ON (albums.artist_id = artists.id)
2793
+ # # INNER JOIN (
2794
+ # # SELECT * FROM tracks WHERE ((number >= 1) AND (number <= 10))
2795
+ # # ) AS tracks ON (tracks.albums_id = albums.id)
2796
+ #
2797
+ # # For each artist, association_join load albums with year > 1990, and tracks for those albums
2798
+ # Artist.association_join(albums: {proc{|ds| ds.where{year > 1990}}=>:tracks}).all
2799
+ # # SELECT *
2800
+ # # FROM artists
2801
+ # # INNER JOIN (
2802
+ # # SELECT * FROM albums WHERE (year > 1990)
2803
+ # # ) AS albums ON (albums.artist_id = artists.id)
2804
+ # # INNER JOIN tracks ON (tracks.album_id = albums.id)
2805
+ def association_join(*associations)
2806
+ association_inner_join(*associations)
2807
+ end
2808
+
2809
+ # If the expression is in the form <tt>x = y</tt> where +y+ is a <tt>Sequel::Model</tt>
2810
+ # instance, array of <tt>Sequel::Model</tt> instances, or a <tt>Sequel::Model</tt> dataset,
2811
+ # assume +x+ is an association symbol and look up the association reflection
2812
+ # via the dataset's model. From there, return the appropriate SQL based on the type of
2813
+ # association and the values of the foreign/primary keys of +y+. For most association
2814
+ # types, this is a simple transformation, but for +many_to_many+ associations this
2815
+ # creates a subquery to the join table.
2816
+ def complex_expression_sql_append(sql, op, args)
2817
+ r = args[1]
2818
+ if (((op == :'=' || op == :'!=') && r.is_a?(Sequel::Model)) ||
2819
+ (multiple = ((op == :IN || op == :'NOT IN') && ((is_ds = r.is_a?(Sequel::Dataset)) || (r.respond_to?(:all?) && r.all?{|x| x.is_a?(Sequel::Model)})))))
2820
+ l = args[0]
2821
+ if ar = model.association_reflections[l]
2822
+ if multiple
2823
+ klass = ar.associated_class
2824
+ if is_ds
2825
+ if r.respond_to?(:model)
2826
+ unless r.model <= klass
2827
+ # A dataset for a different model class, could be a valid regular query
2828
+ return super
2829
+ end
2830
+ else
2831
+ # Not a model dataset, could be a valid regular query
2832
+ return super
2833
+ end
2834
+ else
2835
+ unless r.all?{|x| x.is_a?(klass)}
2836
+ raise Sequel::Error, "invalid association class for one object for association #{l.inspect} used in dataset filter for model #{model.inspect}, expected class #{klass.inspect}"
2837
+ end
2838
+ end
2839
+ elsif !r.is_a?(ar.associated_class)
2840
+ raise Sequel::Error, "invalid association class #{r.class.inspect} for association #{l.inspect} used in dataset filter for model #{model.inspect}, expected class #{ar.associated_class.inspect}"
2841
+ end
2842
+
2843
+ if exp = association_filter_expression(op, ar, r)
2844
+ literal_append(sql, exp)
2845
+ else
2846
+ raise Sequel::Error, "invalid association type #{ar[:type].inspect} for association #{l.inspect} used in dataset filter for model #{model.inspect}"
2847
+ end
2848
+ elsif multiple && (is_ds || r.empty?)
2849
+ # Not a query designed for this support, could be a valid regular query
2850
+ super
2851
+ else
2852
+ raise Sequel::Error, "invalid association #{l.inspect} used in dataset filter for model #{model.inspect}"
2853
+ end
2854
+ else
2855
+ super
2856
+ end
2857
+ end
2858
+
2859
+ # The preferred eager loading method. Loads all associated records using one
2860
+ # query for each association.
2861
+ #
2862
+ # The basic idea for how it works is that the dataset is first loaded normally.
2863
+ # Then it goes through all associations that have been specified via +eager+.
2864
+ # It loads each of those associations separately, then associates them back
2865
+ # to the original dataset via primary/foreign keys. Due to the necessity of
2866
+ # all objects being present, you need to use +all+ to use eager loading, as it
2867
+ # can't work with +each+.
2868
+ #
2869
+ # This implementation avoids the complexity of extracting an object graph out
2870
+ # of a single dataset, by building the object graph out of multiple datasets,
2871
+ # one for each association. By using a separate dataset for each association,
2872
+ # it avoids problems such as aliasing conflicts and creating cartesian product
2873
+ # result sets if multiple one_to_many or many_to_many eager associations are requested.
2874
+ #
2875
+ # One limitation of using this method is that you cannot filter the current dataset
2876
+ # based on values of columns in an associated table, since the associations are loaded
2877
+ # in separate queries. To do that you need to load all associations in the
2878
+ # same query, and extract an object graph from the results of that query. If you
2879
+ # need to filter based on columns in associated tables, look at +eager_graph+
2880
+ # or join the tables you need to filter on manually.
2881
+ #
2882
+ # Each association's order, if defined, is respected.
2883
+ # If the association uses a block or has an :eager_block argument, it is used.
2884
+ #
2885
+ # To modify the associated dataset that will be used for the eager load, you should use a
2886
+ # hash for the association, with the key being the association name symbol, and the value being
2887
+ # a callable object that is called with the associated dataset and should return a modified
2888
+ # dataset. If that association also has dependent associations, instead of a callable object,
2889
+ # use a hash with the callable object being the key, and the dependent association(s) as the value.
2890
+ #
2891
+ # Examples:
2892
+ #
2893
+ # # For each album, eager load the artist
2894
+ # Album.eager(:artist).all
2895
+ # # SELECT * FROM albums
2896
+ # # SELECT * FROM artists WHERE (id IN (...))
2897
+ #
2898
+ # # For each album, eager load the artist and genre
2899
+ # Album.eager(:artist, :genre).all
2900
+ # Album.eager(:artist).eager(:genre).all
2901
+ # # SELECT * FROM albums
2902
+ # # SELECT * FROM artists WHERE (id IN (...))
2903
+ # # SELECT * FROM genres WHERE (id IN (...))
2904
+ #
2905
+ # # For each artist, eager load albums and tracks for each album
2906
+ # Artist.eager(albums: :tracks).all
2907
+ # # SELECT * FROM artists
2908
+ # # SELECT * FROM albums WHERE (artist_id IN (...))
2909
+ # # SELECT * FROM tracks WHERE (album_id IN (...))
2910
+ #
2911
+ # # For each artist, eager load albums, tracks for each album, and genre for each track
2912
+ # Artist.eager(albums: {tracks: :genre}).all
2913
+ # # SELECT * FROM artists
2914
+ # # SELECT * FROM albums WHERE (artist_id IN (...))
2915
+ # # SELECT * FROM tracks WHERE (album_id IN (...))
2916
+ # # SELECT * FROM genre WHERE (id IN (...))
2917
+ #
2918
+ # # For each artist, eager load albums with year > 1990
2919
+ # Artist.eager(albums: proc{|ds| ds.where{year > 1990}}).all
2920
+ # # SELECT * FROM artists
2921
+ # # SELECT * FROM albums WHERE ((year > 1990) AND (artist_id IN (...)))
2922
+ #
2923
+ # # For each artist, eager load albums and tracks 1-10 for each album
2924
+ # Artist.eager(albums: {tracks: proc{|ds| ds.where(number: 1..10)}}).all
2925
+ # # SELECT * FROM artists
2926
+ # # SELECT * FROM albums WHERE (artist_id IN (...))
2927
+ # # SELECT * FROM tracks WHERE ((number >= 1) AND (number <= 10) AND (album_id IN (...)))
2928
+ #
2929
+ # # For each artist, eager load albums with year > 1990, and tracks for those albums
2930
+ # Artist.eager(albums: {proc{|ds| ds.where{year > 1990}}=>:tracks}).all
2931
+ # # SELECT * FROM artists
2932
+ # # SELECT * FROM albums WHERE ((year > 1990) AND (artist_id IN (...)))
2933
+ # # SELECT * FROM albums WHERE (artist_id IN (...))
2934
+ def eager(*associations)
2935
+ opts = @opts[:eager]
2936
+ association_opts = eager_options_for_associations(associations)
2937
+ opts = opts ? opts.merge(association_opts) : association_opts
2938
+ clone(:eager=>opts.freeze)
2939
+ end
2940
+
2941
+ # The secondary eager loading method. Loads all associations in a single query. This
2942
+ # method should only be used if you need to filter or order based on columns in associated tables,
2943
+ # or if you have done comparative benchmarking it and determined it is faster.
2944
+ #
2945
+ # This method uses <tt>Dataset#graph</tt> to create appropriate aliases for columns in all the
2946
+ # tables. Then it uses the graph's metadata to build the associations from the single hash, and
2947
+ # finally replaces the array of hashes with an array model objects inside all.
2948
+ #
2949
+ # Be very careful when using this with multiple one_to_many or many_to_many associations, as you can
2950
+ # create large cartesian products. If you must graph multiple one_to_many and many_to_many associations,
2951
+ # make sure your filters are narrow if the datasets are large.
2952
+ #
2953
+ # Each association's order, if defined, is respected. +eager_graph+ probably
2954
+ # won't work correctly on a limited dataset, unless you are
2955
+ # only graphing many_to_one, one_to_one, and one_through_one associations.
2956
+ #
2957
+ # Does not use the block defined for the association, since it does a single query for
2958
+ # all objects. You can use the :graph_* association options to modify the SQL query.
2959
+ #
2960
+ # Like +eager+, you need to call +all+ on the dataset for the eager loading to work. If you just
2961
+ # call +each+, it will yield plain hashes, each containing all columns from all the tables.
2962
+ #
2963
+ # To modify the associated dataset that will be joined to the current dataset, you should use a
2964
+ # hash for the association, with the key being the association name symbol, and the value being
2965
+ # a callable object that is called with the associated dataset and should return a modified
2966
+ # dataset. If that association also has dependent associations, instead of a callable object,
2967
+ # use a hash with the callable object being the key, and the dependent association(s) as the value.
2968
+ #
2969
+ # You can specify an alias by providing a Sequel::SQL::AliasedExpression object instead of
2970
+ # an a Symbol for the assocation name.
2971
+ #
2972
+ # Examples:
2973
+ #
2974
+ # # For each album, eager_graph load the artist
2975
+ # Album.eager_graph(:artist).all
2976
+ # # SELECT ...
2977
+ # # FROM albums
2978
+ # # LEFT OUTER JOIN artists AS artist ON (artists.id = albums.artist_id)
2979
+ #
2980
+ # # For each album, eager_graph load the artist, using a specified alias
2981
+ # Album.eager_graph(Sequel[:artist].as(:a)).all
2982
+ # # SELECT ...
2983
+ # # FROM albums
2984
+ # # LEFT OUTER JOIN artists AS a ON (a.id = albums.artist_id)
2985
+ #
2986
+ # # For each album, eager_graph load the artist and genre
2987
+ # Album.eager_graph(:artist, :genre).all
2988
+ # Album.eager_graph(:artist).eager_graph(:genre).all
2989
+ # # SELECT ...
2990
+ # # FROM albums
2991
+ # # LEFT OUTER JOIN artists AS artist ON (artist.id = albums.artist_id)
2992
+ # # LEFT OUTER JOIN genres AS genre ON (genre.id = albums.genre_id)
2993
+ #
2994
+ # # For each artist, eager_graph load albums and tracks for each album
2995
+ # Artist.eager_graph(albums: :tracks).all
2996
+ # # SELECT ...
2997
+ # # FROM artists
2998
+ # # LEFT OUTER JOIN albums ON (albums.artist_id = artists.id)
2999
+ # # LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)
3000
+ #
3001
+ # # For each artist, eager_graph load albums, tracks for each album, and genre for each track
3002
+ # Artist.eager_graph(albums: {tracks: :genre}).all
3003
+ # # SELECT ...
3004
+ # # FROM artists
3005
+ # # LEFT OUTER JOIN albums ON (albums.artist_id = artists.id)
3006
+ # # LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)
3007
+ # # LEFT OUTER JOIN genres AS genre ON (genre.id = tracks.genre_id)
3008
+ #
3009
+ # # For each artist, eager_graph load albums with year > 1990
3010
+ # Artist.eager_graph(albums: proc{|ds| ds.where{year > 1990}}).all
3011
+ # # SELECT ...
3012
+ # # FROM artists
3013
+ # # LEFT OUTER JOIN (
3014
+ # # SELECT * FROM albums WHERE (year > 1990)
3015
+ # # ) AS albums ON (albums.artist_id = artists.id)
3016
+ #
3017
+ # # For each artist, eager_graph load albums and tracks 1-10 for each album
3018
+ # Artist.eager_graph(albums: {tracks: proc{|ds| ds.where(number: 1..10)}}).all
3019
+ # # SELECT ...
3020
+ # # FROM artists
3021
+ # # LEFT OUTER JOIN albums ON (albums.artist_id = artists.id)
3022
+ # # LEFT OUTER JOIN (
3023
+ # # SELECT * FROM tracks WHERE ((number >= 1) AND (number <= 10))
3024
+ # # ) AS tracks ON (tracks.albums_id = albums.id)
3025
+ #
3026
+ # # For each artist, eager_graph load albums with year > 1990, and tracks for those albums
3027
+ # Artist.eager_graph(albums: {proc{|ds| ds.where{year > 1990}}=>:tracks}).all
3028
+ # # SELECT ...
3029
+ # # FROM artists
3030
+ # # LEFT OUTER JOIN (
3031
+ # # SELECT * FROM albums WHERE (year > 1990)
3032
+ # # ) AS albums ON (albums.artist_id = artists.id)
3033
+ # # LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)
3034
+ def eager_graph(*associations)
3035
+ eager_graph_with_options(associations)
3036
+ end
3037
+
3038
+ # Run eager_graph with some options specific to just this call. Unlike eager_graph, this takes
3039
+ # the associations as a single argument instead of multiple arguments.
3040
+ #
3041
+ # Options:
3042
+ #
3043
+ # :join_type :: Override the join type specified in the association
3044
+ # :limit_strategy :: Use a strategy for handling limits on associations.
3045
+ # Appropriate :limit_strategy values are:
3046
+ # true :: Pick the most appropriate based on what the database supports
3047
+ # :distinct_on :: Force use of DISTINCT ON stategy (*_one associations only)
3048
+ # :correlated_subquery :: Force use of correlated subquery strategy (one_to_* associations only)
3049
+ # :window_function :: Force use of window function strategy
3050
+ # :ruby :: Don't modify the SQL, implement limits/offsets with array slicing
3051
+ #
3052
+ # This can also be a hash with association name symbol keys and one of the above values,
3053
+ # to use different strategies per association.
3054
+ #
3055
+ # The default is the :ruby strategy. Choosing a different strategy can make your code
3056
+ # significantly slower in some cases (perhaps even the majority of cases), so you should
3057
+ # only use this if you have benchmarked that it is faster for your use cases.
3058
+ def eager_graph_with_options(associations, opts=OPTS)
3059
+ opts = opts.dup unless opts.frozen?
3060
+ associations = [associations] unless associations.is_a?(Array)
3061
+ ds = if eg = @opts[:eager_graph]
3062
+ eg = eg.dup
3063
+ [:requirements, :reflections, :reciprocals, :limits].each{|k| eg[k] = eg[k].dup}
3064
+ eg[:local] = opts
3065
+ ds = clone(:eager_graph=>eg)
3066
+ ds.eager_graph_associations(ds, model, ds.opts[:eager_graph][:master], [], *associations)
3067
+ else
3068
+ # Each of the following have a symbol key for the table alias, with the following values:
3069
+ # :reciprocals :: the reciprocal value to use for this association
3070
+ # :reflections :: AssociationReflection instance related to this association
3071
+ # :requirements :: array of requirements for this association
3072
+ # :limits :: Any limit/offset array slicing that need to be handled in ruby land after loading
3073
+ opts = {:requirements=>{}, :master=>alias_symbol(first_source), :reflections=>{}, :reciprocals=>{}, :limits=>{}, :local=>opts, :cartesian_product_number=>0, :row_proc=>row_proc}
3074
+ ds = clone(:eager_graph=>opts)
3075
+ ds = ds.eager_graph_associations(ds, model, ds.opts[:eager_graph][:master], [], *associations).naked
3076
+ end
3077
+
3078
+ ds.opts[:eager_graph].freeze
3079
+ ds.opts[:eager_graph].each_value{|v| v.freeze if v.is_a?(Hash)}
3080
+ ds
3081
+ end
3082
+
3083
+ # If the dataset is being eagerly loaded, default to calling all
3084
+ # instead of each.
3085
+ def as_hash(key_column=nil, value_column=nil, opts=OPTS)
3086
+ if (@opts[:eager_graph] || @opts[:eager]) && !opts.has_key?(:all)
3087
+ opts = Hash[opts]
3088
+ opts[:all] = true
3089
+ end
3090
+ super
3091
+ end
3092
+
3093
+ # If the dataset is being eagerly loaded, default to calling all
3094
+ # instead of each.
3095
+ def to_hash_groups(key_column, value_column=nil, opts=OPTS)
3096
+ if (@opts[:eager_graph] || @opts[:eager]) && !opts.has_key?(:all)
3097
+ opts = Hash[opts]
3098
+ opts[:all] = true
3099
+ end
3100
+ super
3101
+ end
3102
+
3103
+ # Do not attempt to split the result set into associations,
3104
+ # just return results as simple objects. This is useful if you
3105
+ # want to use eager_graph as a shortcut to have all of the joins
3106
+ # and aliasing set up, but want to do something else with the dataset.
3107
+ def ungraphed
3108
+ ds = super.clone(:eager_graph=>nil)
3109
+ if (eg = @opts[:eager_graph]) && (rp = eg[:row_proc])
3110
+ ds = ds.with_row_proc(rp)
3111
+ end
3112
+ ds
3113
+ end
3114
+
3115
+ protected
3116
+
3117
+ # Call graph on the association with the correct arguments,
3118
+ # update the eager_graph data structure, and recurse into
3119
+ # eager_graph_associations if there are any passed in associations
3120
+ # (which would be dependencies of the current association)
3121
+ #
3122
+ # Arguments:
3123
+ # ds :: Current dataset
3124
+ # model :: Current Model
3125
+ # ta :: table_alias used for the parent association
3126
+ # requirements :: an array, used as a stack for requirements
3127
+ # r :: association reflection for the current association, or an SQL::AliasedExpression
3128
+ # with the reflection as the expression and the alias base as the aliaz.
3129
+ # *associations :: any associations dependent on this one
3130
+ def eager_graph_association(ds, model, ta, requirements, r, *associations)
3131
+ if r.is_a?(SQL::AliasedExpression)
3132
+ alias_base = r.alias
3133
+ r = r.expression
3134
+ else
3135
+ alias_base = r[:graph_alias_base]
3136
+ end
3137
+ assoc_table_alias = ds.unused_table_alias(alias_base)
3138
+ loader = r[:eager_grapher]
3139
+ if !associations.empty?
3140
+ if associations.first.respond_to?(:call)
3141
+ callback = associations.first
3142
+ associations = {}
3143
+ elsif associations.length == 1 && (assocs = associations.first).is_a?(Hash) && assocs.length == 1 && (pr_assoc = assocs.to_a.first) && pr_assoc.first.respond_to?(:call)
3144
+ callback, assoc = pr_assoc
3145
+ associations = assoc.is_a?(Array) ? assoc : [assoc]
3146
+ end
3147
+ end
3148
+ local_opts = ds.opts[:eager_graph][:local]
3149
+ limit_strategy = r.eager_graph_limit_strategy(local_opts[:limit_strategy])
3150
+
3151
+ if r[:conditions] && !Sequel.condition_specifier?(r[:conditions]) && !r[:orig_opts].has_key?(:graph_conditions) && !r[:orig_opts].has_key?(:graph_only_conditions) && !r.has_key?(:graph_block)
3152
+ raise Error, "Cannot eager_graph association when :conditions specified and not a hash or an array of pairs. Specify :graph_conditions, :graph_only_conditions, or :graph_block for the association. Model: #{r[:model]}, association: #{r[:name]}"
3153
+ end
3154
+
3155
+ ds = loader.call(:self=>ds, :table_alias=>assoc_table_alias, :implicit_qualifier=>(ta == ds.opts[:eager_graph][:master]) ? first_source : qualifier_from_alias_symbol(ta, first_source), :callback=>callback, :join_type=>local_opts[:join_type], :join_only=>local_opts[:join_only], :limit_strategy=>limit_strategy, :from_self_alias=>ds.opts[:eager_graph][:master])
3156
+ if r[:order_eager_graph] && (order = r.fetch(:graph_order, r[:order]))
3157
+ ds = ds.order_append(*qualified_expression(order, assoc_table_alias))
3158
+ end
3159
+ eager_graph = ds.opts[:eager_graph]
3160
+ eager_graph[:requirements][assoc_table_alias] = requirements.dup
3161
+ eager_graph[:reflections][assoc_table_alias] = r
3162
+ if limit_strategy == :ruby
3163
+ eager_graph[:limits][assoc_table_alias] = r.limit_and_offset
3164
+ end
3165
+ eager_graph[:cartesian_product_number] += r[:cartesian_product_number] || 2
3166
+ ds = ds.eager_graph_associations(ds, r.associated_class, assoc_table_alias, requirements + [assoc_table_alias], *associations) unless associations.empty?
3167
+ ds
3168
+ end
3169
+
3170
+ # Check the associations are valid for the given model.
3171
+ # Call eager_graph_association on each association.
3172
+ #
3173
+ # Arguments:
3174
+ # ds :: Current dataset
3175
+ # model :: Current Model
3176
+ # ta :: table_alias used for the parent association
3177
+ # requirements :: an array, used as a stack for requirements
3178
+ # *associations :: the associations to add to the graph
3179
+ def eager_graph_associations(ds, model, ta, requirements, *associations)
3180
+ return ds if associations.empty?
3181
+ associations.flatten.each do |association|
3182
+ ds = case association
3183
+ when Symbol, SQL::AliasedExpression
3184
+ ds.eager_graph_association(ds, model, ta, requirements, eager_graph_check_association(model, association))
3185
+ when Hash
3186
+ association.each do |assoc, assoc_assocs|
3187
+ ds = ds.eager_graph_association(ds, model, ta, requirements, eager_graph_check_association(model, assoc), assoc_assocs)
3188
+ end
3189
+ ds
3190
+ else
3191
+ raise(Sequel::Error, 'Associations must be in the form of a symbol or hash')
3192
+ end
3193
+ end
3194
+ ds
3195
+ end
3196
+
3197
+ # Replace the array of plain hashes with an array of model objects will all eager_graphed
3198
+ # associations set in the associations cache for each object.
3199
+ def eager_graph_build_associations(hashes)
3200
+ hashes.replace(_eager_graph_build_associations(hashes, eager_graph_loader))
3201
+ end
3202
+
3203
+ private
3204
+
3205
+ # Return a new dataset with JOINs of the given type added, using the tables and
3206
+ # conditions specified by the associations.
3207
+ def _association_join(type, associations)
3208
+ clone(:join=>clone(:graph_from_self=>false).eager_graph_with_options(associations, :join_type=>type, :join_only=>true).opts[:join])
3209
+ end
3210
+
3211
+ # Process the array of hashes using the eager graph loader to return an array
3212
+ # of model objects with the associations set.
3213
+ def _eager_graph_build_associations(hashes, egl)
3214
+ egl.load(hashes)
3215
+ end
3216
+
3217
+ # If the association has conditions itself, then it requires additional filters be
3218
+ # added to the current dataset to ensure that the passed in object would also be
3219
+ # included by the association's conditions.
3220
+ def add_association_filter_conditions(ref, obj, expr)
3221
+ if expr != SQL::Constants::FALSE && ref.filter_by_associations_add_conditions?
3222
+ Sequel[ref.filter_by_associations_conditions_expression(obj)]
3223
+ else
3224
+ expr
3225
+ end
3226
+ end
3227
+
3228
+ # Process the array of associations arguments (Symbols, Arrays, and Hashes),
3229
+ # and return a hash of options suitable for cascading.
3230
+ def eager_options_for_associations(associations)
3231
+ opts = {}
3232
+ associations.flatten.each do |association|
3233
+ case association
3234
+ when Symbol
3235
+ check_association(model, association)
3236
+ opts[association] = nil
3237
+ when Hash
3238
+ association.keys.each{|assoc| check_association(model, assoc)}
3239
+ opts.merge!(association)
3240
+ else
3241
+ raise(Sequel::Error, 'Associations must be in the form of a symbol or hash')
3242
+ end
3243
+ end
3244
+ opts
3245
+ end
3246
+
3247
+ # Return an expression for filtering by the given association reflection and associated object.
3248
+ def association_filter_expression(op, ref, obj)
3249
+ meth = :"#{ref[:type]}_association_filter_expression"
3250
+ # Allow calling private association specific method to get filter expression
3251
+ send(meth, op, ref, obj) if respond_to?(meth, true)
3252
+ end
3253
+
3254
+ # Handle inversion for association filters by returning an inverted expression,
3255
+ # plus also handling cases where the referenced columns are NULL.
3256
+ def association_filter_handle_inversion(op, exp, cols)
3257
+ if op == :'!=' || op == :'NOT IN'
3258
+ if exp == SQL::Constants::FALSE
3259
+ ~exp
3260
+ else
3261
+ ~exp | Sequel::SQL::BooleanExpression.from_value_pairs(cols.zip([]), :OR)
3262
+ end
3263
+ else
3264
+ exp
3265
+ end
3266
+ end
3267
+
3268
+ # Return an expression for making sure that the given keys match the value of
3269
+ # the given methods for either the single object given or for any of the objects
3270
+ # given if +obj+ is an array.
3271
+ def association_filter_key_expression(keys, meths, obj)
3272
+ vals = if obj.is_a?(Sequel::Dataset)
3273
+ {(keys.length == 1 ? keys.first : keys)=>obj.select(*meths).exclude(Sequel::SQL::BooleanExpression.from_value_pairs(meths.zip([]), :OR))}
3274
+ else
3275
+ vals = Array(obj).reject{|o| !meths.all?{|m| o.get_column_value(m)}}
3276
+ return SQL::Constants::FALSE if vals.empty?
3277
+ if obj.is_a?(Array)
3278
+ if keys.length == 1
3279
+ meth = meths.first
3280
+ {keys.first=>vals.map{|o| o.get_column_value(meth)}}
3281
+ else
3282
+ {keys=>vals.map{|o| meths.map{|m| o.get_column_value(m)}}}
3283
+ end
3284
+ else
3285
+ keys.zip(meths.map{|k| obj.get_column_value(k)})
3286
+ end
3287
+ end
3288
+ SQL::BooleanExpression.from_value_pairs(vals)
3289
+ end
3290
+
3291
+ # Make sure the association is valid for this model, and return the related AssociationReflection.
3292
+ def check_association(model, association)
3293
+ raise(Sequel::UndefinedAssociation, "Invalid association #{association} for #{model.name}") unless reflection = model.association_reflection(association)
3294
+ raise(Sequel::Error, "Eager loading is not allowed for #{model.name} association #{association}") if reflection[:allow_eager] == false
3295
+ reflection
3296
+ end
3297
+
3298
+ # Allow associations that are eagerly graphed to be specified as an SQL::AliasedExpression, for
3299
+ # per-call determining of the alias base.
3300
+ def eager_graph_check_association(model, association)
3301
+ if association.is_a?(SQL::AliasedExpression)
3302
+ expr = association.expression
3303
+ if expr.is_a?(SQL::Identifier)
3304
+ expr = expr.value
3305
+ if expr.is_a?(String)
3306
+ expr = expr.to_sym
3307
+ end
3308
+ end
3309
+
3310
+ SQL::AliasedExpression.new(check_association(model, expr), association.alias)
3311
+ else
3312
+ check_association(model, association)
3313
+ end
3314
+ end
3315
+
3316
+ # The EagerGraphLoader instance used for converting eager_graph results.
3317
+ def eager_graph_loader
3318
+ unless egl = cache_get(:_model_eager_graph_loader)
3319
+ egl = cache_set(:_model_eager_graph_loader, EagerGraphLoader.new(self))
3320
+ end
3321
+ egl.dup
3322
+ end
3323
+
3324
+ # Eagerly load all specified associations
3325
+ def eager_load(a, eager_assoc=@opts[:eager])
3326
+ return if a.empty?
3327
+ # Key is foreign/primary key name symbol.
3328
+ # Value is hash with keys being foreign/primary key values (generally integers)
3329
+ # and values being an array of current model objects with that specific foreign/primary key
3330
+ key_hash = {}
3331
+ # Reflections for all associations to eager load
3332
+ reflections = eager_assoc.keys.map{|assoc| model.association_reflection(assoc) || (raise Sequel::UndefinedAssociation, "Model: #{self}, Association: #{assoc}")}
3333
+
3334
+ # Populate the key_hash entry for each association being eagerly loaded
3335
+ reflections.each do |r|
3336
+ if key = r.eager_loader_key
3337
+ # key_hash for this key has already been populated,
3338
+ # skip populating again so that duplicate values
3339
+ # aren't added.
3340
+ unless id_map = key_hash[key]
3341
+ id_map = key_hash[key] = Hash.new{|h,k| h[k] = []}
3342
+
3343
+ # Supporting both single (Symbol) and composite (Array) keys.
3344
+ a.each do |rec|
3345
+ case key
3346
+ when Array
3347
+ if (k = key.map{|k2| rec.get_column_value(k2)}) && k.all?
3348
+ id_map[k] << rec
3349
+ end
3350
+ when Symbol
3351
+ if k = rec.get_column_value(key)
3352
+ id_map[k] << rec
3353
+ end
3354
+ else
3355
+ raise Error, "unhandled eager_loader_key #{key.inspect} for association #{r[:name]}"
3356
+ end
3357
+ end
3358
+ end
3359
+ else
3360
+ id_map = nil
3361
+ end
3362
+
3363
+ loader = r[:eager_loader]
3364
+ associations = eager_assoc[r[:name]]
3365
+ if associations.respond_to?(:call)
3366
+ eager_block = associations
3367
+ associations = OPTS
3368
+ elsif associations.is_a?(Hash) && associations.length == 1 && (pr_assoc = associations.to_a.first) && pr_assoc.first.respond_to?(:call)
3369
+ eager_block, associations = pr_assoc
3370
+ end
3371
+ loader.call(:key_hash=>key_hash, :rows=>a, :associations=>associations, :self=>self, :eager_block=>eager_block, :id_map=>id_map)
3372
+ a.each{|object| object.send(:run_association_callbacks, r, :after_load, object.associations[r[:name]])} if r[:after_load]
3373
+ end
3374
+ end
3375
+
3376
+ # Return a subquery expression for filering by a many_to_many association
3377
+ def many_to_many_association_filter_expression(op, ref, obj)
3378
+ lpks, lks, rks = ref.values_at(:left_primary_key_columns, :left_keys, :right_keys)
3379
+ jt = ref.join_table_alias
3380
+ lpks = lpks.first if lpks.length == 1
3381
+ lpks = ref.qualify(model.table_name, lpks)
3382
+
3383
+ meths = if obj.is_a?(Sequel::Dataset)
3384
+ ref.qualify(obj.model.table_name, ref.right_primary_keys)
3385
+ else
3386
+ ref.right_primary_key_methods
3387
+ end
3388
+
3389
+ expr = association_filter_key_expression(ref.qualify(jt, rks), meths, obj)
3390
+ unless expr == SQL::Constants::FALSE
3391
+ expr = SQL::BooleanExpression.from_value_pairs(lpks=>model.db.from(ref[:join_table]).select(*ref.qualify(jt, lks)).where(expr).exclude(SQL::BooleanExpression.from_value_pairs(ref.qualify(jt, lks).zip([]), :OR)))
3392
+ expr = add_association_filter_conditions(ref, obj, expr)
3393
+ end
3394
+
3395
+ association_filter_handle_inversion(op, expr, Array(lpks))
3396
+ end
3397
+ alias one_through_one_association_filter_expression many_to_many_association_filter_expression
3398
+
3399
+ # Return a simple equality expression for filering by a many_to_one association
3400
+ def many_to_one_association_filter_expression(op, ref, obj)
3401
+ keys = ref.qualify(model.table_name, ref[:key_columns])
3402
+ meths = if obj.is_a?(Sequel::Dataset)
3403
+ ref.qualify(obj.model.table_name, ref.primary_keys)
3404
+ else
3405
+ ref.primary_key_methods
3406
+ end
3407
+
3408
+ expr = association_filter_key_expression(keys, meths, obj)
3409
+ expr = add_association_filter_conditions(ref, obj, expr)
3410
+ association_filter_handle_inversion(op, expr, keys)
3411
+ end
3412
+
3413
+ # Return a simple equality expression for filering by a one_to_* association
3414
+ def one_to_many_association_filter_expression(op, ref, obj)
3415
+ keys = ref.qualify(model.table_name, ref[:primary_key_columns])
3416
+ meths = if obj.is_a?(Sequel::Dataset)
3417
+ ref.qualify(obj.model.table_name, ref[:keys])
3418
+ else
3419
+ ref[:key_methods]
3420
+ end
3421
+
3422
+ expr = association_filter_key_expression(keys, meths, obj)
3423
+ expr = add_association_filter_conditions(ref, obj, expr)
3424
+ association_filter_handle_inversion(op, expr, keys)
3425
+ end
3426
+ alias one_to_one_association_filter_expression one_to_many_association_filter_expression
3427
+
3428
+ def non_sql_option?(key)
3429
+ super || key == :eager || key == :eager_graph
3430
+ end
3431
+
3432
+ # Build associations from the graph if #eager_graph was used,
3433
+ # and/or load other associations if #eager was used.
3434
+ def post_load(all_records)
3435
+ eager_graph_build_associations(all_records) if @opts[:eager_graph]
3436
+ eager_load(all_records) if @opts[:eager] && (row_proc || @opts[:eager_graph])
3437
+ super
3438
+ end
3439
+ end
3440
+
3441
+ # This class is the internal implementation of eager_graph. It is responsible for taking an array of plain
3442
+ # hashes and returning an array of model objects with all eager_graphed associations already set in the
3443
+ # association cache.
3444
+ class EagerGraphLoader
3445
+ # Hash with table alias symbol keys and after_load hook values
3446
+ attr_reader :after_load_map
3447
+
3448
+ # Hash with table alias symbol keys and association name values
3449
+ attr_reader :alias_map
3450
+
3451
+ # Hash with table alias symbol keys and subhash values mapping column_alias symbols to the
3452
+ # symbol of the real name of the column
3453
+ attr_reader :column_maps
3454
+
3455
+ # Recursive hash with table alias symbol keys mapping to hashes with dependent table alias symbol keys.
3456
+ attr_reader :dependency_map
3457
+
3458
+ # Hash with table alias symbol keys and [limit, offset] values
3459
+ attr_reader :limit_map
3460
+
3461
+ # The table alias symbol for the primary model
3462
+ attr_reader :master
3463
+
3464
+ # Hash with table alias symbol keys and primary key symbol values (or arrays of primary key symbols for
3465
+ # composite key tables)
3466
+ attr_reader :primary_keys
3467
+
3468
+ # Hash with table alias symbol keys and reciprocal association symbol values,
3469
+ # used for setting reciprocals for one_to_many associations.
3470
+ attr_reader :reciprocal_map
3471
+
3472
+ # Hash with table alias symbol keys and subhash values mapping primary key symbols (or array of symbols)
3473
+ # to model instances. Used so that only a single model instance is created for each object.
3474
+ attr_reader :records_map
3475
+
3476
+ # Hash with table alias symbol keys and AssociationReflection values
3477
+ attr_reader :reflection_map
3478
+
3479
+ # Hash with table alias symbol keys and callable values used to create model instances
3480
+ attr_reader :row_procs
3481
+
3482
+ # Hash with table alias symbol keys and true/false values, where true means the
3483
+ # association represented by the table alias uses an array of values instead of
3484
+ # a single value (i.e. true => *_many, false => *_to_one).
3485
+ attr_reader :type_map
3486
+
3487
+ # Initialize all of the data structures used during loading.
3488
+ def initialize(dataset)
3489
+ opts = dataset.opts
3490
+ eager_graph = opts[:eager_graph]
3491
+ @master = eager_graph[:master]
3492
+ requirements = eager_graph[:requirements]
3493
+ reflection_map = @reflection_map = eager_graph[:reflections]
3494
+ reciprocal_map = @reciprocal_map = eager_graph[:reciprocals]
3495
+ limit_map = @limit_map = eager_graph[:limits]
3496
+ @unique = eager_graph[:cartesian_product_number] > 1
3497
+
3498
+ alias_map = @alias_map = {}
3499
+ type_map = @type_map = {}
3500
+ after_load_map = @after_load_map = {}
3501
+ reflection_map.each do |k, v|
3502
+ alias_map[k] = v[:name]
3503
+ after_load_map[k] = v[:after_load] if v[:after_load]
3504
+ type_map[k] = if v.returns_array?
3505
+ true
3506
+ elsif (limit_and_offset = limit_map[k]) && !limit_and_offset.last.nil?
3507
+ :offset
3508
+ end
3509
+ end
3510
+ after_load_map.freeze
3511
+ alias_map.freeze
3512
+ type_map.freeze
3513
+
3514
+ # Make dependency map hash out of requirements array for each association.
3515
+ # This builds a tree of dependencies that will be used for recursion
3516
+ # to ensure that all parts of the object graph are loaded into the
3517
+ # appropriate subordinate association.
3518
+ dependency_map = @dependency_map = {}
3519
+ # Sort the associations by requirements length, so that
3520
+ # requirements are added to the dependency hash before their
3521
+ # dependencies.
3522
+ requirements.sort_by{|a| a[1].length}.each do |ta, deps|
3523
+ if deps.empty?
3524
+ dependency_map[ta] = {}
3525
+ else
3526
+ deps = deps.dup
3527
+ hash = dependency_map[deps.shift]
3528
+ deps.each do |dep|
3529
+ hash = hash[dep]
3530
+ end
3531
+ hash[ta] = {}
3532
+ end
3533
+ end
3534
+ freezer = lambda do |h|
3535
+ h.freeze
3536
+ h.each_value(&freezer)
3537
+ end
3538
+ freezer.call(dependency_map)
3539
+
3540
+ datasets = opts[:graph][:table_aliases].to_a.reject{|ta,ds| ds.nil?}
3541
+ column_aliases = opts[:graph][:column_aliases]
3542
+ primary_keys = {}
3543
+ column_maps = {}
3544
+ models = {}
3545
+ row_procs = {}
3546
+ datasets.each do |ta, ds|
3547
+ models[ta] = ds.model
3548
+ primary_keys[ta] = []
3549
+ column_maps[ta] = {}
3550
+ row_procs[ta] = ds.row_proc
3551
+ end
3552
+ column_aliases.each do |col_alias, tc|
3553
+ ta, column = tc
3554
+ column_maps[ta][col_alias] = column
3555
+ end
3556
+ column_maps.each do |ta, h|
3557
+ pk = models[ta].primary_key
3558
+ if pk.is_a?(Array)
3559
+ primary_keys[ta] = []
3560
+ h.select{|ca, c| primary_keys[ta] << ca if pk.include?(c)}
3561
+ else
3562
+ h.select{|ca, c| primary_keys[ta] = ca if pk == c}
3563
+ end
3564
+ end
3565
+ @column_maps = column_maps.freeze
3566
+ @primary_keys = primary_keys.freeze
3567
+ @row_procs = row_procs.freeze
3568
+
3569
+ # For performance, create two special maps for the master table,
3570
+ # so you can skip a hash lookup.
3571
+ @master_column_map = column_maps[master]
3572
+ @master_primary_keys = primary_keys[master]
3573
+
3574
+ # Add a special hash mapping table alias symbols to 5 element arrays that just
3575
+ # contain the data in other data structures for that table alias. This is
3576
+ # used for performance, to get all values in one hash lookup instead of
3577
+ # separate hash lookups for each data structure.
3578
+ ta_map = {}
3579
+ alias_map.each_key do |ta|
3580
+ ta_map[ta] = [row_procs[ta], alias_map[ta], type_map[ta], reciprocal_map[ta]].freeze
3581
+ end
3582
+ @ta_map = ta_map.freeze
3583
+ freeze
3584
+ end
3585
+
3586
+ # Return an array of primary model instances with the associations cache prepopulated
3587
+ # for all model objects (both primary and associated).
3588
+ def load(hashes)
3589
+ # This mapping is used to make sure that duplicate entries in the
3590
+ # result set are mapped to a single record. For example, using a
3591
+ # single one_to_many association with 10 associated records,
3592
+ # the main object column values appear in the object graph 10 times.
3593
+ # We map by primary key, if available, or by the object's entire values,
3594
+ # if not. The mapping must be per table, so create sub maps for each table
3595
+ # alias.
3596
+ @records_map = records_map = {}
3597
+ alias_map.keys.each{|ta| records_map[ta] = {}}
3598
+
3599
+ master = master()
3600
+
3601
+ # Assign to local variables for speed increase
3602
+ rp = row_procs[master]
3603
+ rm = records_map[master] = {}
3604
+ dm = dependency_map
3605
+
3606
+ records_map.freeze
3607
+
3608
+ # This will hold the final record set that we will be replacing the object graph with.
3609
+ records = []
3610
+
3611
+ hashes.each do |h|
3612
+ unless key = master_pk(h)
3613
+ key = hkey(master_hfor(h))
3614
+ end
3615
+ unless primary_record = rm[key]
3616
+ primary_record = rm[key] = rp.call(master_hfor(h))
3617
+ # Only add it to the list of records to return if it is a new record
3618
+ records.push(primary_record)
3619
+ end
3620
+ # Build all associations for the current object and it's dependencies
3621
+ _load(dm, primary_record, h)
3622
+ end
3623
+
3624
+ # Remove duplicate records from all associations if this graph could possibly be a cartesian product
3625
+ # Run after_load procs if there are any
3626
+ post_process(records, dm) if @unique || !after_load_map.empty? || !limit_map.empty?
3627
+
3628
+ records_map.each_value(&:freeze)
3629
+ freeze
3630
+
3631
+ records
3632
+ end
3633
+
3634
+ private
3635
+
3636
+ # Recursive method that creates associated model objects and associates them to the current model object.
3637
+ def _load(dependency_map, current, h)
3638
+ dependency_map.each do |ta, deps|
3639
+ unless key = pk(ta, h)
3640
+ ta_h = hfor(ta, h)
3641
+ unless ta_h.values.any?
3642
+ assoc_name = alias_map[ta]
3643
+ unless (assoc = current.associations).has_key?(assoc_name)
3644
+ assoc[assoc_name] = type_map[ta] ? [] : nil
3645
+ end
3646
+ next
3647
+ end
3648
+ key = hkey(ta_h)
3649
+ end
3650
+ rp, assoc_name, tm, rcm = @ta_map[ta]
3651
+ rm = records_map[ta]
3652
+
3653
+ # Check type map for all dependencies, and use a unique
3654
+ # object if any are dependencies for multiple objects,
3655
+ # to prevent duplicate objects from showing up in the case
3656
+ # the normal duplicate removal code is not being used.
3657
+ if !@unique && !deps.empty? && deps.any?{|dep_key,_| @ta_map[dep_key][2]}
3658
+ key = [current.object_id, key]
3659
+ end
3660
+
3661
+ unless rec = rm[key]
3662
+ rec = rm[key] = rp.call(hfor(ta, h))
3663
+ end
3664
+
3665
+ if tm
3666
+ unless (assoc = current.associations).has_key?(assoc_name)
3667
+ assoc[assoc_name] = []
3668
+ end
3669
+ assoc[assoc_name].push(rec)
3670
+ rec.associations[rcm] = current if rcm
3671
+ else
3672
+ current.associations[assoc_name] ||= rec
3673
+ end
3674
+ # Recurse into dependencies of the current object
3675
+ _load(deps, rec, h) unless deps.empty?
3676
+ end
3677
+ end
3678
+
3679
+ # Return the subhash for the specific table alias +ta+ by parsing the values out of the main hash +h+
3680
+ def hfor(ta, h)
3681
+ out = {}
3682
+ @column_maps[ta].each{|ca, c| out[c] = h[ca]}
3683
+ out
3684
+ end
3685
+
3686
+ # Return a suitable hash key for any subhash +h+, which is an array of values by column order.
3687
+ # This is only used if the primary key cannot be used.
3688
+ def hkey(h)
3689
+ h.sort_by{|x| x[0]}
3690
+ end
3691
+
3692
+ # Return the subhash for the master table by parsing the values out of the main hash +h+
3693
+ def master_hfor(h)
3694
+ out = {}
3695
+ @master_column_map.each{|ca, c| out[c] = h[ca]}
3696
+ out
3697
+ end
3698
+
3699
+ # Return a primary key value for the master table by parsing it out of the main hash +h+.
3700
+ def master_pk(h)
3701
+ x = @master_primary_keys
3702
+ if x.is_a?(Array)
3703
+ unless x == []
3704
+ x = x.map{|ca| h[ca]}
3705
+ x if x.all?
3706
+ end
3707
+ else
3708
+ h[x]
3709
+ end
3710
+ end
3711
+
3712
+ # Return a primary key value for the given table alias by parsing it out of the main hash +h+.
3713
+ def pk(ta, h)
3714
+ x = primary_keys[ta]
3715
+ if x.is_a?(Array)
3716
+ unless x == []
3717
+ x = x.map{|ca| h[ca]}
3718
+ x if x.all?
3719
+ end
3720
+ else
3721
+ h[x]
3722
+ end
3723
+ end
3724
+
3725
+ # If the result set is the result of a cartesian product, then it is possible that
3726
+ # there are multiple records for each association when there should only be one.
3727
+ # In that case, for each object in all associations loaded via +eager_graph+, run
3728
+ # uniq! on the association to make sure no duplicate records show up.
3729
+ # Note that this can cause legitimate duplicate records to be removed.
3730
+ def post_process(records, dependency_map)
3731
+ records.each do |record|
3732
+ dependency_map.each do |ta, deps|
3733
+ assoc_name = alias_map[ta]
3734
+ list = record.public_send(assoc_name)
3735
+ rec_list = if type_map[ta]
3736
+ list.uniq!
3737
+ if lo = limit_map[ta]
3738
+ limit, offset = lo
3739
+ offset ||= 0
3740
+ if type_map[ta] == :offset
3741
+ [record.associations[assoc_name] = list[offset]]
3742
+ else
3743
+ list.replace(list[(offset)..(limit ? (offset)+limit-1 : -1)] || [])
3744
+ end
3745
+ else
3746
+ list
3747
+ end
3748
+ elsif list
3749
+ [list]
3750
+ else
3751
+ []
3752
+ end
3753
+ record.send(:run_association_callbacks, reflection_map[ta], :after_load, list) if after_load_map[ta]
3754
+ post_process(rec_list, deps) if !rec_list.empty? && !deps.empty?
3755
+ end
3756
+ end
3757
+ end
3758
+ end
3759
+ end
3760
+ end
3761
+ end