Class: SortingServiceBooks::SortBooks

Inherits:
Object
  • Object
show all
Defined in:
lib/sorting_service_books/sort_books.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(books, conditions) ⇒ SortBooks

Returns a new instance of SortBooks.



8
9
10
11
# File 'lib/sorting_service_books/sort_books.rb', line 8

def initialize(books, conditions)
  @books = books
  @conditions = conditions
end

Instance Attribute Details

#booksObject

Returns the value of attribute books.



6
7
8
# File 'lib/sorting_service_books/sort_books.rb', line 6

def books
  @books
end

#conditionsObject

Returns the value of attribute conditions.



6
7
8
# File 'lib/sorting_service_books/sort_books.rb', line 6

def conditions
  @conditions
end

Instance Method Details

#sortObject

Raises:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/sorting_service_books/sort_books.rb', line 13

def sort
  raise OrderingException if @conditions.nil?

  collection = @books.sort do |a, b|
    methods_call_first = []
    methods_call_second = []
    @conditions.each do |order| 
      if order.value == :asc
        methods_call_first << a.send(order.key)
        methods_call_second << b.send(order.key)
      else
        methods_call_second << a.send(order.key)
        methods_call_first << b.send(order.key)
      end
    end
    
    methods_call_first <=> methods_call_second
  end

  collection
end