Module: ReferenceBook::Library
- Defined in:
- lib/reference_book/library.rb
Class Method Summary collapse
- .[](key) ⇒ Object
- .array_for(attribute) ⇒ Object (also: pluck)
- .empty! ⇒ Object
- .hash_for(attribute) ⇒ Object (also: hash_pluck)
- .index ⇒ Object
- .shelf ⇒ Object
- .store(book) ⇒ Object
- .verify_library_key!(key) ⇒ Object
Class Method Details
.[](key) ⇒ Object
24 25 26 |
# File 'lib/reference_book/library.rb', line 24 def [](key) shelf[key] end |
.array_for(attribute) ⇒ Object Also known as: pluck
46 47 48 49 50 |
# File 'lib/reference_book/library.rb', line 46 def array_for(attribute) shelf.map do |key, book| book[attribute] if book.respond_to?(attribute) end end |
.empty! ⇒ Object
29 30 31 32 33 34 |
# File 'lib/reference_book/library.rb', line 29 def empty! index.each { |key| remove_accessor_for(key) } @index = [] @shelf = {} nil end |
.hash_for(attribute) ⇒ Object Also known as: hash_pluck
54 55 56 57 58 59 60 |
# File 'lib/reference_book/library.rb', line 54 def hash_for(attribute) Hash[ shelf.map do |key, book| [key, (book[attribute] if book.respond_to?(attribute))] end ] end |
.index ⇒ Object
19 20 21 |
# File 'lib/reference_book/library.rb', line 19 def index @index ||= [] end |
.shelf ⇒ Object
14 15 16 |
# File 'lib/reference_book/library.rb', line 14 def shelf @shelf ||= {} end |
.store(book) ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/reference_book/library.rb', line 4 def store(book) verify_library_key!(book.library_key) shelf[book.library_key] = book index << book.library_key define_accessor_for(book) book end |
.verify_library_key!(key) ⇒ Object
37 38 39 40 41 |
# File 'lib/reference_book/library.rb', line 37 def verify_library_key!(key) if is_key_in_use?(key) raise ReferenceBook::BookDefinitionError, "the library key '#{key}' is already in use." end end |