Class: Bible::BibleRefParser::Verses
- Inherits:
-
Object
- Object
- Bible::BibleRefParser::Verses
- Includes:
- RangeComparisons
- Defined in:
- lib/bible/parser.rb
Overview
Represents range or discontinuous series of chaptesr
Instance Method Summary collapse
- #<<(value) ⇒ Object
- #==(value) ⇒ Object
- #[](index) ⇒ Object
-
#each ⇒ Object
All verses defined on the chapter.
- #fixup ⇒ Object
-
#initialize(chapter) ⇒ Verses
constructor
A new instance of Verses.
- #inspect ⇒ Object
- #last ⇒ Object
- #length ⇒ Object
Methods included from RangeComparisons
Constructor Details
#initialize(chapter) ⇒ Verses
Returns a new instance of Verses.
603 604 605 606 |
# File 'lib/bible/parser.rb', line 603 def initialize(chapter) @verses = [] @chapter = chapter end |
Instance Method Details
#<<(value) ⇒ Object
618 619 620 621 622 623 624 625 626 627 628 629 |
# File 'lib/bible/parser.rb', line 618 def <<(value) unless value.nil? || @verses.empty? || @verses.last.nil? || value == -1 raise "Cannot add a verse reference in reverse order" if @verses.last > value unless @verses.last.verse_number == value @verses.last.succ.upto(value) { |v| @verses << v } end else @verses << value end end |
#==(value) ⇒ Object
643 644 645 |
# File 'lib/bible/parser.rb', line 643 def ==(value) compare_ranges(@verses, value, "verses") end |
#[](index) ⇒ Object
639 640 641 |
# File 'lib/bible/parser.rb', line 639 def [](index) return @verses.compact[index] end |
#each ⇒ Object
All verses defined on the chapter. If none are defined, this is a no-op. Will yield either Verse objects or -1 (indicating go to end of verses).
649 650 651 652 653 654 |
# File 'lib/bible/parser.rb', line 649 def each return if @verses.empty? @verses.each { |verse| yield verse unless verse.nil? } end |
#fixup ⇒ Object
608 609 610 611 612 613 614 615 616 |
# File 'lib/bible/parser.rb', line 608 def fixup if @verses.last == -1 @verses.pop chapter = Books[@chapter.book.book_symbol][@chapter.chapter_number - 1] @verses.last.succ.upto(chapter.verses.last) do |v| @verses << v end end end |
#inspect ⇒ Object
656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 |
# File 'lib/bible/parser.rb', line 656 def inspect last_verse = nil s = @verses.inject("") { |val, v| if val.empty? || last_verse.nil? val << "," unless val.empty? val << v.inspect elsif v.nil? val << "-#{last_verse.inspect}" end last_verse = v val } s << "-#{last_verse.inspect}" unless last_verse.nil? s end |
#last ⇒ Object
635 636 637 |
# File 'lib/bible/parser.rb', line 635 def last @verses.last end |
#length ⇒ Object
631 632 633 |
# File 'lib/bible/parser.rb', line 631 def length @verses.length end |