Class: Bible::BibleRefParser::Chapter
- Inherits:
-
Object
- Object
- Bible::BibleRefParser::Chapter
show all
- Includes:
- Comparable, Enumerable
- Defined in:
- lib/bible/parser.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(book, chapter) ⇒ Chapter
Returns a new instance of Chapter.
383
384
385
386
387
388
|
# File 'lib/bible/parser.rb', line 383
def initialize(book, chapter)
raise "Chapter must be an integer" unless chapter.is_a?(Fixnum)
@book = book
@chapter_number = chapter
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(symbol, *args) ⇒ Object
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
|
# File 'lib/bible/parser.rb', line 441
def method_missing(symbol, *args)
unless @fixedUp
case symbol
when :verses
c = self.verse
class << self
attr_reader :verses
undef_method :verse, :verse=
end
remove_instance_variable :@verse if defined?(@verse)
@verses = Verses.new(self)
if c.nil?
@verses << Verse.new(self, 1)
else
@verses << c
end
@verses
else
super(symbol, *args)
end
else
super(symbol, *args)
end
end
|
Instance Attribute Details
#book ⇒ Object
Returns the value of attribute book.
380
381
382
|
# File 'lib/bible/parser.rb', line 380
def book
@book
end
|
#chapter_number ⇒ Object
Returns the value of attribute chapter_number.
380
381
382
|
# File 'lib/bible/parser.rb', line 380
def chapter_number
@chapter_number
end
|
#verse ⇒ Object
Returns the value of attribute verse.
381
382
383
|
# File 'lib/bible/parser.rb', line 381
def verse
@verse
end
|
Instance Method Details
#<=>(value) ⇒ Object
417
418
419
420
421
|
# File 'lib/bible/parser.rb', line 417
def <=>(value)
return -1 if value.nil?
raise "Don't know how to compare Chapter and #{value.inspect} becuase it does not implement to_i." unless value.respond_to?(:to_i)
return @chapter_number.to_i <=> value.to_i
end
|
#==(value) ⇒ Object
Assumes value is a Fixnum and determines if it is equal to this chapter.
403
404
405
406
407
|
# File 'lib/bible/parser.rb', line 403
def ==(value)
return false if value.nil? || @chapter_number.nil?
raise "Don't know how to compare chapter to #{value.inspect}" unless value.is_a?(Fixnum)
return value == @chapter_number
end
|
#fixup ⇒ Object
390
391
392
393
394
395
396
397
398
399
|
# File 'lib/bible/parser.rb', line 390
def fixup
if ! has_verse?
self.verses << Verse.new(self, -1)
self.verses.fixup
elsif ! single_verse?
@verses.fixup
end
@fixedUp = true
end
|
#has_verse? ⇒ Boolean
433
434
435
|
# File 'lib/bible/parser.rb', line 433
def has_verse?
(respond_to?(:verse) && ! @verse.nil?) || (respond_to?(:verses) && ! @verses.nil?)
end
|
#inspect ⇒ Object
471
472
473
474
475
476
477
|
# File 'lib/bible/parser.rb', line 471
def inspect
if single_verse?
"#{@chapter_number}:" + @verse.inspect
else
"#{@chapter_number}:" + @verses.inspect
end
end
|
#single_verse? ⇒ Boolean
437
438
439
|
# File 'lib/bible/parser.rb', line 437
def single_verse?
respond_to?(:verse)
end
|
#succ ⇒ Object
423
424
425
|
# File 'lib/bible/parser.rb', line 423
def succ
return Chapter.new(@book, @chapter_number + 1)
end
|
#to_i ⇒ Object
409
410
411
|
# File 'lib/bible/parser.rb', line 409
def to_i
return @chapter_number.to_i
end
|
#to_s ⇒ Object
413
414
415
|
# File 'lib/bible/parser.rb', line 413
def to_s
return @chapter_number.to_s
end
|
#upto(i) {|_self| ... } ⇒ Object
427
428
429
430
431
|
# File 'lib/bible/parser.rb', line 427
def upto(i)
raise "Cannot enumerate to value #{i.inspect} because it does not respond to to_i." unless i.respond_to?(:to_i)
yield self
(@chapter_number + 1).upto(i.to_i) { |x| yield(Chapter.new(@book, x)) }
end
|