mvcStudentXD 1.2.1 → 1.2.2

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -0
  3. data/Gemfile +22 -24
  4. data/README.md +35 -3
  5. data/{mvcStudentXD/lib → lib}/mvcStudentXD/version.rb +1 -1
  6. data/mvcStudentXD.gemspec +38 -0
  7. metadata +40 -92
  8. data/Gemfile.lock +0 -101
  9. data/Lab1/arr1_3.txt +0 -1
  10. data/Lab1/lb1_1.rb +0 -19
  11. data/Lab1/lb1_2.rb +0 -28
  12. data/Lab1/lb1_3.rb +0 -46
  13. data/Lab1/lb1_4.rb +0 -82
  14. data/Lab2/1Class.jpg +0 -0
  15. data/Lab2/Web/main.rb +0 -89
  16. data/Lab2/Web/views/add.html +0 -168
  17. data/Lab2/Web/views/main.html +0 -233
  18. data/Lab2/data_storage/students1.txt +0 -1
  19. data/Lab2/data_storage/studentsRead.json +0 -36
  20. data/Lab2/data_storage/studentsRead.txt +0 -3
  21. data/Lab2/data_storage/studentsRead.yaml +0 -26
  22. data/Lab2/data_storage/studentsWrite.json +0 -42
  23. data/Lab2/data_storage/studentsWrite.txt +0 -4
  24. data/Lab2/data_storage/studentsWrite.yaml +0 -31
  25. data/Lab2/examples/Strategy.rb +0 -38
  26. data/Lab2/examples/adapter.rb +0 -30
  27. data/Lab2/examples/database.rb +0 -15
  28. data/Lab2/examples/observer_example.rb +0 -51
  29. data/Lab2/examples/pattern_pattern.rb +0 -44
  30. data/Lab2/examples/site_example.rb +0 -21
  31. data/Lab2/examples/views/about.erb +0 -11
  32. data/Lab2/examples/views/contact.erb +0 -15
  33. data/Lab2/examples/views/index.erb +0 -11
  34. data/Lab2/main.rb +0 -6
  35. data/Lab2/main_window.rb +0 -31
  36. data/Lab2/student_input_form.rb +0 -71
  37. data/Lab2/tab_students.rb +0 -157
  38. data/Lab2/test/student_test.rb +0 -91
  39. data/mvcStudentXD/Gemfile +0 -22
  40. data/mvcStudentXD/Gemfile.lock +0 -97
  41. data/mvcStudentXD/README.md +0 -35
  42. data/mvcStudentXD/bin/console +0 -11
  43. data/mvcStudentXD/bin/setup +0 -8
  44. data/mvcStudentXD/mvcStudentXD-1.2.0.gem +0 -0
  45. data/mvcStudentXD/mvcStudentXD.gemspec +0 -15
  46. data/mvcStudentXD/pkg/mvcStudentXD-0.1.0.gem +0 -0
  47. data/mvcStudentXD/pkg/mvcStudentXD-1.0.1.gem +0 -0
  48. data/mvcStudentXD/pkg/mvcStudentXD-1.1.1.gem +0 -0
  49. data/mvcStudentXD/test/student_test.rb +0 -91
  50. data/mvcStudentXD/test/test_helper.rb +0 -6
  51. data/mvcStudentXD/test/test_mvcStudentXD.rb +0 -13
  52. /data/{mvcStudentXD/CHANGELOG.md → CHANGELOG.md} +0 -0
  53. /data/{mvcStudentXD/CODE_OF_CONDUCT.md → CODE_OF_CONDUCT.md} +0 -0
  54. /data/{mvcStudentXD/Rakefile → Rakefile} +0 -0
  55. /data/{mvcStudentXD/lib → lib}/mvcStudentXD.rb +0 -0
  56. /data/{mvcStudentXD/lib → lib}/source/adapters/student_list_adapter.rb +0 -0
  57. /data/{mvcStudentXD/lib → lib}/source/containers/Data_list.rb +0 -0
  58. /data/{mvcStudentXD/lib → lib}/source/containers/Data_list_student_short.rb +0 -0
  59. /data/{mvcStudentXD/lib → lib}/source/containers/Data_table.rb +0 -0
  60. /data/{mvcStudentXD/lib → lib}/source/controllers/student_edit_form_controller.rb +0 -0
  61. /data/{mvcStudentXD/lib → lib}/source/controllers/student_input_form_controller.rb +0 -0
  62. /data/{mvcStudentXD/lib → lib}/source/controllers/student_list_controller.rb +0 -0
  63. /data/{mvcStudentXD/lib → lib}/source/converters/Converter.rb +0 -0
  64. /data/{mvcStudentXD/lib → lib}/source/converters/Converter_json.rb +0 -0
  65. /data/{mvcStudentXD/lib → lib}/source/converters/Converter_txt.rb +0 -0
  66. /data/{mvcStudentXD/lib → lib}/source/converters/Converter_yaml.rb +0 -0
  67. /data/{mvcStudentXD/lib → lib}/source/database/scripts/create_table.sql +0 -0
  68. /data/{mvcStudentXD/lib → lib}/source/database/scripts/insert_data.sql +0 -0
  69. /data/{mvcStudentXD/lib → lib}/source/database/student_list_db.rb +0 -0
  70. /data/{mvcStudentXD/lib → lib}/source/database/students_db.rb +0 -0
  71. /data/{mvcStudentXD/lib → lib}/source/model/Student.rb +0 -0
  72. /data/{mvcStudentXD/lib → lib}/source/model/StudentBase.rb +0 -0
  73. /data/{mvcStudentXD/lib → lib}/source/model/Student_short.rb +0 -0
  74. /data/{mvcStudentXD/lib → lib}/source/repositories/Student_list.rb +0 -0
  75. /data/{mvcStudentXD/lib → lib}/source/repositories/student_list_adv.rb +0 -0
  76. /data/{mvcStudentXD/lib → lib}/source/util/LoggerHolder.rb +0 -0
  77. /data/{mvcStudentXD/sig → sig}/mvcStudentXD.rbs +0 -0
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Printer
4
- def print(text)
5
- puts text
6
- end
7
- end
8
-
9
- class Display
10
- def display(text)
11
- puts text
12
- end
13
- end
14
-
15
- class DisplayAdapter
16
- def initialize(display)
17
- @display = display
18
- end
19
-
20
- def print(text)
21
- @display.display(text)
22
- end
23
- end
24
-
25
- printer = Printer.new
26
- display = Display.new
27
- adapter = DisplayAdapter.new(display)
28
-
29
- printer.print("Hello, world!") # выводит "Hello, world!"
30
- adapter.print("Hello, world!") # также выводит "Hello, world!"
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Database
4
- @@instance = nil
5
-
6
- def self.instance
7
- @@instance ||= Database.new
8
- end
9
-
10
- def execute
11
- print("Establishing connection...")
12
- end
13
-
14
- private_class_method :new
15
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Класс Наблюдаемый объект
4
- class Subject
5
- attr_reader :state, :observers
6
-
7
- def initialize(state)
8
- @state = state
9
- @observers = []
10
- end
11
-
12
- def add_observer(observer)
13
- observers << observer
14
- end
15
-
16
- def remove_observer(observer)
17
- observers.delete(observer)
18
- end
19
-
20
- def notify_observers
21
- observers.each do |observer|
22
- observer.update(self)
23
- end
24
- end
25
-
26
- def update_state(state)
27
- @state = state
28
- notify_observers
29
- end
30
- end
31
-
32
- # Класс Наблюдатель
33
- class Observer
34
- def update(subject)
35
- puts "Subject has updated state to: #{subject.state}"
36
- end
37
- end
38
-
39
- # Создаем объекты Наблюдаемый объект и Наблюдатель
40
- subject = Subject.new("initial state")
41
- observer = Observer.new
42
-
43
- # Добавляем наблюдателя к наблюдаемому объекту
44
- subject.add_observer(observer)
45
-
46
- # Обновляем состояние наблюдаемого объекта
47
- subject.update_state("new state")
48
-
49
- # Результат выполнения:
50
- # Subject has updated state to: new state
51
-
@@ -1,44 +0,0 @@
1
- class Pat
2
- attr_accessor :a, :b
3
-
4
- def initialize(a, b)
5
- self.a = a
6
- self.b = b
7
- end
8
-
9
- def sum_alg
10
- a+b
11
- end
12
-
13
- def mult_alg
14
- a*b
15
- end
16
-
17
- def minus_alg
18
- a-b
19
- end
20
-
21
- def alg
22
- sum_alg+mult_alg+minus_alg
23
- end
24
- end
25
-
26
- class PatInhetit1 < Pat
27
- def sum_alg
28
- a+b+2
29
- end
30
- end
31
-
32
- class PatInhetit2 < Pat
33
- def mult_alg
34
- a*b*3
35
- end
36
- end
37
-
38
- pat = Pat.new(4, 2)
39
- pat1 = PatInhetit1.new(4, 2)
40
- pat2 = PatInhetit2.new(4, 2)
41
-
42
- puts(pat.alg)
43
- puts(pat1.alg)
44
- puts(pat2.alg)
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'sinatra'
4
- require_relative '../main_window'
5
-
6
- get '/' do
7
- erb :index
8
- end
9
-
10
- get '/about' do
11
- erb :about
12
- end
13
-
14
- get '/contact' do
15
- erb :contact
16
- end
17
-
18
- get '/uni' do
19
- MainWindow.new.create.show
20
- end
21
-
@@ -1,11 +0,0 @@
1
- <!-- about.erb -->
2
- <!DOCTYPE html>
3
- <html>
4
- <head>
5
- <title>Привет! Это мой сайт-визитка</title>
6
- </head>
7
- <body>
8
- <h1>О нас</h1>
9
- <p>Компания ЕКота занимается всем, что может принести вред.</p>
10
- </body>
11
- </html>
@@ -1,15 +0,0 @@
1
- <!-- contact.erb -->
2
- <!DOCTYPE html>
3
- <html>
4
- <head>
5
- <title>Контакты</title>
6
- </head>
7
- <body>
8
- <h1>Связь с нами</h1>
9
- <p>Скорее всего, мы сами вас найдём, но если нет:</p>
10
- <ul>
11
- <li>Почта: info@mywebsite.com</li>
12
- <li>Мобильный: 123-456-7890</li>
13
- </ul>
14
- </body>
15
- </html>
@@ -1,11 +0,0 @@
1
- <!-- index.erb -->
2
- <!DOCTYPE html>
3
- <html>
4
- <head>
5
- <title>Домашняя страница</title>
6
- </head>
7
- <body>
8
- <h1>Добро пожаловать в обитель зла</h1>
9
- <p>Я сейчас смотрю Твин Пикс</p>
10
- </body>
11
- </html>
data/Lab2/main.rb DELETED
@@ -1,6 +0,0 @@
1
- require 'mysql2'
2
- require 'mvcStudentXD'
3
- require_relative 'main_window'
4
-
5
- MainWindow.new.create.show
6
- LoggerHolder.instance.level = Logger::DEBUG
data/Lab2/main_window.rb DELETED
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'mvcStudentXD'
4
- require 'sinatra'
5
- require 'thin'
6
- require 'glimmer-dsl-libui'
7
- require_relative 'tab_students'
8
-
9
- class MainWindow
10
- include Glimmer
11
-
12
- def initialize
13
- @view_tab_students = TabStudents.new
14
- end
15
-
16
- def create
17
- window('Универ', 600, 300) {
18
- tab {
19
- tab_item('Студенты') {
20
- @view_tab_students.create
21
- }
22
-
23
- tab_item('Вкладка 2') { }
24
- tab_item('Вкладка 3') { }
25
- }
26
- }
27
- end
28
- end
29
-
30
- main_window = MainWindow.new.create
31
- main_window.show
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'glimmer-dsl-libui'
4
- require_relative '../mvcStudentXD/lib/student_input_form_controller'
5
- require_relative 'model/StudentBase'
6
- require 'win32api'
7
-
8
- class StudentInputForm
9
- include Glimmer
10
-
11
- def initialize(controller,existing_student = nil)
12
- @existing_student = existing_student.to_hash unless existing_student.nil?
13
- @controller = controller
14
- @entries = {}
15
- end
16
-
17
- def on_create
18
- @controller.on_view_created
19
- end
20
-
21
- def create
22
- @root_container = window('Универ', 300, 150) {
23
- resizable false
24
-
25
- vertical_box {
26
- @student_form = form {
27
- stretchy false
28
-
29
- fields = [[:last_name, 'Фамилия', false], [:first_name, 'Имя', false], [:parental_name, 'Отчество', false], [:git, 'Гит', true], [:telegram, 'Телеграм', true], [:email, 'Почта', true], [:phone, 'Телефон', true]]
30
-
31
- fields.each do |field|
32
- @entries[field[0]] = entry {
33
- label field[1]
34
- text @existing_student[field[0]] unless @existing_student.nil?
35
-
36
- read_only field[2] unless @existing_student.nil?
37
- }
38
- end
39
- }
40
-
41
- button('Сохранить') {
42
- stretchy false
43
-
44
- on_clicked {
45
- values = @entries.transform_values { |v| v.text.force_encoding("utf-8").strip }
46
- values.transform_values! { |v| v.empty? ? nil : v}
47
- @controller.process_fields(values)
48
- @controller.refresh
49
- }
50
- }
51
- }
52
- }
53
- on_create
54
- @root_container
55
- end
56
-
57
- def set_value(field, value)
58
- return unless @entries.include?(field)
59
- @entries[field].text = value
60
- end
61
-
62
- def make_readonly(*fields)
63
- fields.each do |field|
64
- @entries[field].read_only = true
65
- end
66
- end
67
-
68
- def close
69
- @root_container.destroy
70
- end
71
- end
data/Lab2/tab_students.rb DELETED
@@ -1,157 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # frozen_string_literal: true
4
- require 'glimmer-dsl-libui'
5
- require_relative '../mvcStudentXD/lib/student_list_controller'
6
- require_relative '../mvcStudentXD/lib/b'
7
-
8
- class TabStudents
9
- include Glimmer
10
- STUDENTS_PER_PAGE = 20
11
-
12
- def initialize
13
- @controller = StudentListController.new(self)
14
- @current_page = 1
15
- @total_count = 0
16
- end
17
-
18
- def on_create
19
- @controller.on_view_created
20
- @controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
21
- end
22
-
23
- # Метод наблюдателя datalist
24
- def on_datalist_changed(new_table)
25
- arr = new_table.to_2d_array
26
- @table.model_array = arr
27
- end
28
-
29
- def update_student_count(new_cnt)
30
- @total_count = new_cnt
31
- @page_label.text = "#{@current_page} / #{(@total_count / STUDENTS_PER_PAGE.to_f).ceil}"
32
- end
33
-
34
- def create
35
- root = horizontal_box {
36
- # Секция 1
37
- vertical_box {
38
- stretchy false
39
-
40
- form {
41
- stretchy false
42
-
43
- @filter_last_name_initials = entry {
44
- label 'ФИО'
45
- }
46
-
47
- @filters = {}
48
- fields = [[:git, 'Github'], [:email, 'Почта'], [:phone, 'Телефон'], [:telegram, 'Телеграм']]
49
-
50
- fields.each do |field|
51
- @filters[field[0]] = {}
52
-
53
- @filters[field[0]][:combobox] = combobox {
54
- label "#{field[1]}?"
55
- items ['Не важно', 'Есть', 'Нет']
56
- selected 0
57
-
58
- on_selected do
59
- if @filters[field[0]][:combobox].selected == 1
60
- @filters[field[0]][:entry].read_only = false
61
- else
62
- @filters[field[0]][:entry].text = ''
63
- @filters[field[0]][:entry].read_only = true
64
- end
65
- end
66
- }
67
-
68
- @filters[field[0]][:entry] = entry {
69
- label field[1]
70
- read_only true
71
- }
72
- end
73
- }
74
- }
75
-
76
- # Секция 2
77
- vertical_box {
78
- @table = refined_table(
79
- table_editable: false,
80
- filter: lambda do |row_hash, query|
81
- utf8_query = query.force_encoding("utf-8")
82
- row_hash['Фамилия И. О'].include?(utf8_query)
83
- end,
84
- table_columns: {
85
- '#' => :text,
86
- 'Фамилия И. О' => :text,
87
- 'Гит' => :text,
88
- 'Контакт' => :text,
89
- },
90
- per_page: STUDENTS_PER_PAGE
91
- )
92
-
93
- @pages = horizontal_box {
94
- stretchy false
95
-
96
- button("<") { stretchy true }
97
- button("<") {
98
- stretchy true
99
-
100
- on_clicked do
101
- @current_page = [@current_page - 1, 1].max
102
- @controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
103
- end
104
-
105
- }
106
- @page_label = label("...") { stretchy false }
107
- button(">") { stretchy true }
108
- button(">") {
109
- stretchy true
110
-
111
- on_clicked do
112
- @current_page = [@current_page + 1, (@total_count / STUDENTS_PER_PAGE.to_f).ceil].min
113
- @controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
114
- end
115
- }
116
- }
117
- }
118
-
119
- # Секция 3
120
- vertical_box {
121
- stretchy true
122
-
123
- button('Добавить') {
124
- stretchy false
125
-
126
- on_clicked {
127
- @controller.show_modal_add()
128
- }
129
- }
130
- button('Изменить') {
131
- stretchy false
132
-
133
- on_clicked {
134
- @controller.show_modal_edit(@current_page, STUDENTS_PER_PAGE, @table.selection) unless @table.selection.nil?
135
- }
136
- }
137
- button('Удалить') {
138
- stretchy false
139
-
140
- on_clicked {
141
- @controller.delete_selected(@current_page, STUDENTS_PER_PAGE, @table.selection) unless @table.selection.nil?
142
- @controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
143
- }
144
- }
145
- button('Обновить') {
146
- stretchy false
147
- on_clicked{
148
- @controller.refresh_data(@current_page, STUDENTS_PER_PAGE)
149
- }
150
- }
151
- }
152
- }
153
- on_create
154
- root
155
- end
156
-
157
- end
@@ -1,91 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'minitest/autorun'
3
- require 'json'
4
- require_relative '../../mvcStudentXD/lib/model/Student'
5
-
6
- class StudentTest < Minitest::Test
7
- def setup
8
- @student = Student.new(
9
- 'Лукашев',
10
- 'Алексей',
11
- 'Андреевич',
12
- id: 10,
13
- phone: '89099997499',
14
- telegram: '@lehadrilla',
15
- email: 'leha@gmail.com',
16
- git: '@netuOnNeftyanik'
17
- )
18
- end
19
-
20
- def teardown
21
- # Do nothing
22
- end
23
-
24
- def test_student_init_all_params_correct
25
- assert @student.last_name == 'Лукашев'
26
- assert @student.first_name == 'Алексей'
27
- assert @student.parental_name == 'Андреевич'
28
- assert @student.id == 10
29
- assert @student.phone == '89099997499'
30
- assert @student.telegram == '@lehadrilla'
31
- assert @student.email == 'leha@gmail.com'
32
- assert @student.git == '@netuOnNeftyanik'
33
- end
34
-
35
- def test_student_empty_options
36
- Student.new('Сергеев', 'Сергей', 'Сергеевич')
37
- end
38
-
39
- def test_student_short_contact
40
- short_contact = @student.get_short_contact
41
-
42
-
43
- assert short_contact[:type] == :telegram
44
- assert short_contact[:val] == '@lehadrilla'
45
- end
46
-
47
- def test_student_has_contacts
48
- assert @student.valid_cont? == true
49
- end
50
-
51
- def test_student_set_contacts
52
- stud = Student.new('Орфов', 'Орф', 'Орфович')
53
- stud.set_contacts(phone: '89097768999', telegram: '@kasha', email: 'kasha@gmail.com')
54
-
55
- assert stud.phone == '89097768999'
56
- assert stud.telegram == '@kasha'
57
- assert stud.email == 'kasha@gmail.com'
58
- end
59
-
60
- def test_student_get_short_fio
61
- assert @student.get_short_fio == 'fio:Лукашев А. А.'
62
- end
63
-
64
-
65
- def test_student_from_and_to_hash
66
- test_hash = {
67
- last_name: 'Жанов',
68
- first_name: 'Жан',
69
- parental_name: 'Жанович',
70
- id: 5,
71
- phone: '87776665544',
72
- telegram: '@abv',
73
- email: 'abv@mail.ru',
74
- git: '@abvG'
75
- }
76
-
77
-
78
- stud = Student.from_hash(test_hash)
79
-
80
- assert stud.last_name == 'Жанов'
81
- assert stud.first_name == 'Жан'
82
- assert stud.parental_name == 'Жанович'
83
- assert stud.id == 5
84
- assert stud.phone == '87776665544'
85
- assert stud.telegram == '@abv'
86
- assert stud.email == 'abv@mail.ru'
87
- assert stud.git == '@abvG'
88
-
89
- assert stud.to_hash == test_hash
90
- end
91
- end
data/mvcStudentXD/Gemfile DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- # Specify your gem's dependencies in mvcStudentXD.gemspec
6
- gemspec
7
-
8
- gem "rake", "~> 13.0"
9
-
10
- gem "minitest", "~> 5.0"
11
-
12
- gem "rubocop", "~> 1.21"
13
-
14
- gem "mysql2"
15
-
16
- gem "glimmer-dsl-libui", '~> 0.7.4'
17
-
18
- gem 'win32api'
19
-
20
- gem 'sinatra', '~> 3.0', '>= 3.0.6'
21
-
22
- gem 'thin', '~> 1.8', '>= 1.8.2'
@@ -1,97 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mvcStudentXD (1.1.2)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- array_include_methods (1.4.0)
10
- ast (2.4.2)
11
- chunky_png (1.4.0)
12
- color (1.8)
13
- daemons (1.4.1)
14
- equalizer (0.0.11)
15
- eventmachine (1.2.7)
16
- facets (3.1.0)
17
- glimmer (2.7.3)
18
- array_include_methods (~> 1.4.0)
19
- facets (>= 3.1.0, < 4.0.0)
20
- glimmer-dsl-libui (0.7.5)
21
- chunky_png (~> 1.4.0)
22
- color (~> 1.8)
23
- equalizer (= 0.0.11)
24
- glimmer (~> 2.7.3)
25
- libui (~> 0.1.2.pre)
26
- os (>= 1.0.0, < 2.0.0)
27
- perfect-shape (~> 1.0.7)
28
- rouge (>= 3.26.0, < 4.0.0)
29
- super_module (~> 1.4.1)
30
- json (2.6.3)
31
- libui (0.1.2.pre-x64-mingw)
32
- matrix (0.4.2)
33
- method_source (1.0.0)
34
- minitest (5.18.0)
35
- mustermann (3.0.0)
36
- ruby2_keywords (~> 0.0.1)
37
- mysql2 (0.5.5)
38
- os (1.1.4)
39
- parallel (1.23.0)
40
- parser (3.2.2.1)
41
- ast (~> 2.4.1)
42
- perfect-shape (1.0.7)
43
- equalizer (>= 0.0.11, < 1.1.0)
44
- matrix (>= 0.4.2, < 1.1.0)
45
- rack (2.2.7)
46
- rack-protection (3.0.6)
47
- rack
48
- rainbow (3.1.1)
49
- rake (13.0.6)
50
- regexp_parser (2.8.0)
51
- rexml (3.2.5)
52
- rouge (3.30.0)
53
- rubocop (1.50.2)
54
- json (~> 2.3)
55
- parallel (~> 1.10)
56
- parser (>= 3.2.0.0)
57
- rainbow (>= 2.2.2, < 4.0)
58
- regexp_parser (>= 1.8, < 3.0)
59
- rexml (>= 3.2.5, < 4.0)
60
- rubocop-ast (>= 1.28.0, < 2.0)
61
- ruby-progressbar (~> 1.7)
62
- unicode-display_width (>= 2.4.0, < 3.0)
63
- rubocop-ast (1.28.1)
64
- parser (>= 3.2.1.0)
65
- ruby-progressbar (1.13.0)
66
- ruby2_keywords (0.0.5)
67
- sinatra (3.0.6)
68
- mustermann (~> 3.0)
69
- rack (~> 2.2, >= 2.2.4)
70
- rack-protection (= 3.0.6)
71
- tilt (~> 2.0)
72
- super_module (1.4.1)
73
- method_source (>= 0.8.2, < 1.1.0)
74
- thin (1.8.2)
75
- daemons (~> 1.0, >= 1.0.9)
76
- eventmachine (~> 1.0, >= 1.0.4)
77
- rack (>= 1, < 3)
78
- tilt (2.1.0)
79
- unicode-display_width (2.4.2)
80
- win32api (0.1.0)
81
-
82
- PLATFORMS
83
- x64-mingw-ucrt
84
-
85
- DEPENDENCIES
86
- glimmer-dsl-libui (~> 0.7.4)
87
- minitest (~> 5.0)
88
- mvcStudentXD!
89
- mysql2
90
- rake (~> 13.0)
91
- rubocop (~> 1.21)
92
- sinatra (~> 3.0, >= 3.0.6)
93
- thin (~> 1.8, >= 1.8.2)
94
- win32api
95
-
96
- BUNDLED WITH
97
- 2.4.12