ruby-scheduler 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. checksums.yaml +7 -0
  2. data/.bundle/config +2 -0
  3. data/.gitignore +8 -0
  4. data/.rspec +1 -0
  5. data/Gemfile +8 -0
  6. data/Gemfile.lock +34 -0
  7. data/README.md +118 -0
  8. data/Rakefile +2 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/exec-scheduler.sh +3 -0
  12. data/helpers/schedule_helper.rb +13 -0
  13. data/lib/ruby/scheduler.rb +79 -0
  14. data/lib/ruby/scheduler/meeting.rb +85 -0
  15. data/lib/ruby/scheduler/schedule.rb +173 -0
  16. data/lib/ruby/scheduler/version.rb +5 -0
  17. data/ruby-scheduler.gemspec +25 -0
  18. data/test-scheduler.sh +9 -0
  19. data/vendor/ruby/2.6.0/bin/htmldiff +29 -0
  20. data/vendor/ruby/2.6.0/bin/ldiff +29 -0
  21. data/vendor/ruby/2.6.0/bin/rake +27 -0
  22. data/vendor/ruby/2.6.0/bin/rspec +27 -0
  23. data/vendor/ruby/2.6.0/cache/diff-lcs-1.3.gem +0 -0
  24. data/vendor/ruby/2.6.0/cache/rake-12.3.3.gem +0 -0
  25. data/vendor/ruby/2.6.0/cache/rspec-3.9.0.gem +0 -0
  26. data/vendor/ruby/2.6.0/cache/rspec-core-3.9.1.gem +0 -0
  27. data/vendor/ruby/2.6.0/cache/rspec-expectations-3.9.0.gem +0 -0
  28. data/vendor/ruby/2.6.0/cache/rspec-mocks-3.9.1.gem +0 -0
  29. data/vendor/ruby/2.6.0/cache/rspec-support-3.9.2.gem +0 -0
  30. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/.rspec +1 -0
  31. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  32. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/Contributing.md +83 -0
  33. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/History.md +220 -0
  34. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/License.md +39 -0
  35. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/Manifest.txt +37 -0
  36. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/README.rdoc +84 -0
  37. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/Rakefile +57 -0
  38. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  39. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  40. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/bin/ldiff +6 -0
  41. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  42. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  43. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  44. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  45. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  46. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  47. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  48. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  49. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  50. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  51. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  52. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  53. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  54. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  55. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  56. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  57. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  58. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  59. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  60. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  61. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  62. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  63. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  64. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  65. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  66. data/vendor/ruby/2.6.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  67. data/vendor/ruby/2.6.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  68. data/vendor/ruby/2.6.0/gems/rake-12.3.3/Gemfile +3 -0
  69. data/vendor/ruby/2.6.0/gems/rake-12.3.3/History.rdoc +2344 -0
  70. data/vendor/ruby/2.6.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
  71. data/vendor/ruby/2.6.0/gems/rake-12.3.3/README.rdoc +156 -0
  72. data/vendor/ruby/2.6.0/gems/rake-12.3.3/Rakefile +41 -0
  73. data/vendor/ruby/2.6.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  74. data/vendor/ruby/2.6.0/gems/rake-12.3.3/bin/bundle +105 -0
  75. data/vendor/ruby/2.6.0/gems/rake-12.3.3/bin/console +7 -0
  76. data/vendor/ruby/2.6.0/gems/rake-12.3.3/bin/rake +29 -0
  77. data/vendor/ruby/2.6.0/gems/rake-12.3.3/bin/rdoc +29 -0
  78. data/vendor/ruby/2.6.0/gems/rake-12.3.3/bin/rubocop +29 -0
  79. data/vendor/ruby/2.6.0/gems/rake-12.3.3/bin/setup +6 -0
  80. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  81. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  82. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  83. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/example/a.c +6 -0
  84. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/example/b.c +6 -0
  85. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/example/main.c +11 -0
  86. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  87. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
  88. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  89. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/rake.1 +156 -0
  90. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  91. data/vendor/ruby/2.6.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  92. data/vendor/ruby/2.6.0/gems/rake-12.3.3/exe/rake +27 -0
  93. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake.rb +71 -0
  94. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  95. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  96. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  97. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  98. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  99. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  100. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  101. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  102. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  103. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  104. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  105. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  106. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  107. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  108. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  109. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  110. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  111. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  112. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  113. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  114. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  115. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  116. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  117. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  118. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  119. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  120. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  121. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  122. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  123. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  124. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  125. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  126. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  127. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  128. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  129. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  130. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  131. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  132. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  133. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  134. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  135. data/vendor/ruby/2.6.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  136. data/vendor/ruby/2.6.0/gems/rake-12.3.3/rake.gemspec +42 -0
  137. data/vendor/ruby/2.6.0/gems/rspec-3.9.0/LICENSE.md +27 -0
  138. data/vendor/ruby/2.6.0/gems/rspec-3.9.0/README.md +43 -0
  139. data/vendor/ruby/2.6.0/gems/rspec-3.9.0/lib/rspec.rb +3 -0
  140. data/vendor/ruby/2.6.0/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
  141. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/.document +5 -0
  142. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/.yardopts +8 -0
  143. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/Changelog.md +2274 -0
  144. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/LICENSE.md +26 -0
  145. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/README.md +384 -0
  146. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/exe/rspec +4 -0
  147. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/autorun.rb +3 -0
  148. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core.rb +186 -0
  149. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/backtrace_formatter.rb +65 -0
  150. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/coordinator.rb +62 -0
  151. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  152. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/fork_runner.rb +135 -0
  153. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/server.rb +61 -0
  154. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_command.rb +126 -0
  155. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/shell_runner.rb +73 -0
  156. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/bisect/utilities.rb +58 -0
  157. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/configuration.rb +2336 -0
  158. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/configuration_options.rb +233 -0
  159. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/did_you_mean.rb +46 -0
  160. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/drb.rb +113 -0
  161. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/dsl.rb +98 -0
  162. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example.rb +656 -0
  163. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_group.rb +889 -0
  164. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/example_status_persister.rb +235 -0
  165. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/filter_manager.rb +231 -0
  166. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/flat_map.rb +20 -0
  167. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters.rb +272 -0
  168. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  169. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_formatter.rb +70 -0
  170. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  171. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  172. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  173. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/console_codes.rb +68 -0
  174. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  175. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  176. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/exception_presenter.rb +508 -0
  177. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  178. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  179. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/helpers.rb +110 -0
  180. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_formatter.rb +153 -0
  181. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_printer.rb +414 -0
  182. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  183. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/json_formatter.rb +102 -0
  184. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  185. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  186. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/protocol.rb +182 -0
  187. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  188. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  189. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/hooks.rb +632 -0
  190. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/invocations.rb +87 -0
  191. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/memoized_helpers.rb +554 -0
  192. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/metadata.rb +498 -0
  193. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/metadata_filter.rb +255 -0
  194. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  195. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  196. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  197. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/null.rb +14 -0
  198. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  199. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  200. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/notifications.rb +521 -0
  201. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/option_parser.rb +316 -0
  202. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/ordering.rb +158 -0
  203. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/output_wrapper.rb +29 -0
  204. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/pending.rb +165 -0
  205. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/profiler.rb +34 -0
  206. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer.rb +48 -0
  207. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/.rspec +1 -0
  208. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  209. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/rake_task.rb +188 -0
  210. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/reporter.rb +265 -0
  211. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/ruby_project.rb +53 -0
  212. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/runner.rb +204 -0
  213. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/sandbox.rb +37 -0
  214. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/set.rb +54 -0
  215. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/shared_context.rb +55 -0
  216. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/shared_example_group.rb +269 -0
  217. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/shell_escape.rb +49 -0
  218. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  219. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/version.rb +9 -0
  220. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/warnings.rb +40 -0
  221. data/vendor/ruby/2.6.0/gems/rspec-core-3.9.1/lib/rspec/core/world.rb +275 -0
  222. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/.document +5 -0
  223. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/.yardopts +6 -0
  224. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/Changelog.md +1170 -0
  225. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/LICENSE.md +25 -0
  226. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/README.md +320 -0
  227. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations.rb +82 -0
  228. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  229. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/configuration.rb +215 -0
  230. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/expectation_target.rb +127 -0
  231. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/fail_with.rb +39 -0
  232. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
  233. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/handler.rb +170 -0
  234. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  235. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/syntax.rb +132 -0
  236. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/expectations/version.rb +8 -0
  237. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers.rb +1038 -0
  238. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  239. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in.rb +52 -0
  240. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/all.rb +86 -0
  241. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  242. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be.rb +288 -0
  243. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  244. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  245. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  246. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  247. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/change.rb +428 -0
  248. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/compound.rb +276 -0
  249. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  250. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  251. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  252. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  253. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  254. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/exist.rb +90 -0
  255. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/has.rb +103 -0
  256. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  257. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/include.rb +149 -0
  258. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/match.rb +106 -0
  259. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  260. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/output.rb +200 -0
  261. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  262. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/respond_to.rb +174 -0
  263. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  264. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  265. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  266. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/built_in/yield.rb +432 -0
  267. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/composable.rb +171 -0
  268. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/dsl.rb +534 -0
  269. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  270. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  271. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  272. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/generated_descriptions.rb +41 -0
  273. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  274. data/vendor/ruby/2.6.0/gems/rspec-expectations-3.9.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
  275. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/.document +5 -0
  276. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/.yardopts +6 -0
  277. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/Changelog.md +1133 -0
  278. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/LICENSE.md +25 -0
  279. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/README.md +463 -0
  280. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks.rb +130 -0
  281. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance.rb +11 -0
  282. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/chain.rb +111 -0
  283. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  284. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  285. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  286. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  287. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  288. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/recorder.rb +294 -0
  289. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  290. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  291. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  292. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_matchers.rb +322 -0
  293. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/configuration.rb +212 -0
  294. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/error_generator.rb +369 -0
  295. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/example_methods.rb +434 -0
  296. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  297. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/marshal_extension.rb +41 -0
  298. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  299. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/have_received.rb +134 -0
  300. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive.rb +132 -0
  301. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  302. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  303. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_chain.rb +87 -0
  304. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_expectation.rb +751 -0
  305. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb +287 -0
  306. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_reference.rb +202 -0
  307. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/minitest_integration.rb +68 -0
  308. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/mutate_const.rb +339 -0
  309. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/object_reference.rb +149 -0
  310. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/order_group.rb +81 -0
  311. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/proxy.rb +503 -0
  312. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/space.rb +238 -0
  313. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/standalone.rb +3 -0
  314. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/syntax.rb +325 -0
  315. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/targets.rb +124 -0
  316. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/test_double.rb +171 -0
  317. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_double.rb +129 -0
  318. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  319. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_proxy.rb +220 -0
  320. data/vendor/ruby/2.6.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/version.rb +9 -0
  321. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/Changelog.md +292 -0
  322. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/LICENSE.md +23 -0
  323. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/README.md +40 -0
  324. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support.rb +149 -0
  325. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/caller_filter.rb +83 -0
  326. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/comparable_version.rb +46 -0
  327. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/differ.rb +215 -0
  328. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/directory_maker.rb +63 -0
  329. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/encoded_string.rb +161 -0
  330. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/fuzzy_matcher.rb +48 -0
  331. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/hunk_generator.rb +47 -0
  332. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/matcher_definition.rb +42 -0
  333. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/method_signature_verifier.rb +438 -0
  334. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/mutex.rb +73 -0
  335. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/object_formatter.rb +275 -0
  336. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/recursive_const_methods.rb +76 -0
  337. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/reentrant_mutex.rb +53 -0
  338. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/ruby_features.rb +185 -0
  339. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/source.rb +75 -0
  340. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/source/location.rb +21 -0
  341. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/source/node.rb +110 -0
  342. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/source/token.rb +87 -0
  343. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec.rb +81 -0
  344. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  345. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/formatting_support.rb +9 -0
  346. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/in_sub_process.rb +69 -0
  347. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  348. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/shell_out.rb +89 -0
  349. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/stderr_splitter.rb +67 -0
  350. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/string_matcher.rb +46 -0
  351. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  352. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  353. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/version.rb +7 -0
  354. data/vendor/ruby/2.6.0/gems/rspec-support-3.9.2/lib/rspec/support/warnings.rb +39 -0
  355. data/vendor/ruby/2.6.0/specifications/diff-lcs-1.3.gemspec +61 -0
  356. data/vendor/ruby/2.6.0/specifications/rake-12.3.3.gemspec +49 -0
  357. data/vendor/ruby/2.6.0/specifications/rspec-3.9.0.gemspec +43 -0
  358. data/vendor/ruby/2.6.0/specifications/rspec-core-3.9.1.gemspec +63 -0
  359. data/vendor/ruby/2.6.0/specifications/rspec-expectations-3.9.0.gemspec +51 -0
  360. data/vendor/ruby/2.6.0/specifications/rspec-mocks-3.9.1.gemspec +51 -0
  361. data/vendor/ruby/2.6.0/specifications/rspec-support-3.9.2.gemspec +39 -0
  362. metadata +419 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c8ea947aa1ab9a3cc95c7ff37f7c88cf6a3648503359b8d24360a972d145f61b
