belajar 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +4 -0
  5. data/Guardfile +5 -0
  6. data/README.md +5 -0
  7. data/Rakefile +5 -0
  8. data/belajar.gemspec +38 -0
  9. data/bin/belajar +12 -0
  10. data/lib/belajar.rb +24 -0
  11. data/lib/belajar/chapter.rb +23 -0
  12. data/lib/belajar/configuration.rb +89 -0
  13. data/lib/belajar/congratulator.rb +13 -0
  14. data/lib/belajar/course.rb +80 -0
  15. data/lib/belajar/exceptions.rb +19 -0
  16. data/lib/belajar/generator.rb +60 -0
  17. data/lib/belajar/github_client.rb +30 -0
  18. data/lib/belajar/loadable.rb +23 -0
  19. data/lib/belajar/loading/chapters.rb +9 -0
  20. data/lib/belajar/loading/courses.rb +9 -0
  21. data/lib/belajar/loading/units.rb +9 -0
  22. data/lib/belajar/reference_solution.rb +18 -0
  23. data/lib/belajar/solution.rb +53 -0
  24. data/lib/belajar/storeable.rb +32 -0
  25. data/lib/belajar/task.rb +10 -0
  26. data/lib/belajar/terminal.rb +12 -0
  27. data/lib/belajar/terminal/cli.rb +59 -0
  28. data/lib/belajar/terminal/courses.rb +179 -0
  29. data/lib/belajar/terminal/output.rb +78 -0
  30. data/lib/belajar/terminal/setup.rb +115 -0
  31. data/lib/belajar/terminal/solutions.rb +46 -0
  32. data/lib/belajar/terminal/texts/about.txt +19 -0
  33. data/lib/belajar/terminal/texts/congratulations.txt +12 -0
  34. data/lib/belajar/terminal/texts/courses_empty.txt +3 -0
  35. data/lib/belajar/terminal/texts/hint_course_download.txt +13 -0
  36. data/lib/belajar/terminal/texts/welcome.txt +12 -0
  37. data/lib/belajar/terminal/welcome.rb +98 -0
  38. data/lib/belajar/test.rb +46 -0
  39. data/lib/belajar/test_result.rb +86 -0
  40. data/lib/belajar/unit.rb +28 -0
  41. data/lib/belajar/version.rb +3 -0
  42. data/lib/belajar/views.rb +51 -0
  43. data/lib/belajar/views/chapters_menu.rb +60 -0
  44. data/lib/belajar/views/courses_menu.rb +52 -0
  45. data/lib/belajar/views/main_menu.rb +37 -0
  46. data/lib/belajar/views/menu.rb +89 -0
  47. data/lib/belajar/views/splash.rb +57 -0
  48. data/lib/belajar/views/task_view.rb +236 -0
  49. data/lib/belajar/views/top_bar.rb +40 -0
  50. data/lib/belajar/views/units_menu.rb +61 -0
  51. data/lib/belajar/window.rb +215 -0
  52. data/spec/belajar/chapter_spec.rb +76 -0
  53. data/spec/belajar/configuration_spec.rb +161 -0
  54. data/spec/belajar/congratulator_spec.rb +24 -0
  55. data/spec/belajar/course_spec.rb +201 -0
  56. data/spec/belajar/generator_spec.rb +82 -0
  57. data/spec/belajar/github_client_spec.rb +53 -0
  58. data/spec/belajar/loading/chapters_spec.rb +16 -0
  59. data/spec/belajar/loading/courses_spec.rb +16 -0
  60. data/spec/belajar/loading/units_spec.rb +21 -0
  61. data/spec/belajar/reference_solution_spec.rb +41 -0
  62. data/spec/belajar/solution_spec.rb +86 -0
  63. data/spec/belajar/storeable_spec.rb +35 -0
  64. data/spec/belajar/task_spec.rb +23 -0
  65. data/spec/belajar/terminal/cli_spec.rb +51 -0
  66. data/spec/belajar/terminal/courses_spec.rb +293 -0
  67. data/spec/belajar/terminal/output_spec.rb +151 -0
  68. data/spec/belajar/terminal/setup_spec.rb +10 -0
  69. data/spec/belajar/terminal/solutions_spec.rb +8 -0
  70. data/spec/belajar/terminal/welcome_spec.rb +12 -0
  71. data/spec/belajar/terminal_spec.rb +24 -0
  72. data/spec/belajar/test_example_spec.rb +54 -0
  73. data/spec/belajar/test_result_spec.rb +91 -0
  74. data/spec/belajar/test_spec.rb +48 -0
  75. data/spec/belajar/unit_spec.rb +85 -0
  76. data/spec/belajar/views/chapters_menu_spec.rb +6 -0
  77. data/spec/belajar/views/courses_menu_spec.rb +6 -0
  78. data/spec/belajar/views/menu_spec.rb +19 -0
  79. data/spec/belajar/views/task_view_spec.rb +7 -0
  80. data/spec/belajar/views/units_menu_spec.rb +6 -0
  81. data/spec/belajar/views_spec.rb +21 -0
  82. data/spec/belajar_spec.rb +51 -0
  83. data/spec/path_helpers_spec.rb +60 -0
  84. data/spec/resource_helpers_spec.rb +33 -0
  85. data/spec/spec_helper.rb +28 -0
  86. data/spec/support/macros/content_helpers.rb +129 -0
  87. data/spec/support/macros/mock_helpers.rb +25 -0
  88. data/spec/support/macros/path_helpers.rb +139 -0
  89. data/spec/support/macros/resource_helpers.rb +157 -0
  90. data/spec/support/macros/test_helpers.rb +6 -0
  91. metadata +385 -0
