belajar 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +7 -4
  3. data/CODE_OF_CONDUCT.md +76 -0
  4. data/Gemfile +1 -1
  5. data/README.md +76 -1
  6. data/Rakefile +1 -1
  7. data/belajar.gemspec +23 -26
  8. data/belajar.png +0 -0
  9. data/bin/belajar +6 -2
  10. data/lib/belajar.rb +0 -1
  11. data/lib/belajar/chapter.rb +3 -4
  12. data/lib/belajar/coloring.rb +32 -0
  13. data/lib/belajar/configuration.rb +25 -28
  14. data/lib/belajar/congratulator.rb +17 -5
  15. data/lib/belajar/course.rb +9 -8
  16. data/lib/belajar/exceptions.rb +0 -2
  17. data/lib/belajar/generator.rb +13 -15
  18. data/lib/belajar/github_client.rb +5 -5
  19. data/lib/belajar/loadable.rb +23 -14
  20. data/lib/belajar/loading/chapters.rb +0 -2
  21. data/lib/belajar/loading/courses.rb +0 -2
  22. data/lib/belajar/loading/units.rb +0 -2
  23. data/lib/belajar/markdown.rb +2 -0
  24. data/lib/belajar/markdown/printer.rb +89 -0
  25. data/lib/belajar/markdown/ruby_doc.rb +104 -0
  26. data/lib/belajar/solution.rb +23 -15
  27. data/lib/belajar/storeable.rb +11 -12
  28. data/lib/belajar/task.rb +1 -1
  29. data/lib/belajar/terminal.rb +3 -4
  30. data/lib/belajar/terminal/cli.rb +8 -8
  31. data/lib/belajar/terminal/courses.rb +24 -21
  32. data/lib/belajar/terminal/output.rb +46 -53
  33. data/lib/belajar/terminal/setup.rb +13 -18
  34. data/lib/belajar/terminal/solutions.rb +27 -32
  35. data/lib/belajar/terminal/texts/hint_course_download.txt +2 -2
  36. data/lib/belajar/terminal/welcome.rb +9 -11
  37. data/lib/belajar/test.rb +7 -10
  38. data/lib/belajar/test_result.rb +54 -21
  39. data/lib/belajar/unit.rb +2 -4
  40. data/lib/belajar/version.rb +1 -1
  41. data/lib/belajar/views.rb +29 -33
  42. data/lib/belajar/views/chapters_menu.rb +16 -20
  43. data/lib/belajar/views/courses_menu.rb +12 -15
  44. data/lib/belajar/views/main_menu.rb +23 -23
  45. data/lib/belajar/views/menu.rb +14 -18
  46. data/lib/belajar/views/splash.rb +11 -13
  47. data/lib/belajar/views/subscriber.rb +38 -0
  48. data/lib/belajar/views/task_view.rb +97 -80
  49. data/lib/belajar/views/top_bar.rb +4 -10
  50. data/lib/belajar/views/units_menu.rb +16 -21
  51. data/lib/belajar/window.rb +20 -140
  52. data/spec/belajar/chapter_spec.rb +23 -18
  53. data/spec/belajar/coloring_spec.rb +35 -0
  54. data/spec/belajar/configuration_spec.rb +55 -51
  55. data/spec/belajar/congratulator_spec.rb +11 -8
  56. data/spec/belajar/course_spec.rb +75 -52
  57. data/spec/belajar/generator_spec.rb +24 -25
  58. data/spec/belajar/github_client_spec.rb +17 -18
  59. data/spec/belajar/loading/chapters_spec.rb +2 -3
  60. data/spec/belajar/loading/courses_spec.rb +2 -3
  61. data/spec/belajar/loading/units_spec.rb +4 -5
  62. data/spec/belajar/markdown/ruby_doc_spec.rb +116 -0
  63. data/spec/belajar/reference_solution_spec.rb +8 -10
  64. data/spec/belajar/solution_spec.rb +21 -22
  65. data/spec/belajar/storeable_spec.rb +12 -10
  66. data/spec/belajar/task_spec.rb +3 -4
  67. data/spec/belajar/terminal/cli_spec.rb +29 -21
  68. data/spec/belajar/terminal/courses_spec.rb +104 -99
  69. data/spec/belajar/terminal/output_spec.rb +44 -39
  70. data/spec/belajar/terminal/setup_spec.rb +1 -3
  71. data/spec/belajar/terminal/solutions_spec.rb +0 -2
  72. data/spec/belajar/terminal/welcome_spec.rb +0 -2
  73. data/spec/belajar/terminal_spec.rb +5 -7
  74. data/spec/belajar/test_example_spec.rb +16 -14
  75. data/spec/belajar/test_result_spec.rb +21 -25
  76. data/spec/belajar/test_spec.rb +11 -12
  77. data/spec/belajar/unit_spec.rb +24 -27
  78. data/spec/belajar/views/chapters_menu_spec.rb +0 -1
  79. data/spec/belajar/views/courses_menu_spec.rb +0 -1
  80. data/spec/belajar/views/menu_spec.rb +1 -2
  81. data/spec/belajar/views/task_view_spec.rb +0 -2
  82. data/spec/belajar/views/units_menu_spec.rb +0 -1
  83. data/spec/belajar/views_spec.rb +0 -1
  84. data/spec/belajar_spec.rb +9 -12
  85. data/spec/path_helpers_spec.rb +11 -12
  86. data/spec/resource_helpers_spec.rb +11 -12
  87. data/spec/spec_helper.rb +3 -4
  88. data/spec/support/macros/content_helpers.rb +16 -17
  89. data/spec/support/macros/mock_helpers.rb +6 -6
  90. data/spec/support/macros/path_helpers.rb +15 -15
  91. data/spec/support/macros/resource_helpers.rb +34 -35
  92. metadata +56 -75
