From 67e0c0561e8846b2db4e8caef25a8cf15fe06735 Mon Sep 17 00:00:00 2001 From: Artem Darius Weber Date: Sat, 25 Jan 2025 13:27:56 +0300 Subject: [PATCH] feat: enhance DataListStudentShort to filter items and add setter method for items --- lab2/data_list_student_short.rb | 9 ++++++++- lab2/test_data_list_student_short.rb | 14 +++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lab2/data_list_student_short.rb b/lab2/data_list_student_short.rb index 45134df..1e03313 100644 --- a/lab2/data_list_student_short.rb +++ b/lab2/data_list_student_short.rb @@ -2,7 +2,14 @@ require_relative './data_table' class DataListStudentShort < DataList def initialize(items) - super(items.select { |item| item.is_a?(StudentShort) }) + filtered = items.select { |item| item.is_a?(StudentShort) } + super(filtered) + @items = filtered.dup + end + + def items=(new_items) + filtered = new_items.select { |item| item.is_a?(StudentShort) } + @items = filtered.dup end def get_names diff --git a/lab2/test_data_list_student_short.rb b/lab2/test_data_list_student_short.rb index 6c5923c..a021cf2 100644 --- a/lab2/test_data_list_student_short.rb +++ b/lab2/test_data_list_student_short.rb @@ -9,10 +9,22 @@ students = [ data_list = DataListStudentShort.new(students) -puts "Столбцы: #{data_list.get_names.inspect}" +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 + +new_students = [ + StudentShort.new(id: '4', surname_initials: 'Новиков Н.Н.', phone: '+79994445566'), + StudentShort.new(id: '5', surname_initials: 'Кузнецов К.К.', email: 'kuznetsov@example.com') +] + +data_list.items = new_students +puts "\nПосле замены:" +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