From cf09b28ae5a310d4d4bca450ea7173828b747578 Mon Sep 17 00:00:00 2001 From: Michael Hanna Date: Tue, 7 Jun 2022 23:37:37 -0400 Subject: [PATCH] fix bug where BOOK references were returning as CHAPTER --- Sources/BibleKit/Librarian.swift | 59 ++++++++++--------- Sources/BibleKit/Reference.swift | 6 +- .../BibleReferenceParser_ParserTests.swift | 8 +++ 3 files changed, 41 insertions(+), 32 deletions(-) diff --git a/Sources/BibleKit/Librarian.swift b/Sources/BibleKit/Librarian.swift index b4c27fb..87047cc 100644 --- a/Sources/BibleKit/Librarian.swift +++ b/Sources/BibleKit/Librarian.swift @@ -347,43 +347,44 @@ public class Librarian { guard book != nil else { return nil } var reference: String = "" - if let book = book, - let startChapter = startChapter { + if let book = book { reference.append(contentsOf: book) - reference.append(contentsOf: " \(startChapter)") + if let startChapter = startChapter { + reference.append(contentsOf: " \(startChapter)") - if startVerse != nil { - if let startVerse = startVerse { - reference.append(contentsOf: ":\(startVerse)") + if startVerse != nil { + if let startVerse = startVerse { + reference.append(contentsOf: ":\(startVerse)") - if endChapter != nil && endChapter != startChapter { - if let endChapter = endChapter { - reference.append(contentsOf: " - \(endChapter)") - } + if endChapter != nil && endChapter != startChapter { + if let endChapter = endChapter { + reference.append(contentsOf: " - \(endChapter)") + } - if let endVerse = endVerse { - reference.append(contentsOf: ":\(endVerse)") - } else { - if let lastVerseNumber = getLastVerseNumber(book: book, chapter: endChapter) { - reference.append(contentsOf: ":\(lastVerseNumber)") + if let endVerse = endVerse { + reference.append(contentsOf: ":\(endVerse)") + } else { + if let lastVerseNumber = getLastVerseNumber(book: book, chapter: endChapter) { + reference.append(contentsOf: ":\(lastVerseNumber)") + } } - } - } else if endVerse != nil && endVerse != startVerse { - if let endVerse = endVerse { - reference.append(contentsOf: "-\(endVerse)") + } else if endVerse != nil && endVerse != startVerse { + if let endVerse = endVerse { + reference.append(contentsOf: "-\(endVerse)") + } } } - } - } else if endChapter != nil && endChapter != startChapter { - if endVerse != nil { - if let endChapter = endChapter, - let endVerse = endVerse { - reference.append(contentsOf: ":1 - \(endChapter):\(endVerse)") - } - } else { - if let endChapter = endChapter { - reference.append(contentsOf: "-\(endChapter)") + } else if endChapter != nil && endChapter != startChapter { + if endVerse != nil { + if let endChapter = endChapter, + let endVerse = endVerse { + reference.append(contentsOf: ":1 - \(endChapter):\(endVerse)") + } + } else { + if let endChapter = endChapter { + reference.append(contentsOf: "-\(endChapter)") + } } } } diff --git a/Sources/BibleKit/Reference.swift b/Sources/BibleKit/Reference.swift index 1cf852c..7f9771c 100644 --- a/Sources/BibleKit/Reference.swift +++ b/Sources/BibleKit/Reference.swift @@ -172,21 +172,21 @@ public class Reference: BibleReference { } self.reference = Librarian.createReferenceString(book: fullBookName, - startChapter: startChapterNumber, + startChapter: startChapter, startVerse: startVerse, endChapter: endChapter, endVerse: endVerse ) self.referenceType = Librarian.identifyReferenceType(book: fullBookName, - startChapter: startChapterNumber, + startChapter: startChapter, startVerse: startVerse, endChapter: endChapter, endVerse: endVerse ) self.isValid = Librarian.verifyReference(book: fullBookName, - startChapter: startChapterNumber, + startChapter: startChapter, startVerse: startVerse, endChapter: endChapter, endVerse: endVerse diff --git a/Tests/BibleKitTests/BibleReferenceParser_ParserTests.swift b/Tests/BibleKitTests/BibleReferenceParser_ParserTests.swift index 9d3f9d4..f2db265 100644 --- a/Tests/BibleKitTests/BibleReferenceParser_ParserTests.swift +++ b/Tests/BibleKitTests/BibleReferenceParser_ParserTests.swift @@ -119,6 +119,14 @@ class BibleReferenceParser_ParserTests: XCTestCase { XCTAssert(ref[0].reference == "Matthew 2:3-5") XCTAssert(ref[0].book == "Matthew") XCTAssert(ref[0].isValid == true) + + ref = RefParser.parseReferences("genesis") + XCTAssert(ref.count == 1) + XCTAssert(ref[0].reference == "Genesis") + XCTAssert(ref[0].book == "Genesis") + XCTAssert(ref[0].referenceType == ReferenceType.BOOK) + XCTAssert(ref[0].isValid == true) + } func testParsingAllReferences() throws {