Class: Kj::Chapter
Instance Attribute Summary collapse
- #book ⇒ Object
-
#book_id ⇒ Object
Returns the value of attribute book_id.
-
#id ⇒ Object
Returns the value of attribute id.
-
#number ⇒ Object
Returns the value of attribute number.
Class Method Summary collapse
Instance Method Summary collapse
- #book_name ⇒ Object
- #book_permalink ⇒ Object
-
#initialize(args) ⇒ Chapter
constructor
A new instance of Chapter.
- #next ⇒ Object
- #prev ⇒ Object
- #title ⇒ Object
- #to_s ⇒ Object
- #verse(verse_number) ⇒ Object
- #verses(*numbers) ⇒ Object
Constructor Details
#initialize(args) ⇒ Chapter
Returns a new instance of Chapter.
8 9 10 11 12 |
# File 'lib/kj/chapter.rb', line 8 def initialize(args) args.each do |k,v| instance_variable_set("@#{k}", v) unless v.nil? end end |
Instance Attribute Details
#book ⇒ Object
18 19 20 21 22 23 |
# File 'lib/kj/chapter.rb', line 18 def book @book ||= begin b = Db.query("SELECT id, name, permalink FROM books WHERE id = ?", [book_id], true) Book.new(id: b['id'], name: b['name'], permalink: b['permalink']) end end |
#book_id ⇒ Object
Returns the value of attribute book_id.
5 6 7 |
# File 'lib/kj/chapter.rb', line 5 def book_id @book_id end |
#id ⇒ Object
Returns the value of attribute id.
5 6 7 |
# File 'lib/kj/chapter.rb', line 5 def id @id end |
#number ⇒ Object
Returns the value of attribute number.
5 6 7 |
# File 'lib/kj/chapter.rb', line 5 def number @number end |
Class Method Details
.count ⇒ Object
57 58 59 |
# File 'lib/kj/chapter.rb', line 57 def self.count 1184 end |
Instance Method Details
#book_name ⇒ Object
25 26 27 |
# File 'lib/kj/chapter.rb', line 25 def book_name book.name end |
#book_permalink ⇒ Object
29 30 31 |
# File 'lib/kj/chapter.rb', line 29 def book_permalink book.permalink end |
#next ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/kj/chapter.rb', line 37 def next @next ||= begin c = Db.query("SELECT id, book_id, number FROM chapters WHERE id > ? order by id asc limit 1", [id], true) self.class.new(id: c['id'], book_id: c['book_id'], number: c['number']) rescue Kj::Iniquity c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [1], true) self.class.new(id: c['id'], book_id: c['book_id'], number: c['number']) end end |
#prev ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/kj/chapter.rb', line 47 def prev @prev ||= begin c = Db.query("SELECT id, book_id, number FROM chapters WHERE id < ? order by id desc limit 1", [id], true) self.class.new(id: c['id'], book_id: c['book_id'], number: c['number']) rescue Kj::Iniquity c = Db.query("SELECT id, book_id, number FROM chapters WHERE id = ?", [self.class.count], true) self.class.new(id: c['id'], book_id: c['book_id'], number: c['number']) end end |
#title ⇒ Object
14 15 16 |
# File 'lib/kj/chapter.rb', line 14 def title "#{book_name} #{number}" end |
#to_s ⇒ Object
33 34 35 |
# File 'lib/kj/chapter.rb', line 33 def to_s title end |
#verse(verse_number) ⇒ Object
66 67 68 69 |
# File 'lib/kj/chapter.rb', line 66 def verse(verse_number) verse = Db.query("SELECT id FROM verses WHERE chapter_id = ? AND number = ?", [id, verse_number], true) Verse.new(id: verse['id'], book_name: book_name, chapter_id: id, number: verse_number) end |
#verses(*numbers) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/kj/chapter.rb', line 71 def verses(*numbers) if numbers.empty? @verses ||= begin results = Db.query("SELECT id, number FROM verses WHERE chapter_id = ?", [id]) results.map{|verse| Verse.new(id: verse['id'], book_name: book_name, chapter_id: id, number: verse['number'])} end else results = Db.query("SELECT id, number FROM verses WHERE chapter_id = #{id} AND number IN (#{numbers.flatten.join(',')})") results.map!{|verse| Verse.new(id: verse['id'], book_name: book_name, chapter_id: id, number: verse['number'])}.sort!{ |a,b| a.id <=> b.id } end end |