@@ -1,16 +1,16 @@
1
1
  module PathHelpers
2
- LOCAL_DIR = '.belajar'
3
- CONFIGURATION_FILE = 'belajar.settings'
4
- COURSES = 'courses'
5
- SOLUTIONS = 'solutions'
6
- TEMP_PATH = File.expand_path("../../../../tmp/", __FILE__)
7
- COURSE_DIR_NAMES = ['Course_A', 'Course_B']
8
- CHAPTER_DIR_NAMES = ['1_Chapter-A', '2_Chapter-B']
9
- UNIT_DIR_NAMES = ['1_unit-a', '2_unit-b']
10
- TASK_NAME = 'task.md'
11
- REFERENCE_SOLUTION_NAME = 'solution.rb'
12
- TEST_NAME = 'solution_spec.rb'
13
- STORAGE_FILE = 'belajar.db.yml'
2
+ LOCAL_DIR = '.belajar'.freeze
3
+ CONFIGURATION_FILE = 'belajar.settings'.freeze
4
+ COURSES = 'courses'.freeze
5
+ SOLUTIONS = 'solutions'.freeze
6
+ TEMP_PATH = File.expand_path('../../../../tmp/', __FILE__).freeze
7
+ COURSE_DIR_NAMES = %w(Course_A Course_B).freeze
8
+ CHAPTER_DIR_NAMES = %w(1_Chapter-A 2_Chapter-B).freeze
9
+ UNIT_DIR_NAMES = %w(1_unit-a 2_unit-b).freeze
10
+ TASK_NAME = 'task.md'.freeze
11
+ REFERENCE_SOLUTION_NAME = 'solution.rb'.freeze
12
+ TEST_NAME = 'solution_spec.rb'.freeze
13
+ STORAGE_FILE = 'belajar.db.yml'.freeze
14
14
 
15
15
  def temp_basepath
16
16
  TEMP_PATH
@@ -86,17 +86,17 @@ module PathHelpers
86
86
 
87
87
  def all_solution_file_paths
88
88
  all_unit_dirs.map do |unit_dir|
89
- underscored_unit_dir = File.basename(unit_dir).gsub(/[\_\-\.]+/, '_')
89
+ underscored_unit_dir = File.basename(unit_dir).gsub(/[\_\-\.]+/, '_')
90
90
  file_name = underscored_unit_dir + Belajar::Solution::FILE_SUFFIX
91
91
 
92
92
  unit_path = File.join(solutions_basepath, unit_dir.split('/')[-3..-1])
93
- parts = File.join(File.dirname(unit_path), file_name).split('/')
93
+ parts = File.join(File.dirname(unit_path), file_name).split('/')
94
94
 
