mirror of
https://gitlab.com/walljm/dynamicbible.git
synced 2025-07-24 16:00:11 -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';
|
import { BibleReference, Overlap } from './bible-reference';
|
||||||
|
|
||||||
describe('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', () => {
|
it('Should parse the reference: Gen 1-2', () => {
|
||||||
const ref = new BibleReference('Gen 1-2').toString();
|
const ref = new BibleReference('Gen 1-2').toString();
|
||||||
expect(ref).toBe('Genesis 1:1 - 2:25');
|
expect(ref).toBe('Genesis 1:1 - 2:25');
|
||||||
@ -309,7 +315,9 @@ describe('Reference Overlap Detection', () => {
|
|||||||
const rightRef = new BibleReference('Gen 1:4-6');
|
const rightRef = new BibleReference('Gen 1:4-6');
|
||||||
|
|
||||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
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.Subset)).toBeNull();
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).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');
|
const rightRef = new BibleReference('Gen 1:1-8');
|
||||||
|
|
||||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
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.Subset)).toBeNull();
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).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');
|
const rightRef = new BibleReference('Gen 1:1-10');
|
||||||
|
|
||||||
expect(BibleReference.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
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.Subset)).toEqual(new BibleReference('Gen 1:1-10'));
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
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.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.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.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();
|
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.overlap(leftRef, rightRef)).toBe(Overlap.Subset);
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
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.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();
|
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.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).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();
|
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.overlap(leftRef, rightRef)).toBe(Overlap.Intersect);
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Equal)).toBeNull();
|
||||||
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.Subset)).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();
|
expect(BibleReference.mergeReference(leftRef, rightRef, Overlap.None)).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ export class BibleReference {
|
|||||||
if (this.section.end.chapter === 0) {
|
if (this.section.end.chapter === 0) {
|
||||||
this.section.end.chapter = this.section.start.chapter;
|
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;
|
this.section.end.verse = this.section.start.verse;
|
||||||
}
|
}
|
||||||
if (this.section.start.verse === 0) {
|
if (this.section.start.verse === 0) {
|
||||||
@ -1015,7 +1015,11 @@ export class BibleReference {
|
|||||||
this.ref = StringUtils.ltrim(this.ref.toLowerCase());
|
this.ref = StringUtils.ltrim(this.ref.toLowerCase());
|
||||||
let verse = '';
|
let verse = '';
|
||||||
if (this.ref[0] === '*') {
|
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);
|
this.ref = this.ref.slice(1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1055,6 +1059,10 @@ export class BibleReference {
|
|||||||
if (self.ref.search(/:/) !== -1 || foundSecondBook || !foundFirstVerse) {
|
if (self.ref.search(/:/) !== -1 || foundSecondBook || !foundFirstVerse) {
|
||||||
self.parseChapter(isEnd);
|
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);
|
self.parseVerse(true, isEnd);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user