From 0347b691989fd936d39aece2de30b0393b1f3aec Mon Sep 17 00:00:00 2001 From: Artem Darius Weber Date: Thu, 23 Jan 2025 07:54:13 +0300 Subject: [PATCH] feat: implement DataListStudentShort class for student data representation --- lab2/data_list_student_short.rb | 21 +++++++++++++++++++++ lab2/test_data_list_student_short.rb | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 lab2/data_list_student_short.rb create mode 100644 lab2/test_data_list_student_short.rb diff --git a/lab2/data_list_student_short.rb b/lab2/data_list_student_short.rb new file mode 100644 index 0000000..4e39671 --- /dev/null +++ b/lab2/data_list_student_short.rb @@ -0,0 +1,21 @@ +require_relative 'data_table' + +class DataListStudentShort < DataList + def get_names + ['№', 'Фамилия и инициалы', 'Телефон', 'Telegram', 'Email'] + end + + def get_data + data = @items.each_with_index.map do |student, index| + [ + index + 1, # id + student.surname_initials, # Фамилия и инициалы + student.phone || '-', # Телефон (или прочерк) + student.telegram || '-', # Telegram (или прочерк) + student.email || '-' # Email (или прочерк) + ] + end + + DataTable.new(data) + end +end \ No newline at end of file diff --git a/lab2/test_data_list_student_short.rb b/lab2/test_data_list_student_short.rb new file mode 100644 index 0000000..6c5923c --- /dev/null +++ b/lab2/test_data_list_student_short.rb @@ -0,0 +1,18 @@ +require_relative 'student_short' +require_relative 'data_list_student_short' + +students = [ + StudentShort.new(id: '1', surname_initials: 'Иванов И.И.', phone: '+79991112233'), + StudentShort.new(id: '2', surname_initials: 'Петров П.П.', telegram: '@petrov'), + StudentShort.new(id: '3', surname_initials: 'Сидоров С.С.', email: 'sidorov@mail.ru') +] + +data_list = DataListStudentShort.new(students) + +puts "Столбцы: #{data_list.get_names.inspect}" + +table = data_list.get_data + +(0...table.rows_count).each do |row| + puts (0...table.columns_count).map { |col| table.item(row, col) }.join(' | ') +end \ No newline at end of file