95
95
  course_parts = parts[-3..-1].map do |part|
96
96
  part.gsub(/^[\d]+\_/, '').gsub(/[\_\-]+/, '_').downcase
97
97
  end
98
98
 
99
- [*parts[0...-3], *course_parts].join('/')
99
+ (parts[0...-3] + course_parts).join('/')
100
100
  end
101
101
  end
102
102
 
@@ -1,12 +1,12 @@
1
- module ResourceHelpers
2
- require 'fileutils'
3
- require 'zip'
1
+ require 'fileutils'
2
+ require 'zip'
4
3
 
4
+ module ResourceHelpers
5
5
  def prepare_courses
6
- FileUtils.mkdir_p(courses_basepath) unless Dir.exist?(courses_basepath)
6
+ create_directory(courses_basepath)
7
7
 
8
8
  course_dir_names.each do |course|
9
- chapter_dir_names.each do |chapter|
9
+ chapter_dir_names.each do |_|
10
10
  unit_dirs(course).each do |units|
11
11
  units.each do |unit|
12
12
  create_directory(unit)
@@ -29,23 +29,19 @@ module ResourceHelpers
29
29
  def prepare_solutions
30
30
  all_solution_file_paths.each do |path|
31
31
  base_dir = File.dirname(path)
32
- name = File.basename(path)
32
+ name = File.basename(path)
33
33
  create_file(base_dir, name, solution_content)
34
34
  end
35
35
  end
36
36
 
37
- def prepare_download(zip_file_name, options = {})
37
+ def prepare_download(zip_file_name, multiple_courses: false)
38
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
39
+ create_directory(File.dirname(zip_file_path))
43
40
 
44
41
  Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file|
45
42
  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
43
+ next unless course_match?(file, multiple_courses)
44
+ zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
49
45
  end
50
46
  end
51
47
 
@@ -54,16 +50,12 @@ module ResourceHelpers
54
50
 
55
51
  def prepare_github_download(zip_file_name)
56
52
  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
53
+ create_directory(File.dirname(zip_file_path))
61
54
 
62
55
  Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file|
63
56
  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
57
+ next unless file =~ /.*\-master/
58
+ zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true }
67
59
  end
68
60
  end
69
61
 
@@ -71,34 +63,41 @@ module ResourceHelpers
71
63
  end
72
64
 
73
65
  def course_match?(name, multiple_courses)
66
+ first_course_matches = name.match(course_dirs.first)
67
+
74
68
  if multiple_courses
75
- name.match(course_dirs.first) || name.match(course_dirs.second)
69
+ first_course_matches || name.match(course_dirs[1])
76
70
  else
77
- name.match(course_dirs.first)
71
+ first_course_matches
78
72
  end
79
73
  end
80
74
 
81
75
  def cleanup_download(zip_file_name)
82
76
  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)
77
+ zip_file = File.join(File.dirname(directory), zip_file_name)
78
+ remove_file(zip_file)
85
79
  end
86
80
 
87
81
  def cleanup_temp_data
88
- FileUtils.remove_dir(temp_basepath) if Dir.exist?(temp_basepath)
82
+ remove_directory(temp_basepath)
83
+ end
84
+
85
+ def remove_directory(dir_path)
86
+ FileUtils.remove_dir(dir_path) if Dir.exist?(dir_path)
89
87
  end
90
88
 
91
89
  def create_directory(dir_path)
92
- FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
90
+ FileUtils.makedirs(dir_path) unless Dir.exist?(dir_path)
93
91
  end
94
92
 
95
93
  def create_file(base_dir, name, content)
96
- create_directory(base_dir) unless Dir.exist?(base_dir)
94
+ create_directory(base_dir)
97
95
  file_path = File.join(base_dir, name)
96
+ File.open(file_path, 'w') { |f| f.puts content }
97
+ end
98
98
 
99
- if Dir.exist?(base_dir)
100
- File.open(file_path, 'w') { |f| f.puts content }
101
- end
99
+ def remove_file(file)
100
+ FileUtils.rm(file) if File.exist?(file)
102
101
  end
103
102
 
104
103
  def available_courses
@@ -114,8 +113,8 @@ module ResourceHelpers
114
113
  end
115
114
 
116
115
  def available_units(course_name, chapter_name)
