Methods
Public Class methods
new( path )
    # File demo/lib/books.rb, line 8
 8:     def initialize( path )
 9:       @db = File.open( path ) { |file| YAML.load( file ) }
10: 
11:       @authors = Hash.new { |hash,key| hash[key] = Array.new }
12:       @series = Hash.new  { |hash,key| hash[key] = Array.new }
13:       @genres = Hash.new  { |hash,key| hash[key] = Array.new }
14: 
15:       @db[ 'books' ].each do |book|
16:         auths = book[ 'author' ]
17:         auths = [ auths ] unless auths.is_a? Array
18:         auths.each { |author| @authors[ author ] << book }
19:         @series[ book[ 'series' ] ] << book if book[ 'series' ]
20:         @genres[ book[ 'genre' ] ] << book
21:       end
22:     end
Public Instance methods
authors()
    # File demo/lib/books.rb, line 36
36:     def authors
37:       @authors.keys
38:     end
books()
    # File demo/lib/books.rb, line 32
32:     def books
33:       @db[ 'books' ]
34:     end
creation_date()
    # File demo/lib/books.rb, line 24
24:     def creation_date
25:       @db[ 'creation-date' ]
26:     end
find_book( rules )
    # File demo/lib/books.rb, line 48
48:     def find_book( rules )
49:       @db[ 'books' ].each do |book|
50:         return book if matches( book, rules )
51:       end
52:       nil
53:     end
find_books( rules )
    # File demo/lib/books.rb, line 55
55:     def find_books( rules )
56:       books = []
57:       @db[ 'books' ].each do |book|
58:         books << book if matches( book, rules )
59:       end
60:       books
61:     end
genres()
    # File demo/lib/books.rb, line 40
40:     def genres
41:       @genres.keys
42:     end
series()
    # File demo/lib/books.rb, line 44
44:     def series
45:       @series.keys
46:     end
updated_date()
    # File demo/lib/books.rb, line 28
28:     def updated_date
29:       @db[ 'last-updated' ]
30:     end