rkoans 0.0.1 → 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 (460) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/CURRICULUM.md +86 -0
  4. data/README.md +77 -0
  5. data/THIRD_PARTY_NOTICES.md +30 -0
  6. data/exercises/about-array-assignment/about_array_assignment.rb +45 -0
  7. data/exercises/about-array-assignment/brief.md +11 -0
  8. data/exercises/about-array-assignment/hint.md +11 -0
  9. data/exercises/about-arrays/about_arrays.rb +77 -0
  10. data/exercises/about-arrays/brief.md +16 -0
  11. data/exercises/about-arrays/hint.md +13 -0
  12. data/exercises/about-asserts/about_asserts.rb +22 -0
  13. data/exercises/about-asserts/brief.md +22 -0
  14. data/exercises/about-asserts/hint.md +10 -0
  15. data/exercises/about-blocks/about_blocks.rb +76 -0
  16. data/exercises/about-blocks/brief.md +44 -0
  17. data/exercises/about-blocks/hint.md +7 -0
  18. data/exercises/about-class-methods/about_class_methods.rb +105 -0
  19. data/exercises/about-class-methods/brief.md +73 -0
  20. data/exercises/about-class-methods/hint.md +8 -0
  21. data/exercises/about-classes/about_classes.rb +131 -0
  22. data/exercises/about-classes/brief.md +73 -0
  23. data/exercises/about-classes/hint.md +7 -0
  24. data/exercises/about-constants/about_constants.rb +49 -0
  25. data/exercises/about-constants/brief.md +51 -0
  26. data/exercises/about-constants/hint.md +7 -0
  27. data/exercises/about-control-statements/about_control_statements.rb +152 -0
  28. data/exercises/about-control-statements/brief.md +9 -0
  29. data/exercises/about-control-statements/hint.md +7 -0
  30. data/exercises/about-dice-project/about_dice_project.rb +27 -0
  31. data/exercises/about-dice-project/brief.md +12 -0
  32. data/exercises/about-dice-project/hint.md +5 -0
  33. data/exercises/about-exceptions/about_exceptions.rb +84 -0
  34. data/exercises/about-exceptions/brief.md +19 -0
  35. data/exercises/about-exceptions/hint.md +8 -0
  36. data/exercises/about-extra-credit/about_extra_credit.rb +117 -0
  37. data/exercises/about-extra-credit/brief.md +28 -0
  38. data/exercises/about-extra-credit/hint.md +5 -0
  39. data/exercises/about-hashes/about_hashes.rb +160 -0
  40. data/exercises/about-hashes/brief.md +9 -0
  41. data/exercises/about-hashes/hint.md +8 -0
  42. data/exercises/about-inheritance/about_inheritance.rb +63 -0
  43. data/exercises/about-inheritance/brief.md +50 -0
  44. data/exercises/about-inheritance/hint.md +8 -0
  45. data/exercises/about-iteration/about_iteration.rb +96 -0
  46. data/exercises/about-iteration/brief.md +26 -0
  47. data/exercises/about-iteration/hint.md +6 -0
  48. data/exercises/about-keyword-arguments/about_keyword_arguments.rb +56 -0
  49. data/exercises/about-keyword-arguments/brief.md +28 -0
  50. data/exercises/about-keyword-arguments/hint.md +7 -0
  51. data/exercises/about-message-passing/about_message_passing.rb +112 -0
  52. data/exercises/about-message-passing/brief.md +59 -0
  53. data/exercises/about-message-passing/hint.md +8 -0
  54. data/exercises/about-methods/about_methods.rb +104 -0
  55. data/exercises/about-methods/brief.md +55 -0
  56. data/exercises/about-methods/hint.md +8 -0
  57. data/exercises/about-modules/about_modules.rb +43 -0
  58. data/exercises/about-modules/brief.md +44 -0
  59. data/exercises/about-modules/hint.md +8 -0
  60. data/exercises/about-nil/about_nil.rb +29 -0
  61. data/exercises/about-nil/brief.md +12 -0
  62. data/exercises/about-nil/hint.md +11 -0
  63. data/exercises/about-objects/about_objects.rb +51 -0
  64. data/exercises/about-objects/brief.md +14 -0
  65. data/exercises/about-objects/hint.md +12 -0
  66. data/exercises/about-open-classes/about_open_classes.rb +38 -0
  67. data/exercises/about-open-classes/brief.md +34 -0
  68. data/exercises/about-open-classes/hint.md +7 -0
  69. data/exercises/about-pattern-matching/about_pattern_matching.rb +106 -0
  70. data/exercises/about-pattern-matching/brief.md +124 -0
  71. data/exercises/about-pattern-matching/hint.md +8 -0
  72. data/exercises/about-proxy-object-project/about_proxy_object_project.rb +43 -0
  73. data/exercises/about-proxy-object-project/brief.md +10 -0
  74. data/exercises/about-proxy-object-project/hint.md +5 -0
  75. data/exercises/about-regular-expressions/about_regular_expressions.rb +174 -0
  76. data/exercises/about-regular-expressions/brief.md +9 -0
  77. data/exercises/about-regular-expressions/hint.md +8 -0
  78. data/exercises/about-sandwich-code/about_sandwich_code.rb +58 -0
  79. data/exercises/about-sandwich-code/brief.md +14 -0
  80. data/exercises/about-sandwich-code/hint.md +5 -0
  81. data/exercises/about-scope/about_scope.rb +76 -0
  82. data/exercises/about-scope/brief.md +35 -0
  83. data/exercises/about-scope/hint.md +8 -0
  84. data/exercises/about-scoring-project/about_scoring_project.rb +16 -0
  85. data/exercises/about-scoring-project/brief.md +10 -0
  86. data/exercises/about-scoring-project/hint.md +5 -0
  87. data/exercises/about-strings/about_strings.rb +142 -0
  88. data/exercises/about-strings/brief.md +22 -0
  89. data/exercises/about-strings/hint.md +11 -0
  90. data/exercises/about-symbols/about_symbols.rb +53 -0
  91. data/exercises/about-symbols/brief.md +21 -0
  92. data/exercises/about-symbols/hint.md +12 -0
  93. data/exercises/about-to-str/about_to_str.rb +49 -0
  94. data/exercises/about-to-str/brief.md +37 -0
  95. data/exercises/about-to-str/hint.md +7 -0
  96. data/exercises/about-triangle-project/about_triangle_project.rb +15 -0
  97. data/exercises/about-triangle-project/brief.md +11 -0
  98. data/exercises/about-triangle-project/hint.md +5 -0
  99. data/exercises/about-triangle-project-two/about_triangle_project_two.rb +22 -0
  100. data/exercises/about-triangle-project-two/brief.md +10 -0
  101. data/exercises/about-triangle-project-two/hint.md +5 -0
  102. data/exercises/about-true-and-false/about_true_and_false.rb +26 -0
  103. data/exercises/about-true-and-false/brief.md +22 -0
  104. data/exercises/about-true-and-false/hint.md +7 -0
  105. data/exercises/blocks-and-methods/blocks_and_methods.rb +14 -0
  106. data/exercises/blocks-and-methods/brief.md +8 -0
  107. data/exercises/blocks-and-methods/hint.md +6 -0
  108. data/exercises/catalog.json +61 -0
  109. data/exercises/class-state/brief.md +8 -0
  110. data/exercises/class-state/class_state.rb +39 -0
  111. data/exercises/class-state/hint.md +5 -0
  112. data/exercises/closure-capture/brief.md +8 -0
  113. data/exercises/closure-capture/closure_capture.rb +21 -0
  114. data/exercises/closure-capture/hint.md +5 -0
  115. data/exercises/collection-basics/brief.md +8 -0
  116. data/exercises/collection-basics/collection_basics.rb +16 -0
  117. data/exercises/collection-basics/hint.md +6 -0
  118. data/exercises/constant-scope/brief.md +8 -0
  119. data/exercises/constant-scope/constant_scope.rb +18 -0
  120. data/exercises/constant-scope/hint.md +5 -0
  121. data/exercises/core-protocols/brief.md +8 -0
  122. data/exercises/core-protocols/core_protocols.rb +43 -0
  123. data/exercises/core-protocols/hint.md +5 -0
  124. data/exercises/delegation/brief.md +8 -0
  125. data/exercises/delegation/delegation.rb +20 -0
  126. data/exercises/delegation/hint.md +5 -0
  127. data/exercises/dynamic-methods/brief.md +8 -0
  128. data/exercises/dynamic-methods/dynamic_methods.rb +33 -0
  129. data/exercises/dynamic-methods/hint.md +5 -0
  130. data/exercises/exception-flow/brief.md +8 -0
  131. data/exercises/exception-flow/exception_flow.rb +27 -0
  132. data/exercises/exception-flow/hint.md +5 -0
  133. data/exercises/heredoc-layout/brief.md +14 -0
  134. data/exercises/heredoc-layout/heredoc_layout.rb +25 -0
  135. data/exercises/heredoc-layout/hint.md +9 -0
  136. data/exercises/keyword-forwarding/brief.md +8 -0
  137. data/exercises/keyword-forwarding/hint.md +5 -0
  138. data/exercises/keyword-forwarding/keyword_forwarding.rb +27 -0
  139. data/exercises/lazy-enumeration/brief.md +8 -0
  140. data/exercises/lazy-enumeration/hint.md +5 -0
  141. data/exercises/lazy-enumeration/lazy_enumeration.rb +16 -0
  142. data/exercises/literals-and-operators/brief.md +20 -0
  143. data/exercises/literals-and-operators/hint.md +5 -0
  144. data/exercises/literals-and-operators/literals_and_operators.rb +15 -0
  145. data/exercises/method-contracts/brief.md +8 -0
  146. data/exercises/method-contracts/hint.md +5 -0
  147. data/exercises/method-contracts/method_contracts.rb +22 -0
  148. data/exercises/method-lookup/brief.md +8 -0
  149. data/exercises/method-lookup/hint.md +5 -0
  150. data/exercises/method-lookup/method_lookup.rb +26 -0
  151. data/exercises/nonlocal-exit/brief.md +8 -0
  152. data/exercises/nonlocal-exit/hint.md +5 -0
  153. data/exercises/nonlocal-exit/nonlocal_exit.rb +29 -0
  154. data/exercises/numbered-parameters/brief.md +18 -0
  155. data/exercises/numbered-parameters/hint.md +5 -0
  156. data/exercises/numbered-parameters/numbered_parameters.rb +18 -0
  157. data/exercises/numeric-precision/brief.md +8 -0
  158. data/exercises/numeric-precision/hint.md +5 -0
  159. data/exercises/numeric-precision/numeric_precision.rb +17 -0
  160. data/exercises/pattern-matching/brief.md +8 -0
  161. data/exercises/pattern-matching/hint.md +5 -0
  162. data/exercises/pattern-matching/pattern_matching.rb +22 -0
  163. data/exercises/refinement-scope/brief.md +8 -0
  164. data/exercises/refinement-scope/hint.md +5 -0
  165. data/exercises/refinement-scope/refinement_scope.rb +33 -0
  166. data/exercises/regexp-captures/brief.md +8 -0
  167. data/exercises/regexp-captures/hint.md +5 -0
  168. data/exercises/regexp-captures/regexp_captures.rb +25 -0
  169. data/exercises/runtime-context/brief.md +20 -0
  170. data/exercises/runtime-context/hint.md +8 -0
  171. data/exercises/runtime-context/runtime_context.rb +11 -0
  172. data/exercises/shared-rows/brief.md +8 -0
  173. data/exercises/shared-rows/hint.md +7 -0
  174. data/exercises/shared-rows/shared_rows.rb +13 -0
  175. data/exercises/singleton-pattern/brief.md +8 -0
  176. data/exercises/singleton-pattern/hint.md +5 -0
  177. data/exercises/singleton-pattern/singleton_pattern.rb +20 -0
  178. data/exercises/time-and-date/brief.md +8 -0
  179. data/exercises/time-and-date/hint.md +5 -0
  180. data/exercises/time-and-date/time_and_date.rb +21 -0
  181. data/exercises/visibility/brief.md +8 -0
  182. data/exercises/visibility/hint.md +5 -0
  183. data/exercises/visibility/visibility.rb +32 -0
  184. data/lib/rkoans/catalog.rb +31 -0
  185. data/lib/rkoans/checker.rb +62 -0
  186. data/lib/rkoans/cli.rb +79 -0
  187. data/lib/rkoans/error.rb +6 -0
  188. data/lib/rkoans/exercise.rb +50 -0
  189. data/lib/rkoans/keyboard.rb +51 -0
  190. data/lib/rkoans/progress.rb +39 -0
  191. data/lib/rkoans/selection.rb +31 -0
  192. data/lib/rkoans/session.rb +127 -0
  193. data/lib/rkoans/terminal_view.rb +99 -0
  194. data/lib/rkoans/version.rb +1 -1
  195. data/lib/rkoans/watcher.rb +58 -0
  196. data/lib/rkoans.rb +13 -3
  197. data/sig/about_array_assignment_acceptance_test.rbs +3 -0
  198. data/sig/about_arrays_acceptance_test.rbs +3 -0
  199. data/sig/about_asserts_command_test.rbs +4 -0
  200. data/sig/about_blocks_acceptance_test.rbs +3 -0
  201. data/sig/about_class_methods_acceptance_test.rbs +3 -0
  202. data/sig/about_classes_acceptance_test.rbs +3 -0
  203. data/sig/about_constants_acceptance_test.rbs +3 -0
  204. data/sig/about_control_statements_acceptance_test.rbs +3 -0
  205. data/sig/about_dice_project_acceptance_test.rbs +3 -0
  206. data/sig/about_exceptions_acceptance_test.rbs +3 -0
  207. data/sig/about_extra_credit_acceptance_test.rbs +5 -0
  208. data/sig/about_hashes_acceptance_test.rbs +3 -0
  209. data/sig/about_inheritance_acceptance_test.rbs +3 -0
  210. data/sig/about_iteration_acceptance_test.rbs +3 -0
  211. data/sig/about_keyword_arguments_acceptance_test.rbs +3 -0
  212. data/sig/about_message_passing_acceptance_test.rbs +3 -0
  213. data/sig/about_methods_acceptance_test.rbs +3 -0
  214. data/sig/about_modules_acceptance_test.rbs +3 -0
  215. data/sig/about_nil_acceptance_test.rbs +3 -0
  216. data/sig/about_objects_acceptance_test.rbs +3 -0
  217. data/sig/about_open_classes_acceptance_test.rbs +3 -0
  218. data/sig/about_pattern_matching_acceptance_test.rbs +3 -0
  219. data/sig/about_proxy_object_project_acceptance_test.rbs +3 -0
  220. data/sig/about_regular_expressions_acceptance_test.rbs +3 -0
  221. data/sig/about_sandwich_code_acceptance_test.rbs +3 -0
  222. data/sig/about_scope_acceptance_test.rbs +3 -0
  223. data/sig/about_scoring_project_acceptance_test.rbs +3 -0
  224. data/sig/about_strings_acceptance_test.rbs +3 -0
  225. data/sig/about_symbols_acceptance_test.rbs +3 -0
  226. data/sig/about_to_str_acceptance_test.rbs +3 -0
  227. data/sig/about_triangle_project_acceptance_test.rbs +3 -0
  228. data/sig/about_triangle_project_two_acceptance_test.rbs +3 -0
  229. data/sig/about_true_and_false_command_test.rbs +4 -0
  230. data/sig/catalog_error_command_test.rbs +4 -0
  231. data/sig/checker_test.rbs +9 -0
  232. data/sig/class_state_acceptance_test.rbs +3 -0
  233. data/sig/closure_capture_acceptance_test.rbs +3 -0
  234. data/sig/command_support.rbs +18 -0
  235. data/sig/command_test.rbs +5 -0
  236. data/sig/constant_scope_acceptance_test.rbs +3 -0
  237. data/sig/core_protocols_acceptance_test.rbs +3 -0
  238. data/sig/curriculum_cop_test.rbs +9 -0
  239. data/sig/delegation_acceptance_test.rbs +3 -0
  240. data/sig/dynamic_methods_acceptance_test.rbs +3 -0
  241. data/sig/exception_flow_acceptance_test.rbs +3 -0
  242. data/sig/exercise_test.rbs +3 -0
  243. data/sig/exercises/about_array_assignment.rbs +36 -0
  244. data/sig/exercises/about_arrays.rbs +51 -0
  245. data/sig/exercises/about_asserts.rbs +23 -0
  246. data/sig/exercises/about_blocks.rbs +40 -0
  247. data/sig/exercises/about_class_methods.rbs +62 -0
  248. data/sig/exercises/about_classes.rbs +88 -0
  249. data/sig/exercises/about_constants.rbs +53 -0
  250. data/sig/exercises/about_control_statements.rbs +46 -0
  251. data/sig/exercises/about_dice_project.rbs +16 -0
  252. data/sig/exercises/about_exceptions.rbs +36 -0
  253. data/sig/exercises/about_extra_credit.rbs +36 -0
  254. data/sig/exercises/about_hashes.rbs +62 -0
  255. data/sig/exercises/about_inheritance.rbs +50 -0
  256. data/sig/exercises/about_iteration.rbs +37 -0
  257. data/sig/exercises/about_keyword_arguments.rbs +33 -0
  258. data/sig/exercises/about_message_passing.rbs +68 -0
  259. data/sig/exercises/about_methods.rbs +68 -0
  260. data/sig/exercises/about_modules.rbs +38 -0
  261. data/sig/exercises/about_nil.rbs +23 -0
  262. data/sig/exercises/about_objects.rbs +38 -0
  263. data/sig/exercises/about_open_classes.rbs +31 -0
  264. data/sig/exercises/about_pattern_matching.rbs +65 -0
  265. data/sig/exercises/about_proxy_object_project.rbs +31 -0
  266. data/sig/exercises/about_regular_expressions.rbs +83 -0
  267. data/sig/exercises/about_sandwich_code.rbs +17 -0
  268. data/sig/exercises/about_scope.rbs +59 -0
  269. data/sig/exercises/about_scoring_project.rbs +16 -0
  270. data/sig/exercises/about_strings.rbs +85 -0
  271. data/sig/exercises/about_symbols.rbs +46 -0
  272. data/sig/exercises/about_to_str.rbs +36 -0
  273. data/sig/exercises/about_triangle_project.rbs +11 -0
  274. data/sig/exercises/about_triangle_project_two.rbs +12 -0
  275. data/sig/exercises/about_true_and_false.rbs +27 -0
  276. data/sig/exercises/blocks_and_methods.rbs +11 -0
  277. data/sig/exercises/class_state.rbs +19 -0
  278. data/sig/exercises/closure_capture.rbs +10 -0
  279. data/sig/exercises/collection_basics.rbs +6 -0
  280. data/sig/exercises/collection_basics_test.rbs +4 -0
  281. data/sig/exercises/constant_scope.rbs +11 -0
  282. data/sig/exercises/core_protocols.rbs +20 -0
  283. data/sig/exercises/delegation.rbs +14 -0
  284. data/sig/exercises/dynamic_methods.rbs +13 -0
  285. data/sig/exercises/exception_flow.rbs +11 -0
  286. data/sig/exercises/heredoc_layout.rbs +11 -0
  287. data/sig/exercises/keyword_forwarding.rbs +12 -0
  288. data/sig/exercises/lazy_enumeration.rbs +10 -0
  289. data/sig/exercises/literals_and_operators.rbs +12 -0
  290. data/sig/exercises/method_contracts.rbs +11 -0
  291. data/sig/exercises/method_lookup.rbs +16 -0
  292. data/sig/exercises/nonlocal_exit.rbs +14 -0
  293. data/sig/exercises/numbered_parameters.rbs +11 -0
  294. data/sig/exercises/numeric_precision.rbs +11 -0
  295. data/sig/exercises/pattern_matching.rbs +10 -0
  296. data/sig/exercises/refinement_scope.rbs +18 -0
  297. data/sig/exercises/regexp_captures.rbs +11 -0
  298. data/sig/exercises/runtime_context.rbs +23 -0
  299. data/sig/exercises/shared_rows.rbs +11 -0
  300. data/sig/exercises/singleton_pattern.rbs +14 -0
  301. data/sig/exercises/time_and_date.rbs +11 -0
  302. data/sig/exercises/visibility.rbs +18 -0
  303. data/sig/fixture_support.rbs +11 -0
  304. data/sig/help_hint_command_test.rbs +8 -0
  305. data/sig/heredoc_layout_acceptance_test.rbs +3 -0
  306. data/sig/keyboard_session_test.rbs +9 -0
  307. data/sig/keyword_forwarding_acceptance_test.rbs +3 -0
  308. data/sig/lazy_enumeration_acceptance_test.rbs +3 -0
  309. data/sig/literals_and_operators_acceptance_test.rbs +3 -0
  310. data/sig/method_contracts_acceptance_test.rbs +3 -0
  311. data/sig/method_lookup_acceptance_test.rbs +3 -0
  312. data/sig/nonlocal_exit_acceptance_test.rbs +3 -0
  313. data/sig/numbered_parameters_acceptance_test.rbs +3 -0
  314. data/sig/numeric_precision_acceptance_test.rbs +4 -0
  315. data/sig/packaging_test.rbs +3 -0
  316. data/sig/pattern_matching_acceptance_test.rbs +3 -0
  317. data/sig/reference_solutions_test.rbs +3 -0
  318. data/sig/refinement_scope_acceptance_test.rbs +3 -0
  319. data/sig/regexp_captures_acceptance_test.rbs +4 -0
  320. data/sig/rkoans/catalog.rbs +11 -0
  321. data/sig/rkoans/checker.rbs +22 -0
  322. data/sig/rkoans/cli.rbs +21 -0
  323. data/sig/rkoans/exercise.rbs +18 -0
  324. data/sig/rkoans/keyboard.rbs +13 -0
  325. data/sig/rkoans/progress.rbs +9 -0
  326. data/sig/rkoans/selection.rbs +9 -0
  327. data/sig/rkoans/session.rbs +30 -0
  328. data/sig/rkoans/terminal_view.rbs +24 -0
  329. data/sig/rkoans/watcher.rbs +18 -0
  330. data/sig/rkoans.rbs +2 -0
  331. data/sig/runtime_context_command_test.rbs +4 -0
  332. data/sig/selection_command_test.rbs +5 -0
  333. data/sig/session_command_test.rbs +12 -0
  334. data/sig/session_edge_cases_test.rbs +4 -0
  335. data/sig/shared_rows_acceptance_test.rbs +3 -0
  336. data/sig/singleton_pattern_acceptance_test.rbs +3 -0
  337. data/sig/time_and_date_acceptance_test.rbs +4 -0
  338. data/sig/visibility_acceptance_test.rbs +4 -0
  339. data/sig/watcher_test.rbs +3 -0
  340. data/solutions/about-array-assignment/about_array_assignment.rb +36 -0
  341. data/solutions/about-arrays/about_arrays.rb +53 -0
  342. data/solutions/about-asserts/about_asserts.rb +22 -0
  343. data/solutions/about-blocks/about_blocks.rb +30 -0
  344. data/solutions/about-class-methods/about_class_methods.rb +36 -0
  345. data/solutions/about-classes/about_classes.rb +40 -0
  346. data/solutions/about-constants/about_constants.rb +26 -0
  347. data/solutions/about-control-statements/about_control_statements.rb +35 -0
  348. data/solutions/about-dice-project/about_dice_project.rb +27 -0
  349. data/solutions/about-exceptions/about_exceptions.rb +30 -0
  350. data/solutions/about-extra-credit/about_extra_credit.rb +114 -0
  351. data/solutions/about-hashes/about_hashes.rb +52 -0
  352. data/solutions/about-inheritance/about_inheritance.rb +27 -0
  353. data/solutions/about-iteration/about_iteration.rb +31 -0
  354. data/solutions/about-keyword-arguments/about_keyword_arguments.rb +28 -0
  355. data/solutions/about-message-passing/about_message_passing.rb +38 -0
  356. data/solutions/about-methods/about_methods.rb +39 -0
  357. data/solutions/about-modules/about_modules.rb +23 -0
  358. data/solutions/about-nil/about_nil.rb +23 -0
  359. data/solutions/about-objects/about_objects.rb +34 -0
  360. data/solutions/about-open-classes/about_open_classes.rb +23 -0
  361. data/solutions/about-pattern-matching/about_pattern_matching.rb +39 -0
  362. data/solutions/about-proxy-object-project/about_proxy_object_project.rb +44 -0
  363. data/solutions/about-regular-expressions/about_regular_expressions.rb +60 -0
  364. data/solutions/about-sandwich-code/about_sandwich_code.rb +60 -0
  365. data/solutions/about-scope/about_scope.rb +33 -0
  366. data/solutions/about-scoring-project/about_scoring_project.rb +19 -0
  367. data/solutions/about-strings/about_strings.rb +56 -0
  368. data/solutions/about-symbols/about_symbols.rb +35 -0
  369. data/solutions/about-to-str/about_to_str.rb +24 -0
  370. data/solutions/about-triangle-project/about_triangle_project.rb +19 -0
  371. data/solutions/about-triangle-project-two/about_triangle_project_two.rb +25 -0
  372. data/solutions/about-true-and-false/about_true_and_false.rb +25 -0
  373. data/solutions/blocks-and-methods/blocks_and_methods.rb +14 -0
  374. data/solutions/class-state/class_state.rb +33 -0
  375. data/solutions/closure-capture/closure_capture.rb +12 -0
  376. data/solutions/collection-basics/collection_basics.rb +14 -0
  377. data/solutions/constant-scope/constant_scope.rb +18 -0
  378. data/solutions/core-protocols/core_protocols.rb +44 -0
  379. data/solutions/delegation/delegation.rb +17 -0
  380. data/solutions/dynamic-methods/dynamic_methods.rb +32 -0
  381. data/solutions/exception-flow/exception_flow.rb +34 -0
  382. data/solutions/heredoc-layout/heredoc_layout.rb +24 -0
  383. data/solutions/keyword-forwarding/keyword_forwarding.rb +26 -0
  384. data/solutions/lazy-enumeration/lazy_enumeration.rb +11 -0
  385. data/solutions/literals-and-operators/literals_and_operators.rb +22 -0
  386. data/solutions/method-contracts/method_contracts.rb +18 -0
  387. data/solutions/method-lookup/method_lookup.rb +26 -0
  388. data/solutions/nonlocal-exit/nonlocal_exit.rb +46 -0
  389. data/solutions/numbered-parameters/numbered_parameters.rb +18 -0
  390. data/solutions/numeric-precision/numeric_precision.rb +17 -0
  391. data/solutions/pattern-matching/pattern_matching.rb +17 -0
  392. data/solutions/refinement-scope/refinement_scope.rb +34 -0
  393. data/solutions/regexp-captures/regexp_captures.rb +24 -0
  394. data/solutions/runtime-context/runtime_context.rb +19 -0
  395. data/solutions/shared-rows/shared_rows.rb +13 -0
  396. data/solutions/singleton-pattern/singleton_pattern.rb +19 -0
  397. data/solutions/time-and-date/time_and_date.rb +16 -0
  398. data/solutions/visibility/visibility.rb +34 -0
  399. data/test/exercises/about_array_assignment_test.rb +87 -0
  400. data/test/exercises/about_arrays_test.rb +119 -0
  401. data/test/exercises/about_asserts_test.rb +41 -0
  402. data/test/exercises/about_blocks_test.rb +140 -0
  403. data/test/exercises/about_class_methods_test.rb +232 -0
  404. data/test/exercises/about_classes_test.rb +261 -0
  405. data/test/exercises/about_constants_test.rb +111 -0
  406. data/test/exercises/about_control_statements_test.rb +188 -0
  407. data/test/exercises/about_dice_project_test.rb +40 -0
  408. data/test/exercises/about_exceptions_test.rb +98 -0
  409. data/test/exercises/about_extra_credit_test.rb +74 -0
  410. data/test/exercises/about_hashes_test.rb +163 -0
  411. data/test/exercises/about_inheritance_test.rb +121 -0
  412. data/test/exercises/about_iteration_test.rb +148 -0
  413. data/test/exercises/about_keyword_arguments_test.rb +80 -0
  414. data/test/exercises/about_message_passing_test.rb +230 -0
  415. data/test/exercises/about_methods_test.rb +208 -0
  416. data/test/exercises/about_modules_test.rb +98 -0
  417. data/test/exercises/about_nil_test.rb +35 -0
  418. data/test/exercises/about_objects_test.rb +74 -0
  419. data/test/exercises/about_open_classes_test.rb +60 -0
  420. data/test/exercises/about_pattern_matching_test.rb +257 -0
  421. data/test/exercises/about_proxy_object_project_test.rb +75 -0
  422. data/test/exercises/about_regular_expressions_test.rb +243 -0
  423. data/test/exercises/about_sandwich_code_test.rb +82 -0
  424. data/test/exercises/about_scope_test.rb +123 -0
  425. data/test/exercises/about_scoring_project_test.rb +62 -0
  426. data/test/exercises/about_strings_test.rb +255 -0
  427. data/test/exercises/about_symbols_test.rb +120 -0
  428. data/test/exercises/about_to_str_test.rb +89 -0
  429. data/test/exercises/about_triangle_project_test.rb +29 -0
  430. data/test/exercises/about_triangle_project_two_test.rb +28 -0
  431. data/test/exercises/about_true_and_false_test.rb +43 -0
  432. data/test/exercises/blocks_and_methods_test.rb +22 -0
  433. data/test/exercises/class_state_test.rb +29 -0
  434. data/test/exercises/closure_capture_test.rb +29 -0
  435. data/test/exercises/collection_basics_test.rb +18 -0
  436. data/test/exercises/constant_scope_test.rb +18 -0
  437. data/test/exercises/core_protocols_test.rb +28 -0
  438. data/test/exercises/delegation_test.rb +23 -0
  439. data/test/exercises/dynamic_methods_test.rb +28 -0
  440. data/test/exercises/exception_flow_test.rb +17 -0
  441. data/test/exercises/heredoc_layout_test.rb +18 -0
  442. data/test/exercises/keyword_forwarding_test.rb +22 -0
  443. data/test/exercises/lazy_enumeration_test.rb +15 -0
  444. data/test/exercises/literals_and_operators_test.rb +25 -0
  445. data/test/exercises/method_contracts_test.rb +28 -0
  446. data/test/exercises/method_lookup_test.rb +14 -0
  447. data/test/exercises/nonlocal_exit_test.rb +22 -0
  448. data/test/exercises/numbered_parameters_test.rb +15 -0
  449. data/test/exercises/numeric_precision_test.rb +24 -0
  450. data/test/exercises/pattern_matching_test.rb +18 -0
  451. data/test/exercises/refinement_scope_test.rb +14 -0
  452. data/test/exercises/regexp_captures_test.rb +20 -0
  453. data/test/exercises/runtime_context_test.rb +59 -0
  454. data/test/exercises/shared_rows_test.rb +34 -0
  455. data/test/exercises/singleton_pattern_test.rb +16 -0
  456. data/test/exercises/time_and_date_test.rb +22 -0
  457. data/test/exercises/visibility_test.rb +22 -0
  458. metadata +471 -4
  459. data/Rakefile +0 -12
  460. data/sig/test_rkoans.rbs +0 -3
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ARGV.shift
4
+
5
+ # Checks runtime inputs and metadata inside the isolated check process.
6
+ class RuntimeContextTest < Minitest::Test
7
+ # Saves the ambient globals and supplies deterministic inputs for each check.
8
+ def setup
9
+ @arguments = ARGV.dup
10
+ @greeting = ENV.fetch('RKOANS_GREETING', nil)
11
+ ARGV.replace(%w[alpha beta])
12
+ ENV['RKOANS_GREETING'] = 'hello'
13
+ end
14
+
15
+ # Restores the original arguments and greeting even when an assertion fails.
16
+ def teardown
17
+ ARGV.replace(@arguments)
18
+ if @greeting
19
+ ENV['RKOANS_GREETING'] = @greeting
20
+ else
21
+ ENV.delete('RKOANS_GREETING')
22
+ end
23
+ end
24
+
25
+ # Reading and later changing the returned arguments must leave ARGV intact.
26
+ def test_runtime_globals
27
+ context = Exercises::RuntimeContext.context
28
+
29
+ assert_equal %w[alpha beta], context[:arguments]
30
+ assert_equal 'hello', context[:greeting]
31
+ assert_equal %w[alpha beta], ARGV
32
+ context[:arguments] << 'changed'
33
+
34
+ assert_equal %w[alpha beta], ARGV
35
+ end
36
+
37
+ # The required file and entry point differ; runtime constants describe this Ruby.
38
+ def test_runtime_constants
39
+ context = Exercises::RuntimeContext.context
40
+
41
+ assert_equal 'runtime_context.rb', context[:file]
42
+ assert_equal 'runtime_context_test.rb', context[:program]
43
+ assert_equal 'UTF-8', context[:encoding]
44
+ assert_equal RUBY_VERSION, context[:ruby]
45
+ end
46
+
47
+ # Missing and empty environment values differ, while empty arguments stay empty.
48
+ def test_empty_arguments_and_missing_or_empty_greeting
49
+ ARGV.clear
50
+ ENV.delete('RKOANS_GREETING')
51
+ context = Exercises::RuntimeContext.context
52
+
53
+ assert_empty context[:arguments]
54
+ assert_nil context[:greeting]
55
+ ENV['RKOANS_GREETING'] = ''
56
+
57
+ assert_equal '', Exercises::RuntimeContext.context[:greeting]
58
+ end
59
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ARGV.shift
4
+
5
+ # Checks mutable rows with independent values, including repeated calls.
6
+ class SharedRowsTest < Minitest::Test
7
+ # Changing either row leaves the other rows untouched.
8
+ def test_independent_rows
9
+ rows = Exercises::SharedRows.rows(3)
10
+ rows[0] << :ruby
11
+
12
+ assert_equal [[:ruby], [], []], rows
13
+
14
+ rows[1] << :rails
15
+
16
+ assert_equal [[:ruby], [:rails], []], rows
17
+ end
18
+
19
+ # Zero, one, and several rows preserve the requested shape.
20
+ def test_empty_rows
21
+ assert_equal [], Exercises::SharedRows.rows(0)
22
+ assert_equal [[]], Exercises::SharedRows.rows(1)
23
+ assert_equal [[], [], [], []], Exercises::SharedRows.rows(4)
24
+ end
25
+
26
+ # Each call owns its rows rather than returning cached mutable containers.
27
+ def test_fresh_rows_on_each_call
28
+ first = Exercises::SharedRows.rows(2)
29
+ second = Exercises::SharedRows.rows(2)
30
+ first[0] << :ruby
31
+
32
+ assert_equal [[], []], second
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ARGV.shift
4
+ class SingletonPatternTest < Minitest::Test
5
+ # Checks singleton identity.
6
+ def test_singleton_identity
7
+ assert_same Exercises::SingletonPattern::Configuration.instance, Exercises::SingletonPattern::Configuration.instance
8
+
9
+ assert_equal 'learning', Exercises::SingletonPattern::Configuration.instance.mode
10
+ end
11
+
12
+ # Checks private constructor.
13
+ def test_private_constructor
14
+ assert_raises(NoMethodError) { Exercises::SingletonPattern::Configuration.new }
15
+ end
16
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ARGV.shift
4
+ class TimeAndDateTest < Minitest::Test
5
+ # Checks time offset.
6
+ def test_time_offset
7
+ assert_equal '2026-10-12T08:00:00Z', Exercises::TimeAndDate.utc('2026-10-12T10:00:00+02:00')
8
+ end
9
+
10
+ # Checks calendar days.
11
+ def test_calendar_days
12
+ [
13
+ ['2024-02-28', '2024-03-01', 2],
14
+ ['2024-03-01', '2024-02-28', -2]
15
+ ].each do |first, last, expected|
16
+ days = Exercises::TimeAndDate.days_between(first, last)
17
+
18
+ assert_instance_of Integer, days
19
+ assert_equal expected, days
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require ARGV.shift
4
+ class VisibilityTest < Minitest::Test
5
+ # Checks protected peer calls.
6
+ def test_protected_peer_calls
7
+ a = Exercises::Visibility::Wallet.new(5)
8
+ b = Exercises::Visibility::Wallet.new(8)
9
+
10
+ assert_equal(-1, a.compare(b))
11
+ assert_raises(NoMethodError) { a.balance }
12
+ end
13
+
14
+ # Checks private normalization.
15
+ def test_private_normalization
16
+ wallet = Exercises::Visibility::Wallet.new(5)
17
+
18
+ assert_equal 8, wallet.deposit(-3)
19
+ assert_includes wallet.private_methods, :normalize
20
+ assert_raises(NoMethodError) { wallet.normalize(-3) }
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rkoans
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo Melo
8
8
  bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: minitest
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '5.16'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '5.16'
12
26
  description: Ruby and Rails challenges for learning and practicing
