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
data/Lab2/Web/main.rb DELETED
@@ -1,89 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'sinatra'
4
- require 'mvcStudentXD'
5
-
6
- set :port, 8000
7
-
8
- puts MvcStudentXD.constants
9
-
10
- students_model = MvcStudentXD::StudentListAdv.new(
11
- MvcStudentXD::StudentsListDBAdapter.new(
12
- MvcStudentXD::StudentListDB.instance))
13
-
14
- main_controller = StudentListController.new(students_model)
15
- main_controller.on_view_created = lambda { }
16
- main_controller.on_add_student_clicked = lambda { }
17
- main_controller.on_edit_student_clicked = lambda { |id| }
18
-
19
- main_controller.selected_page = 0
20
-
21
- editing_id = nil
22
-
23
- get "/" do
24
- send_file 'web/main.html'
25
- end
26
-
27
- post "/students" do
28
- main_controller.refresh_data()
29
- result = main_controller.data_list.map { |student|
30
- student.as_json
31
- }
32
-
33
- result.to_json
34
- end
35
-
36
- post "/next_page" do
37
- main_controller.next_page()
38
- main_controller.refresh_data()
39
- end
40
-
41
- post "/last_page" do
42
- main_controller.last_page()
43
- main_controller.update_table()
44
- end
45
-
46
- get "/get_page" do
47
- (main_controller.selected_page + 1).to_s
48
- end
49
-
50
- get "/get_pages_count" do
51
- main_controller.pages_count.to_s
52
- end
53
-
54
- post "/set_editing_id:id" do
55
- puts params[:id]
56
- editing_id = params[:id]
57
- end
58
-
59
- get "/get_editing_id" do
60
- editing_id.to_s
61
- end
62
-
63
- post "/delete:id" do
64
- main_controller.remove_student(params[:id])
65
- end
66
-
67
- post "/editing:id" do
68
- student = main_controller.get_student(params[:id])
69
- [student.as_json].to_json
70
- end
71
-
72
- get "/add" do
73
- if editing_id == 'null'
74
- main_controller.show_modal_add
75
- else
76
- main_controller.show_modal_edit(editing_id)
77
- end
78
- send_file 'web/add.html'
79
- end
80
-
81
- get "/edit:student" do
82
- student = Student.from_json(JSON.parse(params[:student]))
83
- main_controller.replace_student(student.id, student)
84
- end
85
-
86
- get "/insert:student" do
87
- student = Student.from_json(JSON.parse(params[:student]))
88
- main_controller.add_student(student)
89
- end
@@ -1,168 +0,0 @@
1
- <html>
2
- <style>
3
- .text {
4
- font-size: 20px;
5
- font-weight: bold;
6
- color: #000000;
7
- }
8
-
9
- .txbox {
10
- font-size: 16px;
11
- padding: 7px;
12
- border: 1px solid #050505;
13
- }
14
-
15
- .bt {
16
- font-size: 15px;
17
- padding: 5px 10px;
18
- background-color: #5117d6;
19
- color: #fff;
20
- border: none;
21
- border-radius: 5px;
22
- cursor: pointer;
23
- margin: 16px;
24
- }
25
-
26
- .bt:hover {
27
- background-color: #22b91d;
28
- }
29
- </style>
30
-
31
- <body style="display: flex; flex-direction: column; width: 256px;">
32
- <label class="text" for="user_name">Фамилия</label>
33
- <input class ="txbox" type="text" id="lastname">
34
-
35
- <label class="text" for="user_name">Имя</label>
36
- <input class ="txbox" type="text" id="firstname">
37
-
38
- <label class="text" for="user_name">Отчество</label>
39
- <input class ="txbox" type="text" id="parental_name">
40
-
41
- <label class="text" for="user_name">GitHub</label>
42
- <input class ="txbox" type="text" id="git">
43
-
44
- <label class="text" for="user_name">Телефон</label>
45
- <input class ="txbox" type="text" id="phone">
46
-
47
- <label class="text" for="user_name">Почта</label>
48
- <input class ="txbox" type="text" id="email">
49
-
50
- <label class="text" for="user_name">Телеграм</label>
51
- <input class ="txbox" type="text" id="telegram">
52
-
53
- <button class ="bt" onclick="check_button()">Готово</button>
54
- </body>
55
-
56
- <script>
57
- let is_edit_mode = false
58
- let id = null
59
-
60
- function check_button() {
61
- if (document.getElementById('firstname').value === "") {
62
- alert("Имя не введено")
63
- return
64
- }
65
-
66
- if (document.getElementById('lastname').value === "") {
67
- alert("Фамилия не введена")
68
- return
69
- }
70
-
71
- if (document.getElementById('parental_name').value === "") {
72
- alert("Отчество не введено")
73
- return
74
- }
75
-
76
- if (document.getElementById('git').value !== "" && document.getElementById('git').value.match(/@\w*/) == null) {
77
- alert("Неверно введен GitHub")
78
- return
79
- }
80
-
81
- if (document.getElementById('email').value !== "" && document.getElementById('email').value.match(/\w*@\w*.\w{2,3}/) == null) {
82
- alert("Неверно введена почта")
83
- return
84
- }
85
-
86
- if (document.getElementById('phone').value !== "" && document.getElementById('phone').value.match(/\d-\d{3}-\d{3}-\d{2}-\d{2}/) == null) {
87
- alert("Неверно введен номер телефона")
88
- return
89
- }
90
-
91
- if (document.getElementById('telegram').value !== "" && document.getElementById('telegram').value.match(/@\w*/) == null) {
92
- alert("Неверно введена телеграм")
93
- return
94
- }
95
-
96
- if (document.getElementById('git').value === "" && document.getElementById('phone').value == "" && document.getElementById('email').value == "" && document.getElementById('telegram').value == "") {
97
- alert("Отсутствует контакт")
98
- return
99
- }
100
-
101
- add_student()
102
- }
103
-
104
- function get_editing_student() {
105
- var http = new XMLHttpRequest();
106
- http.open('GET', 'get_editing_id', false);
107
- http.send()
108
-
109
- id = http.responseText
110
-
111
-
112
- if (id !== "null") {
113
- is_edit_mode = true
114
-
115
- http.open('POST', 'editing' + id, false);
116
- http.send()
117
-
118
- let student = JSON.parse(http.responseText)
119
-
120
- document.getElementById('firstname').value = student[0]["firstname"]
121
- document.getElementById('lastname').value = student[0]["lastname"]
122
- document.getElementById('parental_name').value = student[0]["parental_name"]
123
- document.getElementById('git').value = student[0]["git"]
124
- document.getElementById('email').value = student[0]["email"]
125
- document.getElementById('phone').value = student[0]["phone"]
126
- document.getElementById('telegram').value = student[0]["telegram"]
127
- }
128
- }
129
-
130
- function add_student() {
131
- let json = {
132
- "firstname": document.getElementById('firstname').value,
133
- "lastname": document.getElementById('lastname').value,
134
- "parental_name": document.getElementById('parental_name').value
135
- }
136
-
137
- if (id != null) {
138
- json['id'] = id
139
- }
140
- if (document.getElementById('git').value !== "") {
141
- json['git'] = document.getElementById('git').value
142
- }
143
- if (document.getElementById('email').value !== "") {
144
- json['email'] = document.getElementById('email').value
145
- }
146
- if (document.getElementById('phone').value !== "") {
147
- json['phone'] = document.getElementById('phone').value
148
- }
149
- if (document.getElementById('telegram').value !== "") {
150
- json['telegram'] = document.getElementById('telegram').value
151
- }
152
-
153
- var http = new XMLHttpRequest();
154
-
155
- if (is_edit_mode) {
156
- http.open('GET', "edit" + JSON.stringify(json), false);
157
- http.send()
158
- } else {
159
- http.open('GET', "insert" + JSON.stringify(json), false);
160
- http.send()
161
- }
162
-
163
- window.location.replace("/");
164
- }
165
-
166
- get_editing_student()
167
- </script>
168
- </html>
@@ -1,233 +0,0 @@
1
- <html>
2
- <head>
3
- <style>
4
- table.tbl td {
5
- border: 1px solid black;
6
- padding: 5px;
7
- margin: 0px;
8
- min-width: 100px;
9
- height: 32px;
10
- }
11
-
12
- table.tbl tr {
13
- padding: 5px;
14
- margin: 5px;
15
- }
16
-
17
- .tbl {
18
- overflow-x: scroll;
19
- display:block;
20
- }
21
- .bt {
22
- font-size: 15px;
23
- padding: 5px 10px;
24
- background-color: #5117d6;
25
- color: #fff;
26
- border: none;
27
- border-radius: 5px;
28
- cursor: pointer;
29
- margin: 10px;
30
- }
31
-
32
- .bt:hover {
33
- background-color: #22b91d;
34
- }
35
- </style>
36
- </head>
37
- <body style="margin: 0px;">
38
- <div style="position: relative; height: 100%;">
39
- <div style="display: flex; justify-content: flex-start; width: 100%;">
40
-
41
- <div>
42
- <div style="display: flex; margin: 16px; position: relative;">
43
- <div style="width: 256px">
44
-
45
- </div>
46
- <div style="display: flex; width: 100%; text-align:center;margin-bottom: 20px;">
47
- <button class = "bt" onclick="last_page()">Назад</button>
48
- <div id="page_counter" style="text-align: center; width: 350px">
49
- 1 из 5
50
- </div>
51
- <button class = "bt" onclick="next_page()">Вперед</button>
52
- </div>
53
-
54
- <div style="width: 256px">
55
-
56
- </div>
57
- </div>
58
- <div style="display: flex; text-align:center;">
59
- <div style="width: 20px; margin: auto;">
60
-
61
- </div>
62
-
63
- <div style="width: 1px; background-color: black; margin: auto;"></div>
64
-
65
- <table class="tbl" style="margin: 0px; margin: auto;">
66
- <thead style="margin: 0px; padding: 0px;">
67
- <tr style="margin: 0px; padding: 0px;">
68
- <td>ID</td>
69
- <td>Фамилия</td>
70
- <td>Имя</td>
71
- <td>Отчество</td>
72
- <td>GitHub</td>
73
- <td>Телефон</td>
74
- <td>Почта</td>
75
- <td>Телеграм</td>
76
- </td>
77
- </tr>
78
- </thead>
79
- <tbody id="table_body">
80
-
81
- </tbody>
82
- </table>
83
- <div style="width: 1px; background-color: black; margin: auto;"></div>
84
-
85
- <div style="width: 256px; margin: auto; display: flex; flex-direction: column; margin: 8px;">
86
- <button class = "bt" id="add" onclick="add_student()" >Добавить</button>
87
- <button class = "bt" id="edit" onclick="edit_student()" >Изменить</button>
88
- <button class = "bt" id="delete" onclick="delete_student()" >Удалить</button>
89
- <button class = "bt" id="update" >Обновить</button>
90
- </div>
91
- </div>
92
- </div>
93
- </div>
94
- </div>
95
- <script>
96
- let table = document.getElementById('table_body')
97
-
98
- let selected_item = null
99
-
100
- let add = document.getElementById('add')
101
- let del = document.getElementById('delete')
102
- let update = document.getElementById('update')
103
- let edit = document.getElementById('edit')
104
-
105
- function add_student() {
106
- var http = new XMLHttpRequest();
107
-
108
- http.open('POST', 'set_editing_idnull', false);
109
- http.send();
110
- window.location.href = '/add'
111
- }
112
-
113
- function edit_student() {
114
- let id = document.getElementById('row_' + selected_item.toString() + "_column_0").textContent
115
- var http = new XMLHttpRequest();
116
-
117
- http.open('POST', 'set_editing_id' + id, false);
118
- http.send();
119
-
120
- window.location.href = '/add'
121
- }
122
-
123
- function generate_table_body() {
124
- for(i = 0; i < 10; i++) {
125
- let row = document.createElement('tr')
126
- if (i === selected_item) {
127
- row.style.backgroundColor = 'Red'
128
- }
129
- row.id = "row_" + i.toString()
130
- row.onclick = (((x) => {
131
- return () => {
132
- let column = document.getElementById('row_' + x.toString() + "_column_1")
133
- if (column.textContent !== "") {
134
- selected_item = x
135
- update_request()
136
- } else {
137
- selected_item = null
138
- update_request()
139
- }
140
-
141
- }
142
- }))(i)
143
-
144
- for(j = 0; j < 8; j++) {
145
- let column = document.createElement('td')
146
- column.id = "row_" + i.toString() + "_column_" + j.toString()
147
- row.appendChild(column)
148
- }
149
- table.appendChild(row)
150
- }
151
- }
152
-
153
- function clear_table() {
154
- table.innerHTML = ''
155
- generate_table_body()
156
- }
157
-
158
- function delete_student() {
159
- let column = document.getElementById('row_' + selected_item.toString() + "_column_0")
160
-
161
- var http = new XMLHttpRequest();
162
- http.open('POST', 'delete' + column.textContent, false);
163
- http.send()
164
-
165
- update_request()
166
- }
167
-
168
- function update_table(students) {
169
- clear_table()
170
- for(i = 0; i < students.length; i++) {
171
- let attributes = [
172
- students[i]['lastname'],
173
- students[i]['firstname'],
174
- students[i]['parental_name'],
175
- students[i]['id'],
176
- students[i]['git'],
177
- students[i]['phone'],
178
- students[i]['email'],
179
- students[i]['telegram']
180
- ]
181
-
182
- for(j = 0; j < 8; j++) {
183
- let column = document.getElementById('row_' + i.toString() + '_column_' + j.toString())
184
- column.textContent = attributes[j]
185
- }
186
- }
187
-
188
- if (selected_item != null) {
189
- del.disabled = false
190
- edit.disabled = false
191
- } else {
192
- del.disabled = true
193
- edit.disabled = true
194
- }
195
- }
196
-
197
- function next_page() {
198
- var http = new XMLHttpRequest();
199
- http.open('POST', 'next_page', false);
200
- http.send()
201
- update_request()
202
- }
203
-
204
- function last_page() {
205
- var http = new XMLHttpRequest();
206
- http.open('POST', 'last_page', false);
207
- http.send()
208
- update_request()
209
- }
210
-
211
- function update_request() {
212
- var http = new XMLHttpRequest();
213
- http.open('POST', 'students', false);
214
- http.send()
215
- let json = JSON.parse(http.responseText)
216
- update_table(json)
217
-
218
- var http = new XMLHttpRequest();
219
- http.open('GET', 'get_page', false);
220
- http.send()
221
-
222
- var http2 = new XMLHttpRequest();
223
- http2.open('GET', 'get_pages_count', false);
224
- http2.send()
225
-
226
- document.getElementById('page_counter').textContent = 'Страница ' + http.responseText + ' из ' + http2.responseText
227
- }
228
-
229
- generate_table_body()
230
- update_request()
231
- </script>
232
- </body>
233
- </html>
@@ -1 +0,0 @@
1
- fio:Иванченко И. И.,email:iii@mail.ru,git:@fusfio:Сергеева С. С.,phone:89054037777,git:@rofio:Бирюков Б. Б.,telegram:@bbb,git:@duh
@@ -1,36 +0,0 @@
1
- [
2
- {
3
- "last_name": "Иванченко",
4
- "first_name": "Иван",
5
- "parental_name": "Иванович",
6
- "id": 1,
7
- "email": "iii@mail.ru",
8
- "git": "@fus"
9
- },
10
- {
11
- "last_name": "Сергеева",
12
- "first_name": "Станислава",
13
- "parental_name": "Серова",
14
- "id": 2,
15
- "phone": "89054037777",
16
- "git": "@ro"
17
- },
18
- {
19
- "last_name": "Бирюков",
20
- "first_name": "Бернард",
21
- "parental_name": "Белов",
22
- "id": 3,
23
- "telegram": "@bbb",
24
- "git": "@duh"
25
- },
26
- {
27
- "last_name": "Иванов",
28
- "first_name": "Иван",
29
- "parental_name": "Иванович",
30
- "id": 4,
31
- "phone": "+79051111111",
32
- "telegram": "@7",
33
- "email":"s0163526@edu.kubsu.ru",
34
- "git": "@6"
35
- }
36
- ]
@@ -1,3 +0,0 @@
1
- last_name:Иванченко,first_name:Иван,parental_name:Иванович,id:1,email:iii@mail.ru,git:@fus
2
- last_name:Сергеева,first_name:Станислава,parental_name:Серова,id:2,phone:89054037777,git:@ro
3
- last_name:Бирюков,first_name:Бернард,parental_name:Белов,id:3,telegram:@bbb,git:@duh
@@ -1,26 +0,0 @@
1
- - last_name: "Иванченко"
2
- first_name: "Иван"
3
- parental_name: "Иванович"
4
- id: 1
5
- email: "iii@mail.ru"
6
- git: "@fus"
7
- - last_name: "Сергеева"
8
- first_name: "Станислава"
9
- parental_name: "Серова"
10
- id: 2
11
- phone: "89054037777"
12
- git: "@ro"
13
- - last_name: "Бирюков"
14
- first_name: "Бернард"
15
- parental_name: "Белов"
16
- id: 3
17
- telegram: "@bbb"
18
- git: "@duh"
19
- - last_name: "Иванов"
20
- first_name: "Иван"
21
- parental_name: "Иванович"
22
- id: 4
23
- phone: "+79051111111"
24
- telegram: "@7"
25
- email: "s0163526@edu.kubsu.ru"
26
- git: "@6"
@@ -1,42 +0,0 @@
1
- [
2
- {
3
- "last_name": "Иванченко",
4
- "first_name": "Иван",
5
- "parental_name": "Иванович",
6
- "id": 1,
7
- "git": "@fus",
8
- "email": "iii@mail.ru"
9
- },
10
- {
11
- "last_name": "Сергеева",
12
- "first_name": "Станислава",
13
- "parental_name": "Серова",
14
- "id": 2,
15
- "phone": "89054037777",
16
- "git": "@ro"
17
- },
18
- {
19
- "last_name": "Бирюков",
20
- "first_name": "Бернард",
21
- "parental_name": "Белов",
22
- "id": 3,
23
- "git": "@duh",
24
- "telegram": "@bbb"
25
- },
26
- {
27
- "last_name": "Иванов",
28
- "first_name": "Иван",
29
- "parental_name": "Иванович",
30
- "id": 4,
31
- "phone": "+79051111111",
32
- "git": "@6",
33
- "telegram": "@7",
34
- "email": "s0163526@edu.kubsu.ru"
35
- },
36
- {
37
- "last_name": "Дорогов",
38
- "first_name": "Дмитрий",
39
- "parental_name": "Далдалович",
40
- "id": 5
41
- }
42
- ]
@@ -1,4 +0,0 @@
1
- last_name:Иванченко,first_name:Иван,parental_name:Иванович,id:1,git:@fus,email:iii@mail.ru
2
- last_name:Сергеева,first_name:Станислава,parental_name:Серова,id:2,phone:89054037777,git:@ro
3
- last_name:Бирюков,first_name:Бернард,parental_name:Белов,id:3,git:@duh,telegram:@bbb
4
- last_name:Голубев,first_name:Глеб,parental_name:Газманович,id:4
@@ -1,31 +0,0 @@
1
- ---
2
- - last_name: Иванченко
3
- first_name: Иван
4
- parental_name: Иванович
5
- id: 1
6
- git: "@fus"
7
- email: iii@mail.ru
8
- - last_name: Сергеева
9
- first_name: Станислава
10
- parental_name: Серова
11
- id: 2
12
- phone: '89054037777'
13
- git: "@ro"
14
- - last_name: Бирюков
15
- first_name: Бернард
16
- parental_name: Белов
17
- id: 3
18
- git: "@duh"
19
- telegram: "@bbb"
20
- - last_name: Иванов
21
- first_name: Иван
22
- parental_name: Иванович
23
- id: 4
24
- phone: "+79051111111"
25
- git: "@6"
26
- telegram: "@7"
27
- email: s0163526@edu.kubsu.ru
28
- - last_name: Голубев
29
- first_name: Глеб
30
- parental_name: Газманович
31
- id: 5
@@ -1,38 +0,0 @@
1
- class Strategy
2
- def execute
3
- raise NotImplementedError, 'Определён в наследниках'
4
- end
5
- end
6
-
7
- class Strategy1 < Strategy
8
- def execute
9
- puts 'Doing Strategy1...'
10
- end
11
- end
12
-
13
- class Strategy2 < Strategy
14
- def execute
15
- puts 'Doing Strategy2...'
16
- end
17
- end
18
-
19
- class Context
20
- attr_accessor :strategy
21
-
22
- def initialize(strategy)
23
- self.strategy=strategy
24
- end
25
-
26
- def execute_strategy
27
- strategy.execute
28
- end
29
-
30
- end
31
-
32
- strategy1 = Strategy1.new
33
- context = Context.new(strategy1)
34
- context.execute_strategy
35
-
36
- strategy2 = Strategy2.new
37
- context.strategy = strategy2
38
- context.execute_strategy