117
- units = unit_dirs(course_name).map do |units|
118
- units.map do |path|
116
+ units = unit_dirs(course_name).map do |unit_dir|
117
+ unit_dir.map do |path|
119
118
  next unless path.split('/')[-2] == chapter_name
120
119
  Belajar::Unit.new(path)
121
120
  end
@@ -128,7 +127,7 @@ module ResourceHelpers
128
127
  task = unit_dirs(course_name).map do |units|
129
128
  units.map do |path|
130
129
  split = path.split('/')
131
- next if (split[-2] != chapter_name || split[-1] != unit_name)
130
+ next if split[-2] != chapter_name || split[-1] != unit_name
132
131
 
133
132
  Belajar::Task.new(path)
134
133
  end
@@ -141,7 +140,7 @@ module ResourceHelpers
141
140
  solution = unit_dirs(course_name).map do |units|
142
141
  units.map do |path|
143
142
  split = path.split('/')
144
- next if (split[-2] != chapter_name || split[-1] != unit_name)
143
+ next if split[-2] != chapter_name || split[-1] != unit_name
145
144
 
146
145
  Belajar::ReferenceSolution.new(path)
147
146
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: belajar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmad Ainul Rizki
@@ -14,214 +14,184 @@ dependencies:
14
14
  name: curses
15
15
  requirement: !ruby/object:Gem::Requirement
16
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
- - - "<"
17
+ - - "~>"
41
18
  - !ruby/object:Gem::Version
42
- version: '5.0'
19
+ version: '1.3'
43
20
  type: :runtime
44
21
  prerelease: false
45
22
  version_requirements: !ruby/object:Gem::Requirement
46
23
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '4.0'
50
- - - "<"
24
+ - - "~>"
51
25
  - !ruby/object:Gem::Version
52
- version: '5.0'
26
+ version: '1.3'
53
27
  - !ruby/object:Gem::Dependency
54
28
  name: rspec
55
29
  requirement: !ruby/object:Gem::Requirement
56
30
  requirements:
57
- - - ">="
31
+ - - "~>"
58
32
  - !ruby/object:Gem::Version
59
33
  version: '3.0'
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '4.0'
63
34
  type: :runtime
64
35
  prerelease: false
65
36
  version_requirements: !ruby/object:Gem::Requirement
66
37
  requirements:
67
- - - ">="
38
+ - - "~>"
68
39
  - !ruby/object:Gem::Version
69
40
  version: '3.0'
70
- - - "<"
71
- - !ruby/object:Gem::Version
72
- version: '4.0'
73
41
  - !ruby/object:Gem::Dependency
74
42
  name: thor
75
43
  requirement: !ruby/object:Gem::Requirement
76
44
  requirements:
77
45
  - - "~>"
78
46
  - !ruby/object:Gem::Version
79
- version: 0.19.1
47
+ version: '1.0'
80
48
  type: :runtime
81
49
  prerelease: false
82
50
  version_requirements: !ruby/object:Gem::Requirement
83
51
  requirements:
84
52
  - - "~>"
85
53
  - !ruby/object:Gem::Version
86
- version: 0.19.1
54
+ version: '1.0'
87
55
  - !ruby/object:Gem::Dependency
88
56
  name: os
89
57
  requirement: !ruby/object:Gem::Requirement
90
58
  requirements:
91
59
  - - "~>"
92
60
  - !ruby/object:Gem::Version
93
- version: 0.9.6
61
+ version: '1.0'
94
62
  type: :runtime
95
63
  prerelease: false
96
64
  version_requirements: !ruby/object:Gem::Requirement
97
65
  requirements:
98
66
  - - "~>"
99
67
  - !ruby/object:Gem::Version
100
- version: 0.9.6
68
+ version: '1.0'
101
69
  - !ruby/object:Gem::Dependency
102
70
  name: colorize
103
71
  requirement: !ruby/object:Gem::Requirement
104
72
  requirements:
105
73
  - - "~>"
106
74
  - !ruby/object:Gem::Version
107
- version: 0.7.5
75
+ version: '0.8'
108
76
  type: :runtime
109
77
  prerelease: false
110
78
  version_requirements: !ruby/object:Gem::Requirement
111
79
  requirements:
112
80
  - - "~>"