@@ -0,0 +1,157 @@
1
+ module ResourceHelpers
2
+ require 'fileutils'
3
+ require 'zip'
4
+
5
+ def prepare_courses
6
+ FileUtils.mkdir_p(courses_basepath) unless Dir.exist?(courses_basepath)
7
+
8
+ course_dir_names.each do |course|
9
+ chapter_dir_names.each do |chapter|
10
+ unit_dirs(course).each do |units|
11
+ units.each do |unit|
12
+ create_directory(unit)
13
+ create_file(unit, task_name, task_file_content)
14
+ create_file(unit, reference_solution_name, solution_content)
15
+ create_file(unit, test_name, test_content)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ def prepare_github_course
23
+ prepare_courses
24
+ github_course_dir = "#{course_dirs.first}-master/"
25
+ FileUtils.copy_entry("#{course_dirs.first}/", github_course_dir)
26
+ github_course_dir
27
+ end
28
+
29
+ def prepare_solutions
30
+ all_solution_file_paths.each do |path|
31
+ base_dir = File.dirname(path)
32
+ name = File.basename(path)
33
+ create_file(base_dir, name, solution_content)
34
+ end
35
+ end
36
+
37
+ def prepare_download(zip_file_name, options = {})
38
+ zip_file_path = File.join(courses_basepath, zip_file_name)
39
+
40
+ unless Dir.exist?(File.dirname(zip_file_path))
41
+ FileUtils.makedirs(File.dirname(zip_file_path))
42
+ end
43
+
44
+ Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file|
45
+ Dir[File.join(courses_basepath, '**', '**')].each do |file|
46
+ if course_match?(file, options[:multiple_courses])
47
+ zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
48
+ end
49
+ end
50
+ end
51
+
52
+ File.read(zip_file_path)
53
+ end
54
+
55
+ def prepare_github_download(zip_file_name)
56
+ zip_file_path = File.join(courses_basepath, zip_file_name)
57
+
58
+ unless Dir.exist?(File.dirname(zip_file_path))
59
+ FileUtils.makedirs(File.dirname(zip_file_path))
60
+ end
61
+
62
+ Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file|
63
+ Dir[File.join(courses_basepath, '**', '**')].each do |file|
64
+ if file.match(/.*\-master/)
65
+ zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
66
+ end
67
+ end
68
+ end
69
+
70
+ File.read(zip_file_path)
71
+ end
72
+
73
+ def course_match?(name, multiple_courses)
74
+ if multiple_courses
75
+ name.match(course_dirs.first) || name.match(course_dirs.second)
76
+ else
77
+ name.match(course_dirs.first)
78
+ end
79
+ end
80
+
81
+ def cleanup_download(zip_file_name)
82
+ directory = course_dirs.first
83
+ zip_file = File.join(File.dirname(directory), zip_file_name)
84
+ FileUtils.rm(zip_file) if File.exist?(zip_file)
85
+ end
86
+
87
+ def cleanup_temp_data
88
+ FileUtils.remove_dir(temp_basepath) if Dir.exist?(temp_basepath)
89
+ end
90
+
91
+ def create_directory(dir_path)
92
+ FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
93
+ end
94
+
95
+ def create_file(base_dir, name, content)
96
+ create_directory(base_dir) unless Dir.exist?(base_dir)
97
+ file_path = File.join(base_dir, name)
98
+
99
+ if Dir.exist?(base_dir)
100
+ File.open(file_path, 'w') { |f| f.puts content }
101
+ end
102
+ end
103
+
104
+ def available_courses
105
+ course_dirs.map do |path|
106
+ Belajar::Course.new(path)
107
+ end
108
+ end
109
+
110
+ def available_chapters(course_name)
111
+ chapter_dirs(course_name).map do |path|
112
+ Belajar::Chapter.new(path)
113
+ end
114
+ end
115
+
116
+ def available_units(course_name, chapter_name)
117
+ units = unit_dirs(course_name).map do |units|
118
+ units.map do |path|
119
+ next unless path.split('/')[-2] == chapter_name
120
+ Belajar::Unit.new(path)
121
+ end
122
+ end
123
+
124
+ units.map(&:compact).flatten
125
+ end
126
+
127
+ def available_task(course_name, chapter_name, unit_name)
128
+ task = unit_dirs(course_name).map do |units|
129
+ units.map do |path|
130
+ split = path.split('/')
131
+ next if (split[-2] != chapter_name || split[-1] != unit_name)
132
+
133
+ Belajar::Task.new(path)
134
+ end
135
+ end
136
+
137
+ task.map(&:compact).flatten
138
+ end
139
+
140
+ def available_reference_solution(course_name, chapter_name, unit_name)
141
+ solution = unit_dirs(course_name).map do |units|
142
+ units.map do |path|
143
+ split = path.split('/')
144
+ next if (split[-2] != chapter_name || split[-1] != unit_name)
145
+
146
+ Belajar::ReferenceSolution.new(path)
147
+ end
148
+ end
149
+
150
+ solution.map(&:compact).flatten
151
+ end
152
+
153
+ def available_solution(course_name, chapter_name, unit_name)
154
+ path = File.join(solutions_basepath, course_name, chapter_name, unit_name)
155
+ Belajar::Solution.new(path)
156
+ end
157
+ end
@@ -0,0 +1,6 @@
1
+ module TestHelpers
2
+ include ContentHelpers
3
+ include PathHelpers
4
+ include ResourceHelpers
5
+ include MockHelpers
6
+ end
metadata ADDED
@@ -0,0 +1,385 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: belajar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Ahmad Ainul Rizki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-09-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: curses
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '4.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '5.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '4.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '5.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '3.0'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '4.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '3.0'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '4.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: thor
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: 0.19.1
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: 0.19.1
87
+ - !ruby/object:Gem::Dependency
88
+ name: os
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: 0.9.6
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: 0.9.6
101
+ - !ruby/object:Gem::Dependency
102
+ name: colorize
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: 0.7.5
108
+ type: :runtime
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: 0.7.5
115
+ - !ruby/object:Gem::Dependency
116
+ name: rubyzip
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '1.0'
122
+ - - "<"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.0'
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: '2.0'
135
+ - !ruby/object:Gem::Dependency
136
+ name: wisper
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: 2.0.0.rc1
142
+ - - "<"
143
+ - !ruby/object:Gem::Version
144
+ version: '3.0'
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 2.0.0.rc1
152
+ - - "<"
153
+ - !ruby/object:Gem::Version
154
+ version: '3.0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: quick_store
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: 0.1.0
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: 0.1.0
169
+ - !ruby/object:Gem::Dependency
170
+ name: bundler
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '1.7'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '1.7'
183
+ - !ruby/object:Gem::Dependency
184
+ name: rake
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '10.0'
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: '10.0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: webmock
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: 1.20.4
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: 1.20.4
211
+ - !ruby/object:Gem::Dependency
212
+ name: guard-rspec
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - "~>"
216
+ - !ruby/object:Gem::Version
217
+ version: 4.5.0
218
+ type: :development
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - "~>"
223
+ - !ruby/object:Gem::Version
224
+ version: 4.5.0
225
+ description: Belajar is the Japanese word for university. With Belajar you can interactively
226
+ learn the Ruby programming language using the command line.
227
+ email:
228
+ - hey@bejoistic.com
229
+ executables:
230
+ - belajar
231
+ extensions: []
232
+ extra_rdoc_files: []
233
+ files:
234
+ - ".gitignore"
235
+ - ".travis.yml"
236
+ - Gemfile
237
+ - Guardfile
238
+ - README.md
239
+ - Rakefile
240
+ - belajar.gemspec
241
+ - bin/belajar
242
+ - lib/belajar.rb
243
+ - lib/belajar/chapter.rb
244
+ - lib/belajar/configuration.rb
245
+ - lib/belajar/congratulator.rb
246
+ - lib/belajar/course.rb
247
+ - lib/belajar/exceptions.rb
248
+ - lib/belajar/generator.rb
249
+ - lib/belajar/github_client.rb
250
+ - lib/belajar/loadable.rb
251
+ - lib/belajar/loading/chapters.rb
252
+ - lib/belajar/loading/courses.rb
253
+ - lib/belajar/loading/units.rb
254
+ - lib/belajar/reference_solution.rb
255
+ - lib/belajar/solution.rb
256
+ - lib/belajar/storeable.rb
257
+ - lib/belajar/task.rb
258
+ - lib/belajar/terminal.rb
259
+ - lib/belajar/terminal/cli.rb
260
+ - lib/belajar/terminal/courses.rb
261
+ - lib/belajar/terminal/output.rb
262
+ - lib/belajar/terminal/setup.rb
263
+ - lib/belajar/terminal/solutions.rb
264
+ - lib/belajar/terminal/texts/about.txt
265
+ - lib/belajar/terminal/texts/congratulations.txt
266
+ - lib/belajar/terminal/texts/courses_empty.txt
267
+ - lib/belajar/terminal/texts/hint_course_download.txt
268
+ - lib/belajar/terminal/texts/welcome.txt
269
+ - lib/belajar/terminal/welcome.rb
270
+ - lib/belajar/test.rb
271
+ - lib/belajar/test_result.rb
272
+ - lib/belajar/unit.rb
273
+ - lib/belajar/version.rb
274
+ - lib/belajar/views.rb
275
+ - lib/belajar/views/chapters_menu.rb
276
+ - lib/belajar/views/courses_menu.rb
277
+ - lib/belajar/views/main_menu.rb
278
+ - lib/belajar/views/menu.rb
279
+ - lib/belajar/views/splash.rb
280
+ - lib/belajar/views/task_view.rb
281
+ - lib/belajar/views/top_bar.rb
282
+ - lib/belajar/views/units_menu.rb
283
+ - lib/belajar/window.rb
284
+ - spec/belajar/chapter_spec.rb
285
+ - spec/belajar/configuration_spec.rb
286
+ - spec/belajar/congratulator_spec.rb
287
+ - spec/belajar/course_spec.rb
288
+ - spec/belajar/generator_spec.rb
289
+ - spec/belajar/github_client_spec.rb
290
+ - spec/belajar/loading/chapters_spec.rb
291
+ - spec/belajar/loading/courses_spec.rb
292
+ - spec/belajar/loading/units_spec.rb
293
+ - spec/belajar/reference_solution_spec.rb
294
+ - spec/belajar/solution_spec.rb
295
+ - spec/belajar/storeable_spec.rb
296
+ - spec/belajar/task_spec.rb
297
+ - spec/belajar/terminal/cli_spec.rb
298
+ - spec/belajar/terminal/courses_spec.rb
299
+ - spec/belajar/terminal/output_spec.rb
300
+ - spec/belajar/terminal/setup_spec.rb
301
+ - spec/belajar/terminal/solutions_spec.rb
302
+ - spec/belajar/terminal/welcome_spec.rb
303
+ - spec/belajar/terminal_spec.rb
304
+ - spec/belajar/test_example_spec.rb
305
+ - spec/belajar/test_result_spec.rb
306
+ - spec/belajar/test_spec.rb
307
+ - spec/belajar/unit_spec.rb
308
+ - spec/belajar/views/chapters_menu_spec.rb
309
+ - spec/belajar/views/courses_menu_spec.rb
310
+ - spec/belajar/views/menu_spec.rb
311
+ - spec/belajar/views/task_view_spec.rb
312
+ - spec/belajar/views/units_menu_spec.rb
313
+ - spec/belajar/views_spec.rb
314
+ - spec/belajar_spec.rb
315
+ - spec/path_helpers_spec.rb
316
+ - spec/resource_helpers_spec.rb
317
+ - spec/spec_helper.rb
318
+ - spec/support/macros/content_helpers.rb
319
+ - spec/support/macros/mock_helpers.rb
320
+ - spec/support/macros/path_helpers.rb
321
+ - spec/support/macros/resource_helpers.rb
322
+ - spec/support/macros/test_helpers.rb
323
+ homepage: https://github.com/wong-bejo/belajar
324
+ licenses:
325
+ - MIT
326
+ metadata: {}
327
+ post_install_message:
328
+ rdoc_options: []
329
+ require_paths:
330
+ - lib
331
+ required_ruby_version: !ruby/object:Gem::Requirement
332
+ requirements:
333
+ - - "~>"
334
+ - !ruby/object:Gem::Version
335
+ version: '2.0'
336
+ required_rubygems_version: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - ">="
339
+ - !ruby/object:Gem::Version
340
+ version: '0'
341
+ requirements: []
342
+ rubygems_version: 3.1.2
343
+ signing_key:
344
+ specification_version: 4
345
+ summary: Learning Ruby on the command line.
346
+ test_files:
347
+ - spec/belajar/chapter_spec.rb
348
+ - spec/belajar/configuration_spec.rb
349
+ - spec/belajar/congratulator_spec.rb
350
+ - spec/belajar/course_spec.rb
351
+ - spec/belajar/generator_spec.rb
352
+ - spec/belajar/github_client_spec.rb
353
+ - spec/belajar/loading/chapters_spec.rb
354
+ - spec/belajar/loading/courses_spec.rb
355
+ - spec/belajar/loading/units_spec.rb
356
+ - spec/belajar/reference_solution_spec.rb
357
+ - spec/belajar/solution_spec.rb
358
+ - spec/belajar/storeable_spec.rb
359
+ - spec/belajar/task_spec.rb
360
+ - spec/belajar/terminal/cli_spec.rb
361
+ - spec/belajar/terminal/courses_spec.rb
362
+ - spec/belajar/terminal/output_spec.rb
363
+ - spec/belajar/terminal/setup_spec.rb
364
+ - spec/belajar/terminal/solutions_spec.rb
365
+ - spec/belajar/terminal/welcome_spec.rb
366
+ - spec/belajar/terminal_spec.rb
367
+ - spec/belajar/test_example_spec.rb
368
+ - spec/belajar/test_result_spec.rb
369
+ - spec/belajar/test_spec.rb
370
+ - spec/belajar/unit_spec.rb
371
+ - spec/belajar/views/chapters_menu_spec.rb
372
+ - spec/belajar/views/courses_menu_spec.rb
373
+ - spec/belajar/views/menu_spec.rb
374
+ - spec/belajar/views/task_view_spec.rb
375
+ - spec/belajar/views/units_menu_spec.rb
376
+ - spec/belajar/views_spec.rb
377
+ - spec/belajar_spec.rb
378
+ - spec/path_helpers_spec.rb
379
+ - spec/resource_helpers_spec.rb
380
+ - spec/spec_helper.rb
381
+ - spec/support/macros/content_helpers.rb
382
+ - spec/support/macros/mock_helpers.rb
383
+ - spec/support/macros/path_helpers.rb
384
+ - spec/support/macros/resource_helpers.rb
385
+ - spec/support/macros/test_helpers.rb