Sha256: 03c65dfb3cd2ae2132a4de590c80a3985ef16d491cdc0cc2e6058346a744e982

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

module ShnaiderCode
    module DataListObserver
        def notify(data)
            raise 'not implemented'
        end
    end

    module DataListNotifier
        attr_accessor :data_list_observers

        def notify
            raise 'not implemented'
        end
    end

    class DataList 
        attr_accessor :list
        attr_private_accessor :selected_objects
        def initialize(list:)
            self.data_list_observers = []
            self.list = list
        end

        def select(index)
            selected_objects << index
        end

        def get_selected_objects
            (0...list.size)
                .filter { |x| selected_objects.include? x }
        end

        def get_names
            raise "Метод не реализован"
        end

        def get_data
            raise "Метод не реализован"
        end
    end

    class DataList
        include DataListNotifier

        def notify
            data_list_observers.each { |observer|
                observer.notify(self.get_data)
            }
        end

        def add_observer(observer)
            self.data_list_observers << observer
        end

        def remove_observer(observer)
            self.data_list_observers.delete(observer) 
        end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shnaider_code-2.0.4 lib/source/data_list.rb
shnaider_code-2.0.3 lib/source/data_list.rb
shnaider_code-2.0.2 lib/source/data_list.rb