13
27
  email:
14
28
  - 9499829+theomelo@users.noreply.github.com
@@ -19,22 +33,475 @@ extra_rdoc_files: []
19
33
  files:
20
34
  - CHANGELOG.md
21
35
  - CODE_OF_CONDUCT.md
36
+ - CURRICULUM.md
22
37
  - LICENSE.txt
23
- - Rakefile
38
+ - README.md
39
+ - THIRD_PARTY_NOTICES.md
24
40
  - exe/rkoans
41
+ - exercises/about-array-assignment/about_array_assignment.rb
42
+ - exercises/about-array-assignment/brief.md
43
+ - exercises/about-array-assignment/hint.md
44
+ - exercises/about-arrays/about_arrays.rb
45
+ - exercises/about-arrays/brief.md
46
+ - exercises/about-arrays/hint.md
47
+ - exercises/about-asserts/about_asserts.rb
48
+ - exercises/about-asserts/brief.md
49
+ - exercises/about-asserts/hint.md
50
+ - exercises/about-blocks/about_blocks.rb
51
+ - exercises/about-blocks/brief.md
52
+ - exercises/about-blocks/hint.md
53
+ - exercises/about-class-methods/about_class_methods.rb
54
+ - exercises/about-class-methods/brief.md
55
+ - exercises/about-class-methods/hint.md
56
+ - exercises/about-classes/about_classes.rb
57
+ - exercises/about-classes/brief.md
58
+ - exercises/about-classes/hint.md
59
+ - exercises/about-constants/about_constants.rb
60
+ - exercises/about-constants/brief.md
61
+ - exercises/about-constants/hint.md
62
+ - exercises/about-control-statements/about_control_statements.rb
63
+ - exercises/about-control-statements/brief.md
64
+ - exercises/about-control-statements/hint.md
65
+ - exercises/about-dice-project/about_dice_project.rb
66
+ - exercises/about-dice-project/brief.md
67
+ - exercises/about-dice-project/hint.md
68
+ - exercises/about-exceptions/about_exceptions.rb
69
+ - exercises/about-exceptions/brief.md
70
+ - exercises/about-exceptions/hint.md
71
+ - exercises/about-extra-credit/about_extra_credit.rb
72
+ - exercises/about-extra-credit/brief.md
73
+ - exercises/about-extra-credit/hint.md
74
+ - exercises/about-hashes/about_hashes.rb
75
+ - exercises/about-hashes/brief.md
76
+ - exercises/about-hashes/hint.md
77
+ - exercises/about-inheritance/about_inheritance.rb
78
+ - exercises/about-inheritance/brief.md
79
+ - exercises/about-inheritance/hint.md
80
+ - exercises/about-iteration/about_iteration.rb
81
+ - exercises/about-iteration/brief.md
82
+ - exercises/about-iteration/hint.md
83
+ - exercises/about-keyword-arguments/about_keyword_arguments.rb
84
+ - exercises/about-keyword-arguments/brief.md
85
+ - exercises/about-keyword-arguments/hint.md
86
+ - exercises/about-message-passing/about_message_passing.rb
87
+ - exercises/about-message-passing/brief.md
88
+ - exercises/about-message-passing/hint.md
89
+ - exercises/about-methods/about_methods.rb
90
+ - exercises/about-methods/brief.md
91
+ - exercises/about-methods/hint.md
92
+ - exercises/about-modules/about_modules.rb
93
+ - exercises/about-modules/brief.md
94
+ - exercises/about-modules/hint.md
95
+ - exercises/about-nil/about_nil.rb
96
+ - exercises/about-nil/brief.md
97
+ - exercises/about-nil/hint.md
98
+ - exercises/about-objects/about_objects.rb
99
+ - exercises/about-objects/brief.md
100
+ - exercises/about-objects/hint.md
101
+ - exercises/about-open-classes/about_open_classes.rb
102
+ - exercises/about-open-classes/brief.md
103
+ - exercises/about-open-classes/hint.md
104
+ - exercises/about-pattern-matching/about_pattern_matching.rb
105
+ - exercises/about-pattern-matching/brief.md
106
+ - exercises/about-pattern-matching/hint.md
107
+ - exercises/about-proxy-object-project/about_proxy_object_project.rb
108
+ - exercises/about-proxy-object-project/brief.md
109
+ - exercises/about-proxy-object-project/hint.md
110
+ - exercises/about-regular-expressions/about_regular_expressions.rb
111
+ - exercises/about-regular-expressions/brief.md
112
+ - exercises/about-regular-expressions/hint.md
113
+ - exercises/about-sandwich-code/about_sandwich_code.rb
114
+ - exercises/about-sandwich-code/brief.md
115
+ - exercises/about-sandwich-code/hint.md
116
+ - exercises/about-scope/about_scope.rb
117
+ - exercises/about-scope/brief.md
118
+ - exercises/about-scope/hint.md
119
+ - exercises/about-scoring-project/about_scoring_project.rb
120
+ - exercises/about-scoring-project/brief.md
121
+ - exercises/about-scoring-project/hint.md
122
+ - exercises/about-strings/about_strings.rb
123
+ - exercises/about-strings/brief.md
124
+ - exercises/about-strings/hint.md
125
+ - exercises/about-symbols/about_symbols.rb
126
+ - exercises/about-symbols/brief.md
127
+ - exercises/about-symbols/hint.md
128
+ - exercises/about-to-str/about_to_str.rb
129
+ - exercises/about-to-str/brief.md
130
+ - exercises/about-to-str/hint.md
131
+ - exercises/about-triangle-project-two/about_triangle_project_two.rb
132
+ - exercises/about-triangle-project-two/brief.md
133
+ - exercises/about-triangle-project-two/hint.md
134
+ - exercises/about-triangle-project/about_triangle_project.rb
135
+ - exercises/about-triangle-project/brief.md
136
+ - exercises/about-triangle-project/hint.md
137
+ - exercises/about-true-and-false/about_true_and_false.rb
138
+ - exercises/about-true-and-false/brief.md
139
+ - exercises/about-true-and-false/hint.md
140
+ - exercises/blocks-and-methods/blocks_and_methods.rb
141
+ - exercises/blocks-and-methods/brief.md
142
+ - exercises/blocks-and-methods/hint.md
143
+ - exercises/catalog.json
144
+ - exercises/class-state/brief.md
145
+ - exercises/class-state/class_state.rb
146
+ - exercises/class-state/hint.md
147
+ - exercises/closure-capture/brief.md
148
+ - exercises/closure-capture/closure_capture.rb
149
+ - exercises/closure-capture/hint.md
150
+ - exercises/collection-basics/brief.md
151
+ - exercises/collection-basics/collection_basics.rb
152
+ - exercises/collection-basics/hint.md
153
+ - exercises/constant-scope/brief.md
154
+ - exercises/constant-scope/constant_scope.rb
155
+ - exercises/constant-scope/hint.md
156
+ - exercises/core-protocols/brief.md
157
+ - exercises/core-protocols/core_protocols.rb
158
+ - exercises/core-protocols/hint.md
159
+ - exercises/delegation/brief.md
160
+ - exercises/delegation/delegation.rb
161
+ - exercises/delegation/hint.md
162
+ - exercises/dynamic-methods/brief.md
163
+ - exercises/dynamic-methods/dynamic_methods.rb
164
+ - exercises/dynamic-methods/hint.md
165
+ - exercises/exception-flow/brief.md
166
+ - exercises/exception-flow/exception_flow.rb
167
+ - exercises/exception-flow/hint.md
168
+ - exercises/heredoc-layout/brief.md
169
+ - exercises/heredoc-layout/heredoc_layout.rb
170
+ - exercises/heredoc-layout/hint.md
171
+ - exercises/keyword-forwarding/brief.md
172
+ - exercises/keyword-forwarding/hint.md
173
+ - exercises/keyword-forwarding/keyword_forwarding.rb
174
+ - exercises/lazy-enumeration/brief.md
175
+ - exercises/lazy-enumeration/hint.md
176
+ - exercises/lazy-enumeration/lazy_enumeration.rb
177
+ - exercises/literals-and-operators/brief.md
178
+ - exercises/literals-and-operators/hint.md
179
+ - exercises/literals-and-operators/literals_and_operators.rb
180
+ - exercises/method-contracts/brief.md
181
+ - exercises/method-contracts/hint.md
182
+ - exercises/method-contracts/method_contracts.rb
183
+ - exercises/method-lookup/brief.md
184
+ - exercises/method-lookup/hint.md
185
+ - exercises/method-lookup/method_lookup.rb
186
+ - exercises/nonlocal-exit/brief.md
187
+ - exercises/nonlocal-exit/hint.md
188
+ - exercises/nonlocal-exit/nonlocal_exit.rb
189
+ - exercises/numbered-parameters/brief.md
190
+ - exercises/numbered-parameters/hint.md
191
+ - exercises/numbered-parameters/numbered_parameters.rb
192
+ - exercises/numeric-precision/brief.md
193
+ - exercises/numeric-precision/hint.md
194
+ - exercises/numeric-precision/numeric_precision.rb
195
+ - exercises/pattern-matching/brief.md
196
+ - exercises/pattern-matching/hint.md
197
+ - exercises/pattern-matching/pattern_matching.rb
198
+ - exercises/refinement-scope/brief.md
199
+ - exercises/refinement-scope/hint.md
200
+ - exercises/refinement-scope/refinement_scope.rb
201
+ - exercises/regexp-captures/brief.md
202
+ - exercises/regexp-captures/hint.md
203
+ - exercises/regexp-captures/regexp_captures.rb
204
+ - exercises/runtime-context/brief.md
205
+ - exercises/runtime-context/hint.md
206
+ - exercises/runtime-context/runtime_context.rb
207
+ - exercises/shared-rows/brief.md
208
+ - exercises/shared-rows/hint.md
209
+ - exercises/shared-rows/shared_rows.rb
210
+ - exercises/singleton-pattern/brief.md
211
+ - exercises/singleton-pattern/hint.md
212
+ - exercises/singleton-pattern/singleton_pattern.rb
213
+ - exercises/time-and-date/brief.md
214
+ - exercises/time-and-date/hint.md
215
+ - exercises/time-and-date/time_and_date.rb
216
+ - exercises/visibility/brief.md
217
+ - exercises/visibility/hint.md
218
+ - exercises/visibility/visibility.rb
25
219
  - lib/rkoans.rb
