daigaku 0.2.0 → 1.0.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.
- checksums.yaml +5 -5
- data/.travis.yml +7 -4
- data/CODE_OF_CONDUCT.md +77 -0
- data/README.md +11 -11
- data/bin/daigaku +6 -2
- data/daigaku.gemspec +22 -26
- data/lib/daigaku.rb +0 -1
- data/lib/daigaku/chapter.rb +3 -4
- data/lib/daigaku/coloring.rb +22 -27
- data/lib/daigaku/configuration.rb +25 -28
- data/lib/daigaku/congratulator.rb +17 -5
- data/lib/daigaku/course.rb +9 -8
- data/lib/daigaku/exceptions.rb +0 -2
- data/lib/daigaku/generator.rb +13 -15
- data/lib/daigaku/github_client.rb +5 -5
- data/lib/daigaku/loadable.rb +23 -14
- data/lib/daigaku/loading/chapters.rb +0 -2
- data/lib/daigaku/loading/courses.rb +0 -2
- data/lib/daigaku/loading/units.rb +0 -2
- data/lib/daigaku/markdown.rb +1 -0
- data/lib/daigaku/markdown/printer.rb +89 -0
- data/lib/daigaku/markdown/ruby_doc.rb +15 -15
- data/lib/daigaku/solution.rb +23 -15
- data/lib/daigaku/storeable.rb +11 -12
- data/lib/daigaku/task.rb +1 -1
- data/lib/daigaku/terminal.rb +3 -4
- data/lib/daigaku/terminal/cli.rb +8 -8
- data/lib/daigaku/terminal/courses.rb +22 -19
- data/lib/daigaku/terminal/output.rb +46 -53
- data/lib/daigaku/terminal/setup.rb +13 -18
- data/lib/daigaku/terminal/solutions.rb +27 -32
- data/lib/daigaku/terminal/welcome.rb +9 -11
- data/lib/daigaku/test.rb +7 -10
- data/lib/daigaku/test_result.rb +54 -21
- data/lib/daigaku/unit.rb +2 -4
- data/lib/daigaku/version.rb +1 -1
- data/lib/daigaku/views.rb +29 -33
- data/lib/daigaku/views/chapters_menu.rb +16 -20
- data/lib/daigaku/views/courses_menu.rb +12 -15
- data/lib/daigaku/views/main_menu.rb +23 -23
- data/lib/daigaku/views/menu.rb +14 -18
- data/lib/daigaku/views/splash.rb +11 -13
- data/lib/daigaku/views/subscriber.rb +38 -0
- data/lib/daigaku/views/task_view.rb +97 -80
- data/lib/daigaku/views/top_bar.rb +4 -10
- data/lib/daigaku/views/units_menu.rb +16 -21
- data/lib/daigaku/window.rb +12 -70
- data/spec/daigaku/chapter_spec.rb +23 -18
- data/spec/daigaku/coloring_spec.rb +0 -1
- data/spec/daigaku/configuration_spec.rb +54 -50
- data/spec/daigaku/congratulator_spec.rb +11 -8
- data/spec/daigaku/course_spec.rb +75 -52
- data/spec/daigaku/generator_spec.rb +24 -25
- data/spec/daigaku/github_client_spec.rb +17 -18
- data/spec/daigaku/loading/chapters_spec.rb +2 -3
- data/spec/daigaku/loading/courses_spec.rb +2 -3
- data/spec/daigaku/loading/units_spec.rb +4 -5
- data/spec/daigaku/markdown/ruby_doc_spec.rb +12 -6
- data/spec/daigaku/reference_solution_spec.rb +8 -10
- data/spec/daigaku/solution_spec.rb +21 -22
- data/spec/daigaku/storeable_spec.rb +12 -10
- data/spec/daigaku/task_spec.rb +3 -4
- data/spec/daigaku/terminal/cli_spec.rb +29 -21
- data/spec/daigaku/terminal/courses_spec.rb +104 -99
- data/spec/daigaku/terminal/output_spec.rb +44 -39
- data/spec/daigaku/terminal/setup_spec.rb +1 -3
- data/spec/daigaku/terminal/solutions_spec.rb +0 -2
- data/spec/daigaku/terminal/welcome_spec.rb +0 -2
- data/spec/daigaku/terminal_spec.rb +5 -7
- data/spec/daigaku/test_example_spec.rb +16 -14
- data/spec/daigaku/test_result_spec.rb +21 -25
- data/spec/daigaku/test_spec.rb +11 -12
- data/spec/daigaku/unit_spec.rb +24 -27
- data/spec/daigaku/views/chapters_menu_spec.rb +0 -1
- data/spec/daigaku/views/courses_menu_spec.rb +0 -1
- data/spec/daigaku/views/menu_spec.rb +1 -2
- data/spec/daigaku/views/task_view_spec.rb +0 -2
- data/spec/daigaku/views/units_menu_spec.rb +0 -1
- data/spec/daigaku/views_spec.rb +0 -1
- data/spec/daigaku_spec.rb +9 -12
- data/spec/path_helpers_spec.rb +11 -12
- data/spec/resource_helpers_spec.rb +11 -12
- data/spec/spec_helper.rb +3 -4
- data/spec/support/macros/content_helpers.rb +16 -17
- data/spec/support/macros/mock_helpers.rb +6 -6
- data/spec/support/macros/path_helpers.rb +15 -15
- data/spec/support/macros/resource_helpers.rb +34 -35
- metadata +32 -44
@@ -1,16 +1,16 @@
|
|
1
1
|
module PathHelpers
|
2
|
-
LOCAL_DIR
|
3
|
-
CONFIGURATION_FILE
|
4
|
-
COURSES
|
5
|
-
SOLUTIONS
|
6
|
-
TEMP_PATH
|
7
|
-
COURSE_DIR_NAMES
|
8
|
-
CHAPTER_DIR_NAMES
|
9
|
-
UNIT_DIR_NAMES
|
10
|
-
TASK_NAME
|
11
|
-
REFERENCE_SOLUTION_NAME = 'solution.rb'
|
12
|
-
TEST_NAME
|
13
|
-
STORAGE_FILE
|
2
|
+
LOCAL_DIR = '.daigaku'.freeze
|
3
|
+
CONFIGURATION_FILE = 'daigaku.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 = 'daigaku.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 =
|
89
|
+
underscored_unit_dir = File.basename(unit_dir).gsub(/[\_\-\.]+/, '_')
|
90
90
|
file_name = underscored_unit_dir + Daigaku::Solution::FILE_SUFFIX
|
91
91
|
|
92
92
|
unit_path = File.join(solutions_basepath, unit_dir.split('/')[-3..-1])
|
93
|
-
parts
|
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
|
-
|
99
|
+
(parts[0...-3] + course_parts).join('/')
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'zip'
|
1
|
+
require 'fileutils'
|
2
|
+
require 'zip'
|
4
3
|
|
4
|
+
module ResourceHelpers
|
5
5
|
def prepare_courses
|
6
|
-
|
6
|
+
create_directory(courses_basepath)
|
7
7
|
|
8
8
|
course_dir_names.each do |course|
|
9
|
-
chapter_dir_names.each do |
|
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
|
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,
|
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
|
-
|
47
|
-
|
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
|
-
|
65
|
-
|
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
|
-
|
69
|
+
first_course_matches || name.match(course_dirs[1])
|
76
70
|
else
|
77
|
-
|
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
|
84
|
-
|
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
|
-
|
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.
|
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)
|
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
|
-
|
100
|
-
|
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 |
|
118
|
-
|
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
|
Daigaku::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
|
130
|
+
next if split[-2] != chapter_name || split[-1] != unit_name
|
132
131
|
|
133
132
|
Daigaku::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
|
143
|
+
next if split[-2] != chapter_name || split[-1] != unit_name
|
145
144
|
|
146
145
|
Daigaku::ReferenceSolution.new(path)
|
147
146
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daigaku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Götze
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -16,28 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activesupport
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '4.0'
|
19
|
+
version: '1.3'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
24
|
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
26
|
+
version: '1.3'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rspec
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,154 +44,154 @@ dependencies:
|
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0
|
47
|
+
version: '1.0'
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0
|
54
|
+
version: '1.0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: os
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
61
|
+
version: '1.0'
|
76
62
|
type: :runtime
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
68
|
+
version: '1.0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: colorize
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
75
|
+
version: '0.8'
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
82
|
+
version: '0.8'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: rubyzip
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
89
|
+
version: '2.0'
|
104
90
|
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
96
|
+
version: '2.0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: wisper
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.0
|
103
|
+
version: '2.0'
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.0
|
110
|
+
version: '2.0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: quick_store
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0
|
117
|
+
version: '1.0'
|
132
118
|
type: :runtime
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0
|
124
|
+
version: '1.0'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: code_breaker
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0
|
131
|
+
version: '1.0'
|
146
132
|
type: :runtime
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
136
|
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0
|
138
|
+
version: '1.0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
140
|
name: bundler
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - "~>"
|
158
144
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
145
|
+
version: '2.0'
|
160
146
|
type: :development
|
161
147
|
prerelease: false
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
163
149
|
requirements:
|
164
150
|
- - "~>"
|
165
151
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
152
|
+
version: '2.0'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
154
|
name: rake
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
157
|
- - "~>"
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
159
|
+
version: '13.0'
|
174
160
|
type: :development
|
175
161
|
prerelease: false
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
177
163
|
requirements:
|
178
164
|
- - "~>"
|
179
165
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
166
|
+
version: '13.0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: webmock
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
184
170
|
requirements:
|
185
171
|
- - "~>"
|
186
172
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
173
|
+
version: '3.0'
|
188
174
|
type: :development
|
189
175
|
prerelease: false
|
190
176
|
version_requirements: !ruby/object:Gem::Requirement
|
191
177
|
requirements:
|
192
178
|
- - "~>"
|
193
179
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
180
|
+
version: '3.0'
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
182
|
name: guard-rspec
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
198
184
|
requirements:
|
199
185
|
- - "~>"
|
200
186
|
- !ruby/object:Gem::Version
|
201
|
-
version: 4.
|
187
|
+
version: '4.7'
|
202
188
|
type: :development
|
203
189
|
prerelease: false
|
204
190
|
version_requirements: !ruby/object:Gem::Requirement
|
205
191
|
requirements:
|
206
192
|
- - "~>"
|
207
193
|
- !ruby/object:Gem::Version
|
208
|
-
version: 4.
|
194
|
+
version: '4.7'
|
209
195
|
description: Daigaku is the Japanese word for university. With Daigaku you can interactively
|
210
196
|
learn the Ruby programming language using the command line.
|
211
197
|
email:
|
@@ -217,6 +203,7 @@ extra_rdoc_files: []
|
|
217
203
|
files:
|
218
204
|
- ".gitignore"
|
219
205
|
- ".travis.yml"
|
206
|
+
- CODE_OF_CONDUCT.md
|
220
207
|
- Gemfile
|
221
208
|
- Guardfile
|
222
209
|
- README.md
|
@@ -237,6 +224,7 @@ files:
|
|
237
224
|
- lib/daigaku/loading/courses.rb
|
238
225
|
- lib/daigaku/loading/units.rb
|
239
226
|
- lib/daigaku/markdown.rb
|
227
|
+
- lib/daigaku/markdown/printer.rb
|
240
228
|
- lib/daigaku/markdown/ruby_doc.rb
|
241
229
|
- lib/daigaku/reference_solution.rb
|
242
230
|
- lib/daigaku/solution.rb
|
@@ -264,6 +252,7 @@ files:
|
|
264
252
|
- lib/daigaku/views/main_menu.rb
|
265
253
|
- lib/daigaku/views/menu.rb
|
266
254
|
- lib/daigaku/views/splash.rb
|
255
|
+
- lib/daigaku/views/subscriber.rb
|
267
256
|
- lib/daigaku/views/task_view.rb
|
268
257
|
- lib/daigaku/views/top_bar.rb
|
269
258
|
- lib/daigaku/views/units_menu.rb
|
@@ -319,17 +308,16 @@ require_paths:
|
|
319
308
|
- lib
|
320
309
|
required_ruby_version: !ruby/object:Gem::Requirement
|
321
310
|
requirements:
|
322
|
-
- - "
|
311
|
+
- - ">="
|
323
312
|
- !ruby/object:Gem::Version
|
324
|
-
version: '2.
|
313
|
+
version: '2.5'
|
325
314
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
326
315
|
requirements:
|
327
316
|
- - ">="
|
328
317
|
- !ruby/object:Gem::Version
|
329
318
|
version: '0'
|
330
319
|
requirements: []
|
331
|
-
|
332
|
-
rubygems_version: 2.4.6
|
320
|
+
rubygems_version: 3.1.3
|
333
321
|
signing_key:
|
334
322
|
specification_version: 4
|
335
323
|
summary: Learning Ruby on the command line.
|