4
+ data.tar.gz: 292a91c4d24504f8721885735be772590599c9d4a28c69a9dc7ce3ac4b76d1e8
5
+ SHA512:
6
+ metadata.gz: 3b3a0364d8c20262ad30c6049c2f1440efaae5ede5563e365a6914ff1d89fb76a9c5a546c90d779175bdd004a2ab8b6f353add4723a27bf7e3da371613614869
7
+ data.tar.gz: ff2151a3d00007b92297aef51d8482d31aeb1c2594cda21c67e4038dadab3bd463ea68f842369d554cda59400a05cc671eec21dccc6b3505ca0a3d6e166b7f75
data/.bundle/config ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_PATH: "vendor"
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ruby-scheduler.gemspec
4
+ gemspec
5
+
6
+ # TODO: remove rspec and add as development dependency
7
+ gem 'rspec'
8
+ gem "rake", "~> 12.0"
data/Gemfile.lock ADDED
@@ -0,0 +1,34 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby-scheduler (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.3)
10
+ rake (12.3.3)
11
+ rspec (3.9.0)
12
+ rspec-core (~> 3.9.0)
13
+ rspec-expectations (~> 3.9.0)
14
+ rspec-mocks (~> 3.9.0)
15
+ rspec-core (3.9.1)
16
+ rspec-support (~> 3.9.1)
17
+ rspec-expectations (3.9.0)
18
+ diff-lcs (>= 1.2.0, < 2.0)
19
+ rspec-support (~> 3.9.0)
20
+ rspec-mocks (3.9.1)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.9.0)
23
+ rspec-support (3.9.2)
24
+
25
+ PLATFORMS
26
+ ruby
27
+
28
+ DEPENDENCIES
29
+ rake (~> 12.0)
30
+ rspec
31
+ ruby-scheduler!
32
+
33
+ BUNDLED WITH
34
+ 2.1.4
data/README.md ADDED
@@ -0,0 +1,118 @@
1
+ # Ruby Scheduler
2
+
3
+ Your product owner is asking you to implement a new feature in the calendar system
4
+ that is in your scheduling tool. The feature needs to support arranging a set of
5
+ meetings within an 8 hour day in a way that makes them work, and let the user know
6
+ if the meetings cannot fit into the day.
7
+
8
+ For this feature there will be two kinds of meetings, on-site meetings and off-site
9
+ meetings. On-site meetings can be scheduled back to back with no gaps in between
10
+ them, but off-site meetings must have 30 minutes of travel time padded to either
11
+ end. This travel time however can overlap for back to back off-site meetings, and can
12
+ extend past the start and end of the day.
13
+
14
+ # Run Scheduler
15
+ To run the scheduler
16
+ ```
17
+ exec-scheduler
18
+ ```
19
+
20
+ or
21
+ ```
22
+ ruby lib/ruby/scheduler.rb
23
+ ```
24
+
25
+ # Tests
26
+ To run the tests suite
27
+ ```
28
+ test-scheduler
29
+ ```
30
+
31
+ or to run a specific test file
32
+ ```
33
+ bundle exec rspec spec/lib/scheduler_spec.rb
34
+ bundle exec rspec spec/lib/scheduler/meeting_spec.rb
35
+ bundle exec rspec spec/lib/schedulder/schedule_spec.rb
36
+ bundle exec rspec spec/helpers/scheduler_helper_spec.rb
37
+ ```
38
+
39
+ # Examples
40
+
41
+ ```
42
+ Given a set of meetings (below is an example of a set of meetings):
43
+ {
44
+ { name: “Meeting 1”, duration: 3, type: :onsite },
45
+ { name: “Meeting 2”, duration: 2, type: :offsite },
46
+ { name: “Meeting 3”, duration: 1, type: :offsite },
47
+ { name: “Meeting 4”, duration: 0.5, type: :onsite }
48
+ }
49
+ ```
50
+
51
+ You must write code to determine if these meetings can fit into a 9 to 5 schedule,
52
+ and propose a layout for those meetings in a format like this:
53
+ ```
54
+ 9:00 - 12:00 - Meeting 1
55
+ 12:00 - 12:30 - Meeting 4
56
+ 1:00 - 3:00 - Meeting 2
57
+ 3:30 - 4:30 - Meeting 3
58
+ ```
59
+
60
+ ## Here are a few example sets for you to test against:
61
+
62
+ Example 1:
63
+ ```
64
+ {
65
+ { name: “Meeting 1”, duration: 1.5, type: :onsite },
66
+ { name: “Meeting 2”, duration: 2, type: :offsite },
67
+ { name: “Meeting 3”, duration: 1, type: :onsite },
68
+ { name: “Meeting 4”, duration: 1, type: :offsite },
69
+ { name: “Meeting 5”, duration: 1, type: :offsite },
70
+ }
71
+ ```
72
+ Yes, can fit. One possible solution would be:
73
+ ```
74
+ 9:00 - 10:30 - Meeting 1
75
+ 10:30 - 11:30 - Meeting 3
76
+ 12:00 - 1:00 - Meeting 5
77
+ 1:30 - 2:30 - Meeting 4
78
+ 3:00 - 5:00 - Meeting 2
79
+ ```
80
+
81
+ Example 2:
82
+ ```
83
+ {
84
+ { name: “Meeting 1”, duration: 4, type: :offsite },
85
+ { name: “Meeting 2”, duration: 4, type: :offsite }
86
+ }
87
+ ```
88
+ No, can’t fit.
89
+
90
+ Example 3:
91
+ ```
92
+ {
93
+ { name: “Meeting 1”, duration: 0.5, type: :offsite },
94
+ { name: “Meeting 2”, duration: 0.5, type: :onsite },
95
+ { name: “Meeting 3”, duration: 2.5, type: :offsite },
96
+ { name: “Meeting 4”, duration: 3, type: :onsite }
97
+ }
98
+ ```
99
+ Yes, can fit. One possible solution would be:
100
+ ```
101
+ 9:00 - 9:30 - Meeting 2
102
+ 10:00 - 10:30 - Meeting 1
103
+ 11:00 - 2:00 - Meeting 4
104
+ 2:30 - 5:00 - Meeting 3
105
+ ```
106
+
107
+ ## Instructions
108
+
109
+ . Write the solution in Ruby.
110
+
111
+ . Put the code up on Github, Bitbucket, etc…
112
+
113
+ . Commit early and often so we can see progress as you work through the solution.
114
+
115
+ . No need to create a complex UI, just a command line application is enough.
116
+
117
+ . The data samples can be hardcoded into the solution, no need to read in external
118
+ data.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "ruby/scheduler"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exec-scheduler.sh ADDED
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ ruby lib/ruby/scheduler.rb
@@ -0,0 +1,13 @@
1
+ module ScheduleHelper
2
+
3
+ # Change hours to seconds for Time operations.
4
+ # Input:
5
+ # - Float
6
+ # * This value represents a duration of time in hours
7
+ # Output:
8
+ # - float
9
+ def to_seconds(time)
10
+ time * 3600.0
11
+ end
12
+
13
+ end
@@ -0,0 +1,79 @@
1
+ require_relative './scheduler/schedule.rb'
2
+ require_relative './scheduler/meeting.rb'
3
+
4
+ module Scheduler
5
+
6
+ # This module should execute the project task.
7
+ # Given a schedule, ptimize the meetings, to
8
+ # fit them within a business day.
9
+ # Input:
10
+ # - Schedule object
11
+ # Output:
12
+ # - String
13
+ MEETINGS = {
14
+ example_1: [{
15
+ name: 'Meeting 1',
16
+ duration: 1.5,
17
+ type: :onsite,
18
+ }, {
19
+ name: 'Meeting 2',
20
+ duration: 2,
21
+ type: :offsite
22
+ }, {
23
+ name: 'Meeting 3',
24
+ duration: 1,
25
+ type: :onsite
26
+ }, {
27
+ name: 'Meeting 4',
28
+ duration: 1,
29
+ type: :offsite
30
+ }, {
31
+ name: 'Meeting 5',
32
+ duration: 1,
33
+ type: :offsite
34
+ }],
35
+ example_2: [{
36
+ name: 'Meeting 1',
37
+ duration: 4,
38
+ type: :offsite
39
+ }, {
40
+ name: 'Meeting 2',
41
+ duration: 4,
42
+ type: :offsite
43
+ }],
44
+ example_3: [{
45
+ name: 'Meeting 1',
46
+ duration: 0.5,
47
+ type: :offsite
48
+ }, {
49
+ name: 'Meeting 2',
50
+ duration: 0.5,
51
+ type: :onsite
52
+ }, {
53
+ name: 'Meeting 3',
54
+ duration: 2.5,
55
+ type: :offsite
56
+ }, {
57
+ name: 'Meeting 4',
58
+ duration: 3,
59
+ type: :onsite
60
+ }]
61
+ }
62
+
63
+ def self.run(meetings = nil)
64
+ puts "Execute file"
65
+ if meetings.nil?
66
+ meetings = MEETINGS[:example_1]
67
+ end
68
+ schedule = Scheduler::Schedule.new({
69
+ meetings: meetings
70
+ })
71
+
72
+ schedule.reschedule
73
+ return schedule
74
+ end
75
+
76
+ end
77
+
78
+ schedule = Scheduler.run()
79
+ puts schedule
@@ -0,0 +1,85 @@
1
+ # RoR configuration would autoload the lib and helpers directories
2
+ require_relative '../../../helpers/schedule_helper'
3
+
4
+ module Scheduler
5
+
6
+ class Meeting
7
+ # name, duration, type, start_time, end_time
8
+ include ScheduleHelper
9
+
10
+ attr_reader :name, :duration, :type
11
+ attr_accessor :start_time, :end_time
12
+
13
+ VALID_TYPES = [:offsite, :onsite]
14
+
15
+ # Initialize Meeting object
16
+ def initialize(params = {})
17
+ @name = params.fetch(:name, nil)
18
+ @duration = params.fetch(:duration, 0)
19
+ @type = params.fetch(:type, nil)
20
+ @start_time = params.fetch(:start_time, nil)
21
+ @end_time = params.fetch(:end_time, nil)
22
+
23
+ validate!
24
+ end
25
+
26
+ ## Setter methods
27
+ # Setter method for start_time attribute
28
+ # Input:
29
+ # - Time
30
+ def set_start_time(start_time)
31
+ @start_time = start_time
32
+ end
33
+
34
+ # Setter method for end_time attribute
35
+ # Input:
36
+ # - NONE
37
+ def set_end_time
38
+ return unless start_time
39
+ @end_time = start_time + to_seconds(duration)
40
+ end
41
+
42
+ ## Conditional methods
43
+ # Conditional method to check if type is offsite
44
+ # Output:
45
+ # - boolean
46
+ def offsite?
47
+ type == :offsite
48
+ end
49
+
50
+ ## Additonal class methods
51
+ # Calculate next meeting start_time
52
+ # Output:
53
+ # - Time
54
+ def next_start_time
55
+ end_time + to_seconds(offsite_buffer)
56
+ end
57
+
58
+ # Calcuate offsite buffer for travel (30 minutes)
59
+ # Output:
60
+ # - Integer
61
+ def offsite_buffer
62
+ offsite? ? 0.5 : 0.0
63
+ end
64
+
65
+ private
66
+
67
+ # Method to check valid parameters
68
+ # Output:
69
+ # - boolean
70
+ def valid?
71
+ @name.is_a? String
72
+ @duration.is_a? (Integer || Float)
73
+ @type.is_a? Symbol
74
+ VALID_TYPES.include? @type
75
+ end
76
+
77
+ # Method to raise error if invalid parameters
78
+ # Note: Would use RoR ActiveRecord validations if this were
79
+ # a rails application. Could also use dry-rb gem validations.
80
+ def validate!
81
+ raise ArgumentError.new("Invalid Params") unless valid?
82
+ end
83
+ end
84
+
85
+ end
@@ -0,0 +1,173 @@
1
+ # RoR configuration would autoload the lib and helpers directories
2
+ require_relative './meeting'
3
+
4
+ module Scheduler
5
+
6
+ class Schedule
7
+ # meetings
8
+ # Offsite meeting buffer can extend past the end of the day
9
+ DAY_LENGTH = {
10
+ all_offsite: 9,
11
+ any_offsite: 8.5,
12
+ no_offsite: 8
13
+ }
14
+
15
+ attr_accessor :meetings
16
+
17
+ # Initialize a Schedule of Meeting objects.
18
+ def initialize(params = {})
19
+ @meetings = []
20
+ meetings_arr = params.fetch(:meetings, nil)
21
+ meetings_arr.each do |meeting|
22
+ meeting_object = Meeting.new(meeting)
23
+ @meetings << meeting_object
24
+ end
25
+
26
+ validate!
27
+ end
28
+
29
+ ## Overriden methods
30
+ # Override `to_s` method to print expected message provided in README.
31
+ # Output:
32
+ # - String
33
+ def to_s
34
+ valid = valid_meeting_schedule? ? "Valid Schedule\n" : "Invalid Schedule\n"
35
+ meeting_str = meetings.reduce(valid) do |str, meeting|
36
+ str += meeting.start_time&.strftime("%I:%M %p") || 'none'
37
+ str += ' - '
38
+ str += meeting.end_time&.strftime("%I:%M %p") || 'none'
39
+ str += ' - '
40
+ str += meeting.name
41
+ str += "\n"
42
+ end
43
+ meeting_str
44
+ end
45
+
46
+ ## Setter methods
47
+ # Set a meeting schedule using an optimal meeting order
48
+ # Note: Would consider using Trailblazer to construct
49
+ # a contract and operation.
50
+ def reschedule
51
+ set_meeting_order
52
+
53
+ meetings.first.set_start_time(first_start_time)
54
+
55
+ meetings.each_with_index do |meeting, index|
56
+ if meeting.start_time.nil?
57
+ previous_meeting = meetings[index - 1]
58
+ next_start_time = previous_meeting.next_start_time
59
+ meeting.set_start_time(next_start_time)
60
+ end
61
+ meeting.set_end_time
62
+ end
63
+ @meetings = meetings
64
+ self
65
+ end
66
+
67
+ ## Conditional methods
68
+ # Check if any time left after meetings
69
+ # Output:
70
+ # - boolean
71
+ def valid_meeting_schedule?
72
+ time_left_in_day >= 0
73
+ end
74
+
75
+ # Check if all meetings are offsite
76
+ # Note: If RoR application, I would use the ActiveRecord scope method
77
+ # Output:
78
+ # - boolean
79
+ def all_offsite_meetings?
80
+ meetings.all? { |meeting| meeting.offsite? }
81
+ end
82
+
83
+ # Check if any meetings are offsite
84
+ # Note: If RoR application, I would use the ActiveRecord scope method
85
+ # Output:
86
+ # - boolean
87
+ def any_offsite_meetings?
88
+ meetings.any? { |meeting| meeting.offsite? }
89
+ end
90
+
91
+ # Additional class methods
92
+ # Calculate total meeting time for both onsite and offsite meetings
93
+ def total_meeting_time
94
+ calculate_total_duration(offsite_meetings, offsite: true) + calculate_total_duration(onsite_meetings, offsite: false)
95
+ end
96
+
97
+ private
98
+
99
+ # Get start time for first meeting
100
+ def first_start_time
101
+ time = Time.now
102
+ Time.new(time.year, time.month, time.day, 9, 0, 0, "-05:00")
103
+ end
104
+
105
+ # Determine total time in day given whether or not
106
+ # there consist any offsite meetings.
107
+ def time_left_in_day
108
+ if all_offsite_meetings?
109
+ day_length = DAY_LENGTH[:all_offsite]
110
+ elsif any_offsite_meetings?
111
+ day_length = DAY_LENGTH[:any_offsite]
112
+ else
113
+ day_length = DAY_LENGTH[:no_offsite]
114
+ end
115
+ day_length - total_meeting_time
116
+ end
117
+
118
+ # Place offsite before onsite meetings for an
119
+ # optimal meeting order
120
+ # Output:
121
+ # - Array
122
+ def optimal_meeting_order
123
+ offsite_meetings + onsite_meetings
124
+ end
125
+
126
+ # Select offsite meetings from all meetings
127
+ # Output:
128
+ # - Array
129
+ def offsite_meetings
130
+ meetings.select { |meeting| meeting.offsite? }
131
+ end
132
+
133
+ # Select onsite meetings from all meetings
134
+ # Output:
135
+ # - Array
136
+ def onsite_meetings
137
+ meetings.select{ |meeting| !meeting.offsite? }
138
+ end
139
+
140
+ # Set an optimal meeting order
141
+ def set_meeting_order
142
+ @meetings = optimal_meeting_order
143
+ end
144
+
145
+ # Calculate total meeting time and buffer for selected meetings
146
+ # Note: This does not use the same methods as reschedule - refactor
147
+ # to reuse those methods for consistency
148
+ # Input:
149
+ # - Array of Meetings
150
+ # - boolean
151
+ # Output:
152
+ # - Float
153
+ def calculate_total_duration(selected_meetings, offsite:)
154
+ start_buffer = offsite ? 0.5 : 0
155
+ selected_meetings.reduce(start_buffer) { |sum, meeting| offsite ? sum + (meeting.duration + 0.5) : sum + meeting.duration }
156
+ end
157
+
158
+ # Method to check valid parameters
159
+ # Output:
160
+ # - boolean
161
+ def valid?
162
+ meetings.is_a? Array
163
+ end
164
+
165
+ # Method to raise error if invalid parameters
166
+ # Note: Would use RoR ActiveRecord validations if this were
167
+ # a rails application. Could also use dry-rb gem validations
168
+ def validate!
169
+ raise ArgumentError.new("Invalid Params") unless valid?
170
+ end
171
+
172
+ end
173
+ end