220
+ - lib/rkoans/catalog.rb
221
+ - lib/rkoans/checker.rb
222
+ - lib/rkoans/cli.rb
223
+ - lib/rkoans/error.rb
224
+ - lib/rkoans/exercise.rb
225
+ - lib/rkoans/keyboard.rb
226
+ - lib/rkoans/progress.rb
227
+ - lib/rkoans/selection.rb
228
+ - lib/rkoans/session.rb
229
+ - lib/rkoans/terminal_view.rb
26
230
  - lib/rkoans/version.rb
231
+ - lib/rkoans/watcher.rb
232
+ - sig/about_array_assignment_acceptance_test.rbs
233
+ - sig/about_arrays_acceptance_test.rbs
234
+ - sig/about_asserts_command_test.rbs
235
+ - sig/about_blocks_acceptance_test.rbs
236
+ - sig/about_class_methods_acceptance_test.rbs
237
+ - sig/about_classes_acceptance_test.rbs
238
+ - sig/about_constants_acceptance_test.rbs
239
+ - sig/about_control_statements_acceptance_test.rbs
240
+ - sig/about_dice_project_acceptance_test.rbs
241
+ - sig/about_exceptions_acceptance_test.rbs
242
+ - sig/about_extra_credit_acceptance_test.rbs
243
+ - sig/about_hashes_acceptance_test.rbs
244
+ - sig/about_inheritance_acceptance_test.rbs
245
+ - sig/about_iteration_acceptance_test.rbs
246
+ - sig/about_keyword_arguments_acceptance_test.rbs
247
+ - sig/about_message_passing_acceptance_test.rbs
248
+ - sig/about_methods_acceptance_test.rbs
249
+ - sig/about_modules_acceptance_test.rbs
250
+ - sig/about_nil_acceptance_test.rbs
251
+ - sig/about_objects_acceptance_test.rbs
252
+ - sig/about_open_classes_acceptance_test.rbs
253
+ - sig/about_pattern_matching_acceptance_test.rbs
254
+ - sig/about_proxy_object_project_acceptance_test.rbs
255
+ - sig/about_regular_expressions_acceptance_test.rbs
256
+ - sig/about_sandwich_code_acceptance_test.rbs
257
+ - sig/about_scope_acceptance_test.rbs
258
+ - sig/about_scoring_project_acceptance_test.rbs
259
+ - sig/about_strings_acceptance_test.rbs
260
+ - sig/about_symbols_acceptance_test.rbs
261
+ - sig/about_to_str_acceptance_test.rbs
262
+ - sig/about_triangle_project_acceptance_test.rbs
263
+ - sig/about_triangle_project_two_acceptance_test.rbs
264
+ - sig/about_true_and_false_command_test.rbs
265
+ - sig/catalog_error_command_test.rbs
266
+ - sig/checker_test.rbs
267
+ - sig/class_state_acceptance_test.rbs
268
+ - sig/closure_capture_acceptance_test.rbs
269
+ - sig/command_support.rbs
270
+ - sig/command_test.rbs
271
+ - sig/constant_scope_acceptance_test.rbs
272
+ - sig/core_protocols_acceptance_test.rbs
273
+ - sig/curriculum_cop_test.rbs
274
+ - sig/delegation_acceptance_test.rbs
275
+ - sig/dynamic_methods_acceptance_test.rbs
276
+ - sig/exception_flow_acceptance_test.rbs
277
+ - sig/exercise_test.rbs
278
+ - sig/exercises/about_array_assignment.rbs
279
+ - sig/exercises/about_arrays.rbs
280
+ - sig/exercises/about_asserts.rbs
281
+ - sig/exercises/about_blocks.rbs
282
+ - sig/exercises/about_class_methods.rbs
283
+ - sig/exercises/about_classes.rbs
284
+ - sig/exercises/about_constants.rbs
285
+ - sig/exercises/about_control_statements.rbs
286
+ - sig/exercises/about_dice_project.rbs
287
+ - sig/exercises/about_exceptions.rbs
288
+ - sig/exercises/about_extra_credit.rbs
289
+ - sig/exercises/about_hashes.rbs
290
+ - sig/exercises/about_inheritance.rbs
291
+ - sig/exercises/about_iteration.rbs
292
+ - sig/exercises/about_keyword_arguments.rbs
293
+ - sig/exercises/about_message_passing.rbs
294
+ - sig/exercises/about_methods.rbs
295
+ - sig/exercises/about_modules.rbs
296
+ - sig/exercises/about_nil.rbs
297
+ - sig/exercises/about_objects.rbs
298
+ - sig/exercises/about_open_classes.rbs
299
+ - sig/exercises/about_pattern_matching.rbs
300
+ - sig/exercises/about_proxy_object_project.rbs
301
+ - sig/exercises/about_regular_expressions.rbs
302
+ - sig/exercises/about_sandwich_code.rbs
303
+ - sig/exercises/about_scope.rbs
304
+ - sig/exercises/about_scoring_project.rbs
305
+ - sig/exercises/about_strings.rbs
306
+ - sig/exercises/about_symbols.rbs
307
+ - sig/exercises/about_to_str.rbs
308
+ - sig/exercises/about_triangle_project.rbs
309
+ - sig/exercises/about_triangle_project_two.rbs
310
+ - sig/exercises/about_true_and_false.rbs
311
+ - sig/exercises/blocks_and_methods.rbs
312
+ - sig/exercises/class_state.rbs
313
+ - sig/exercises/closure_capture.rbs
314
+ - sig/exercises/collection_basics.rbs
315
+ - sig/exercises/collection_basics_test.rbs
316
+ - sig/exercises/constant_scope.rbs
317
+ - sig/exercises/core_protocols.rbs
318
+ - sig/exercises/delegation.rbs
319
+ - sig/exercises/dynamic_methods.rbs
320
+ - sig/exercises/exception_flow.rbs
321
+ - sig/exercises/heredoc_layout.rbs
322
+ - sig/exercises/keyword_forwarding.rbs
323
+ - sig/exercises/lazy_enumeration.rbs
324
+ - sig/exercises/literals_and_operators.rbs
325
+ - sig/exercises/method_contracts.rbs
326
+ - sig/exercises/method_lookup.rbs
327
+ - sig/exercises/nonlocal_exit.rbs
328
+ - sig/exercises/numbered_parameters.rbs
329
+ - sig/exercises/numeric_precision.rbs
330
+ - sig/exercises/pattern_matching.rbs
331
+ - sig/exercises/refinement_scope.rbs
332
+ - sig/exercises/regexp_captures.rbs
333
+ - sig/exercises/runtime_context.rbs
334
+ - sig/exercises/shared_rows.rbs
335
+ - sig/exercises/singleton_pattern.rbs
336
+ - sig/exercises/time_and_date.rbs
337
+ - sig/exercises/visibility.rbs
338
+ - sig/fixture_support.rbs
339
+ - sig/help_hint_command_test.rbs
340
+ - sig/heredoc_layout_acceptance_test.rbs
341
+ - sig/keyboard_session_test.rbs
342
+ - sig/keyword_forwarding_acceptance_test.rbs
343
+ - sig/lazy_enumeration_acceptance_test.rbs
344
+ - sig/literals_and_operators_acceptance_test.rbs
345
+ - sig/method_contracts_acceptance_test.rbs
346
+ - sig/method_lookup_acceptance_test.rbs
347
+ - sig/nonlocal_exit_acceptance_test.rbs
348
+ - sig/numbered_parameters_acceptance_test.rbs
349
+ - sig/numeric_precision_acceptance_test.rbs
350
+ - sig/packaging_test.rbs
351
+ - sig/pattern_matching_acceptance_test.rbs
352
+ - sig/reference_solutions_test.rbs
353
+ - sig/refinement_scope_acceptance_test.rbs
354
+ - sig/regexp_captures_acceptance_test.rbs
27
355
  - sig/rkoans.rbs
