class Alexandria::Book
Constants
- DEFAULT_RATING
- MAX_RATING_STARS
- VALID_RATINGS
Attributes
edition[RW]
isbn[RW]
library[RW]
loaned[RW]
loaned_since[RW]
loaned_to[RW]
notes[RW]
own[RW]
publisher[RW]
publishing_year[RW]
rating[R]
redd[RW]
redd_when[RW]
saved_ident[RW]
title[RW]
version[RW]
want[RW]
Public Class Methods
from_yaml(text)
click to toggle source
# File lib/alexandria/models/book.rb, line 75 def self.from_yaml(text) node = YAML.parse_stream text doc = node.children.first mapping = doc.children.first mapping.children.each_slice(2) do |_k, v| v.tag = nil if v.tag == "!ruby/array:Alexandria:Library" end yaml = node.to_yaml # TODO: Ensure book loading passes through Book#initialize YAML.safe_load(yaml, permitted_classes: [Book, Time]) end
new(title, authors, isbn, publisher, publishing_year, edition)
click to toggle source
# File lib/alexandria/models/book.rb, line 20 def initialize(title, authors, isbn, publisher, publishing_year, edition) @title = title @authors = authors @isbn = isbn @publisher = publisher @edition = edition # actually used for binding! (i.e. paperback or hardback) @notes = "" @saved_ident = ident @publishing_year = publishing_year @redd = false @own = true @want = true @tags = [] @rating = DEFAULT_RATING # Need to implement bulk save function to update this @version = Alexandria::DATA_VERSION end
Public Instance Methods
==(other)
click to toggle source
# File lib/alexandria/models/book.rb, line 67 def ==(other) other.is_a?(self.class) && (ident == other.ident) end
ident()
click to toggle source
# File lib/alexandria/models/book.rb, line 40 def ident @isbn = nil if !@isbn.nil? && @isbn.empty? @isbn || @title.hash.to_s end
inspect()
click to toggle source
# File lib/alexandria/models/book.rb, line 71 def inspect "#<Alexandria::Book title: #{@title}>" end
loaned?()
click to toggle source
# File lib/alexandria/models/book.rb, line 51 def loaned? loaned || false end
own?()
click to toggle source
# File lib/alexandria/models/book.rb, line 63 def own? own || false end
rating=(rating)
click to toggle source
# File lib/alexandria/models/book.rb, line 45 def rating=(rating) raise ArgumentError unless VALID_RATINGS.include? rating @rating = rating end
redd?()
click to toggle source
# File lib/alexandria/models/book.rb, line 55 def redd? redd || false end
want?()
click to toggle source
# File lib/alexandria/models/book.rb, line 59 def want? want || false end