belajar 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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