28
- - sig/test_rkoans.rbs
356
+ - sig/rkoans/catalog.rbs
357
+ - sig/rkoans/checker.rbs
358
+ - sig/rkoans/cli.rbs
359
+ - sig/rkoans/exercise.rbs
360
+ - sig/rkoans/keyboard.rbs
361
+ - sig/rkoans/progress.rbs
362
+ - sig/rkoans/selection.rbs
363
+ - sig/rkoans/session.rbs
364
+ - sig/rkoans/terminal_view.rbs
365
+ - sig/rkoans/watcher.rbs
366
+ - sig/runtime_context_command_test.rbs
367
+ - sig/selection_command_test.rbs
368
+ - sig/session_command_test.rbs
369
+ - sig/session_edge_cases_test.rbs
370
+ - sig/shared_rows_acceptance_test.rbs
371
+ - sig/singleton_pattern_acceptance_test.rbs
372
+ - sig/time_and_date_acceptance_test.rbs
373
+ - sig/visibility_acceptance_test.rbs
374
+ - sig/watcher_test.rbs
375
+ - solutions/about-array-assignment/about_array_assignment.rb
376
+ - solutions/about-arrays/about_arrays.rb
377
+ - solutions/about-asserts/about_asserts.rb
378
+ - solutions/about-blocks/about_blocks.rb
379
+ - solutions/about-class-methods/about_class_methods.rb
380
+ - solutions/about-classes/about_classes.rb
381
+ - solutions/about-constants/about_constants.rb
382
+ - solutions/about-control-statements/about_control_statements.rb
383
+ - solutions/about-dice-project/about_dice_project.rb
384
+ - solutions/about-exceptions/about_exceptions.rb
385
+ - solutions/about-extra-credit/about_extra_credit.rb
386
+ - solutions/about-hashes/about_hashes.rb
387
+ - solutions/about-inheritance/about_inheritance.rb
388
+ - solutions/about-iteration/about_iteration.rb
389
+ - solutions/about-keyword-arguments/about_keyword_arguments.rb
390
+ - solutions/about-message-passing/about_message_passing.rb
391
+ - solutions/about-methods/about_methods.rb
392
+ - solutions/about-modules/about_modules.rb
393
+ - solutions/about-nil/about_nil.rb
394
+ - solutions/about-objects/about_objects.rb
395
+ - solutions/about-open-classes/about_open_classes.rb
396
+ - solutions/about-pattern-matching/about_pattern_matching.rb
397
+ - solutions/about-proxy-object-project/about_proxy_object_project.rb
398
+ - solutions/about-regular-expressions/about_regular_expressions.rb
399
+ - solutions/about-sandwich-code/about_sandwich_code.rb
400
+ - solutions/about-scope/about_scope.rb
401
+ - solutions/about-scoring-project/about_scoring_project.rb
402
+ - solutions/about-strings/about_strings.rb
403
+ - solutions/about-symbols/about_symbols.rb
404
+ - solutions/about-to-str/about_to_str.rb
405
+ - solutions/about-triangle-project-two/about_triangle_project_two.rb
406
+ - solutions/about-triangle-project/about_triangle_project.rb
407
+ - solutions/about-true-and-false/about_true_and_false.rb
408
+ - solutions/blocks-and-methods/blocks_and_methods.rb
409
+ - solutions/class-state/class_state.rb
410
+ - solutions/closure-capture/closure_capture.rb
411
+ - solutions/collection-basics/collection_basics.rb
412
+ - solutions/constant-scope/constant_scope.rb
413
+ - solutions/core-protocols/core_protocols.rb
414
+ - solutions/delegation/delegation.rb
415
+ - solutions/dynamic-methods/dynamic_methods.rb
416
+ - solutions/exception-flow/exception_flow.rb
417
+ - solutions/heredoc-layout/heredoc_layout.rb
418
+ - solutions/keyword-forwarding/keyword_forwarding.rb
419
+ - solutions/lazy-enumeration/lazy_enumeration.rb
420
+ - solutions/literals-and-operators/literals_and_operators.rb
421
+ - solutions/method-contracts/method_contracts.rb
422
+ - solutions/method-lookup/method_lookup.rb
423
+ - solutions/nonlocal-exit/nonlocal_exit.rb
424
+ - solutions/numbered-parameters/numbered_parameters.rb
425
+ - solutions/numeric-precision/numeric_precision.rb
426
+ - solutions/pattern-matching/pattern_matching.rb
427
+ - solutions/refinement-scope/refinement_scope.rb
428
+ - solutions/regexp-captures/regexp_captures.rb
429
+ - solutions/runtime-context/runtime_context.rb
430
+ - solutions/shared-rows/shared_rows.rb
431
+ - solutions/singleton-pattern/singleton_pattern.rb
432
+ - solutions/time-and-date/time_and_date.rb
433
+ - solutions/visibility/visibility.rb
434
+ - test/exercises/about_array_assignment_test.rb
435
+ - test/exercises/about_arrays_test.rb
436
+ - test/exercises/about_asserts_test.rb
437
+ - test/exercises/about_blocks_test.rb
438
+ - test/exercises/about_class_methods_test.rb
439
+ - test/exercises/about_classes_test.rb
440
+ - test/exercises/about_constants_test.rb
441
+ - test/exercises/about_control_statements_test.rb
442
+ - test/exercises/about_dice_project_test.rb
443
+ - test/exercises/about_exceptions_test.rb
444
+ - test/exercises/about_extra_credit_test.rb
445
+ - test/exercises/about_hashes_test.rb
446
+ - test/exercises/about_inheritance_test.rb
447
+ - test/exercises/about_iteration_test.rb
448
+ - test/exercises/about_keyword_arguments_test.rb
449
+ - test/exercises/about_message_passing_test.rb
450
+ - test/exercises/about_methods_test.rb
451
+ - test/exercises/about_modules_test.rb
452
+ - test/exercises/about_nil_test.rb
453
+ - test/exercises/about_objects_test.rb
454
+ - test/exercises/about_open_classes_test.rb
455
+ - test/exercises/about_pattern_matching_test.rb
456
+ - test/exercises/about_proxy_object_project_test.rb
457
+ - test/exercises/about_regular_expressions_test.rb
458
+ - test/exercises/about_sandwich_code_test.rb
459
+ - test/exercises/about_scope_test.rb
460
+ - test/exercises/about_scoring_project_test.rb
461
+ - test/exercises/about_strings_test.rb
462
+ - test/exercises/about_symbols_test.rb
463
+ - test/exercises/about_to_str_test.rb
464
+ - test/exercises/about_triangle_project_test.rb
465
+ - test/exercises/about_triangle_project_two_test.rb
466
+ - test/exercises/about_true_and_false_test.rb
467
+ - test/exercises/blocks_and_methods_test.rb
468
+ - test/exercises/class_state_test.rb
469
+ - test/exercises/closure_capture_test.rb
470
+ - test/exercises/collection_basics_test.rb
471
+ - test/exercises/constant_scope_test.rb
472
+ - test/exercises/core_protocols_test.rb
473
+ - test/exercises/delegation_test.rb
474
+ - test/exercises/dynamic_methods_test.rb
475
+ - test/exercises/exception_flow_test.rb
476
+ - test/exercises/heredoc_layout_test.rb
477
+ - test/exercises/keyword_forwarding_test.rb
478
+ - test/exercises/lazy_enumeration_test.rb
479
+ - test/exercises/literals_and_operators_test.rb
480
+ - test/exercises/method_contracts_test.rb
481
+ - test/exercises/method_lookup_test.rb
482
+ - test/exercises/nonlocal_exit_test.rb
483
+ - test/exercises/numbered_parameters_test.rb
484
+ - test/exercises/numeric_precision_test.rb
485
+ - test/exercises/pattern_matching_test.rb
486
+ - test/exercises/refinement_scope_test.rb
487
+ - test/exercises/regexp_captures_test.rb
488
+ - test/exercises/runtime_context_test.rb
489
+ - test/exercises/shared_rows_test.rb
490
+ - test/exercises/singleton_pattern_test.rb
491
+ - test/exercises/time_and_date_test.rb
492
+ - test/exercises/visibility_test.rb
29
493
  homepage: https://github.com/theomelo/rkoans
30
494
  licenses:
31
495
  - MIT
496
+ - CC-BY-NC-SA-3.0
32
497
  metadata:
33
498
  allowed_push_host: https://rubygems.org
34
499
  homepage_uri: https://github.com/theomelo/rkoans
35
500
  source_code_uri: https://github.com/theomelo/rkoans
36
501
  changelog_uri: https://github.com/theomelo/rkoans/blob/main/CHANGELOG.md
37
502
  rubygems_mfa_required: 'true'
503
+ license_scope: 'MIT: CLI and original exercises; CC-BY-NC-SA-3.0: adapted Ruby Koans.
504
+ See THIRD_PARTY_NOTICES.md for covered files and terms.'
38
505
  rdoc_options: []
39
506
  require_paths:
40
507
  - lib
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'minitest/test_task'
5
-
6
- Minitest::TestTask.create
7
-
8
- require 'rubocop/rake_task'
9
-
10
- RuboCop::RakeTask.new
11
-
12
- task default: %i[test rubocop]
data/sig/test_rkoans.rbs DELETED
@@ -1,3 +0,0 @@
1
- class TestRkoans
2
- def test_that_it_has_a_version_number: -> void
3
- end