113
81
  - !ruby/object:Gem::Version
114
- version: 0.7.5
82
+ version: '0.8'
115
83
  - !ruby/object:Gem::Dependency
116
84
  name: rubyzip
117
85
  requirement: !ruby/object:Gem::Requirement
118
86
  requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: '1.0'
122
- - - "<"
87
+ - - "~>"
123
88
  - !ruby/object:Gem::Version
124
89
  version: '2.0'
125
90
  type: :runtime
126
91
  prerelease: false
127
92
  version_requirements: !ruby/object:Gem::Requirement
128
93
  requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '1.0'
132
- - - "<"
94
+ - - "~>"
133
95
  - !ruby/object:Gem::Version
134
96
  version: '2.0'
135
97
  - !ruby/object:Gem::Dependency
136
98
  name: wisper
137
99
  requirement: !ruby/object:Gem::Requirement
138
100
  requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- version: 2.0.0.rc1
142
- - - "<"
101
+ - - "~>"
143
102
  - !ruby/object:Gem::Version
144
- version: '3.0'
103
+ version: '2.0'
145
104
  type: :runtime
146
105
  prerelease: false
147
106
  version_requirements: !ruby/object:Gem::Requirement
148
107
  requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: 2.0.0.rc1
152
- - - "<"
108
+ - - "~>"
153
109
  - !ruby/object:Gem::Version
154
- version: '3.0'
110
+ version: '2.0'
155
111
  - !ruby/object:Gem::Dependency
156
112
  name: quick_store
157
113
  requirement: !ruby/object:Gem::Requirement
158
114
  requirements:
159
115
  - - "~>"
160
116
  - !ruby/object:Gem::Version
161
- version: 0.1.0
117
+ version: '1.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: code_breaker
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
162
132
  type: :runtime
163
133
  prerelease: false
164
134
  version_requirements: !ruby/object:Gem::Requirement
165
135
  requirements:
166
136
  - - "~>"
167
137
  - !ruby/object:Gem::Version
168
- version: 0.1.0
138
+ version: '1.0'
169
139
  - !ruby/object:Gem::Dependency
170
140
  name: bundler
171
141
  requirement: !ruby/object:Gem::Requirement
172
142
  requirements:
173
143
  - - "~>"
174
144
  - !ruby/object:Gem::Version
175
- version: '1.7'
145
+ version: '2.0'
176
146
  type: :development
177
147
  prerelease: false
178
148
  version_requirements: !ruby/object:Gem::Requirement
179
149
  requirements:
180
150
  - - "~>"
181
151
  - !ruby/object:Gem::Version
182
- version: '1.7'
152
+ version: '2.0'
183
153
  - !ruby/object:Gem::Dependency
184
154
  name: rake
185
155
  requirement: !ruby/object:Gem::Requirement
186
156
  requirements:
187
157
  - - "~>"
188
158
  - !ruby/object:Gem::Version
189
- version: '10.0'
159
+ version: '13.0'
190
160
  type: :development
191
161
  prerelease: false
192
162
  version_requirements: !ruby/object:Gem::Requirement
193
163
  requirements:
194
164
  - - "~>"
195
165
  - !ruby/object:Gem::Version
196
- version: '10.0'
166
+ version: '13.0'
197
167
  - !ruby/object:Gem::Dependency
198
168
  name: webmock
199
169
  requirement: !ruby/object:Gem::Requirement
200
170
  requirements:
201
171
  - - "~>"
202
172
  - !ruby/object:Gem::Version
203
- version: 1.20.4
173
+ version: '3.0'
204
174
  type: :development
205
175
  prerelease: false
206
176
  version_requirements: !ruby/object:Gem::Requirement
207
177
  requirements:
208
178
  - - "~>"
209
179
  - !ruby/object:Gem::Version
210
- version: 1.20.4
180
+ version: '3.0'
211
181
  - !ruby/object:Gem::Dependency
212
182
  name: guard-rspec
213
183
  requirement: !ruby/object:Gem::Requirement
214
184
  requirements:
215
185
  - - "~>"
216
186
  - !ruby/object:Gem::Version
217
- version: 4.5.0
187
+ version: '4.7'
218
188
  type: :development
219
189
  prerelease: false
