mvcStudentXD 1.2.1 → 1.2.2

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