mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-23 07:19:50 -04:00
Fix parsing bug for star shorthand
This commit is contained in:
parent
05500cfbfe
commit
1f40bac176
@ -1,6 +1,12 @@
|
||||
import { BibleReference, Overlap } from './bible-reference';
|
||||
|
||||
describe('Reference', () => {
|
||||
it('Should understand the * shorthand', () => {
|
||||
const ref = new BibleReference('Gen 1:1-*');
|
||||
expect(ref.section.end.chapter).toBe(1);
|
||||
expect(ref.section.end.verse).toBe(31);
|
||||
});
|
||||
|
||||
it('Should parse the reference: Gen 1-2', () => {
|
||||
const ref = new BibleReference('Gen 1-2').toString();
|
||||
expect(ref).toBe('Genesis 1:1 - 2:25');
|
||||
@ -309,7 +315,9 @@ describe('Reference Overlap Detection', () => {
|
||||
const rightRef = new BibleReference('Gen 1:4-6');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-6'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-6')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
@ -319,7 +327,9 @@ describe('Reference Overlap Detection', () => {
|
||||
const rightRef = new BibleReference('Gen 1:1-8');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-10')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
@ -329,7 +339,9 @@ describe('Reference Overlap Detection', () => {
|
||||
const rightRef = new BibleReference('Gen 1:1-10');
|
||||
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-10')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
@ -341,7 +353,9 @@ describe('Reference Overlap Detection', () => {
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Equal);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-10')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
@ -352,7 +366,9 @@ describe('Reference Overlap Detection', () => {
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-10')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
@ -363,7 +379,9 @@ describe('Reference Overlap Detection', () => {
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-2:10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-2:10')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
@ -374,7 +392,9 @@ describe('Reference Overlap Detection', () => {
|
||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).toBeNull();
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(new BibleReference('Gen 1:1-2:10'));
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Intersect)).toEqual(
|
||||
new BibleReference('Gen 1:1-2:10')
|
||||
);
|
||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||
});
|
||||
|
||||
|
@ -565,7 +565,7 @@ export class BibleReference {
|
||||
if (this.section.end.chapter === 0) {
|
||||
this.section.end.chapter = this.section.start.chapter;
|
||||
}
|
||||
if (Number(this.section.start.verse) > Number(this.section.end.verse) && this.section.start.chapter === this.section.end.chapter) {
|
||||
if (this.section.start.verse > this.section.end.verse && this.section.start.chapter === this.section.end.chapter) {
|
||||
this.section.end.verse = this.section.start.verse;
|
||||
}
|
||||
if (this.section.start.verse === 0) {
|
||||
@ -1015,7 +1015,11 @@ export class BibleReference {
|
||||
this.ref = StringUtils.ltrim(this.ref.toLowerCase());
|
||||
let verse = '';
|
||||
if (this.ref[0] === '*') {
|
||||
thing.verse = 0;
|
||||
if (isEnd) {
|
||||
thing.verse = this.section.book.chapters[thing.chapter];
|
||||
} else {
|
||||
thing.verse = 0;
|
||||
}
|
||||
this.ref = this.ref.slice(1);
|
||||
return;
|
||||
}
|
||||
@ -1055,6 +1059,10 @@ export class BibleReference {
|
||||
if (self.ref.search(/:/) !== -1 || foundSecondBook || !foundFirstVerse) {
|
||||
self.parseChapter(isEnd);
|
||||
}
|
||||
if (this.section.end.chapter === 0) {
|
||||
this.section.end.chapter = this.section.start.chapter;
|
||||
}
|
||||
// Fixup chapter here probably
|
||||
self.parseVerse(true, isEnd);
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user