220
190
  version_requirements: !ruby/object:Gem::Requirement
221
191
  requirements:
222
192
  - - "~>"
223
193
  - !ruby/object:Gem::Version
224
- version: 4.5.0
194
+ version: '4.7'
225
195
  description: Belajar is the Japanese word for university. With Belajar you can interactively
226
196
  learn the Ruby programming language using the command line.
227
197
  email:
@@ -233,14 +203,17 @@ extra_rdoc_files: []
233
203
  files:
234
204
  - ".gitignore"
235
205
  - ".travis.yml"
206
+ - CODE_OF_CONDUCT.md
236
207
  - Gemfile
237
208
  - Guardfile
238
209
  - README.md
239
210
  - Rakefile
240
211
  - belajar.gemspec
212
+ - belajar.png
241
213
  - bin/belajar
242
214
  - lib/belajar.rb
243
215
  - lib/belajar/chapter.rb
216
+ - lib/belajar/coloring.rb
244
217
  - lib/belajar/configuration.rb
245
218
  - lib/belajar/congratulator.rb
246
219
  - lib/belajar/course.rb
@@ -251,6 +224,9 @@ files:
251
224
  - lib/belajar/loading/chapters.rb
252
225
  - lib/belajar/loading/courses.rb
253
226
  - lib/belajar/loading/units.rb
227
+ - lib/belajar/markdown.rb
228
+ - lib/belajar/markdown/printer.rb
229
+ - lib/belajar/markdown/ruby_doc.rb
254
230
  - lib/belajar/reference_solution.rb
255
231
  - lib/belajar/solution.rb
256
232
  - lib/belajar/storeable.rb
@@ -277,11 +253,13 @@ files:
277
253
  - lib/belajar/views/main_menu.rb
278
254
  - lib/belajar/views/menu.rb
279
255
  - lib/belajar/views/splash.rb
256
+ - lib/belajar/views/subscriber.rb
280
257
  - lib/belajar/views/task_view.rb
281
258
  - lib/belajar/views/top_bar.rb
282
259
  - lib/belajar/views/units_menu.rb
283
260
  - lib/belajar/window.rb
284
261
  - spec/belajar/chapter_spec.rb
262
+ - spec/belajar/coloring_spec.rb
285
263
  - spec/belajar/configuration_spec.rb
286
264
  - spec/belajar/congratulator_spec.rb
287
265
  - spec/belajar/course_spec.rb
@@ -290,6 +268,7 @@ files:
290
268
  - spec/belajar/loading/chapters_spec.rb
291
269
  - spec/belajar/loading/courses_spec.rb
292
270
  - spec/belajar/loading/units_spec.rb
271
+ - spec/belajar/markdown/ruby_doc_spec.rb
293
272
  - spec/belajar/reference_solution_spec.rb
294
273
  - spec/belajar/solution_spec.rb
295
274
  - spec/belajar/storeable_spec.rb
@@ -330,9 +309,9 @@ require_paths:
330
309
  - lib
331
310
  required_ruby_version: !ruby/object:Gem::Requirement
332
311
  requirements:
333
- - - "~>"
312
+ - - ">="
334
313
  - !ruby/object:Gem::Version
335
- version: '2.0'
314
+ version: '2.5'
336
315
  required_rubygems_version: !ruby/object:Gem::Requirement
337
316
  requirements:
338
317
  - - ">="
@@ -345,6 +324,7 @@ specification_version: 4
345
324
  summary: Learning Ruby on the command line.
346
325
  test_files:
347
326
  - spec/belajar/chapter_spec.rb
327
+ - spec/belajar/coloring_spec.rb
348
328
  - spec/belajar/configuration_spec.rb
349
329
  - spec/belajar/congratulator_spec.rb
350
330
  - spec/belajar/course_spec.rb
@@ -353,6 +333,7 @@ test_files:
353
333
  - spec/belajar/loading/chapters_spec.rb
354
334
  - spec/belajar/loading/courses_spec.rb
355
335
  - spec/belajar/loading/units_spec.rb
336
+ - spec/belajar/markdown/ruby_doc_spec.rb
356
337
  - spec/belajar/reference_solution_spec.rb
357
338
  - spec/belajar/solution_spec.rb
358
339
  - spec/belajar/storeable_spec.rb