Simplified BibleReader parsing - NKJV files now use standard mdbible format with numbered verses

This commit is contained in:
Ryderjj89
2025-09-28 13:30:01 -04:00
parent eaba20c208
commit 1b1cadf260
1191 changed files with 16 additions and 61 deletions

View File

@@ -229,7 +229,7 @@ const BibleReader: React.FC<BibleReaderProps> = ({ book, chapter, onBack, format
}
};
const parseBibleText = (text: string, version: string) => {
const parseBibleText = (text: string) => {
const lines = text.split('\n');
const verses: JSX.Element[] = [];
@@ -239,27 +239,12 @@ const BibleReader: React.FC<BibleReaderProps> = ({ book, chapter, onBack, format
// Skip empty lines
if (!line) continue;
let verseNumber: string | null = null;
let verseText: string | null = null;
// Check if line is a numbered verse (e.g., "1. ", "2. ", etc.)
const verseMatch = line.match(/^(\d+)\.\s+(.+)$/);
if (verseMatch) {
const verseNumber = verseMatch[1];
const verseText = verseMatch[2];
// Check for different verse formats based on version
if (version === 'nkjv') {
// NKJV: ###### 1 In the beginning God created...
const nkjvMatch = line.match(/^#+\s+(\d+)\s+(.+)$/);
if (nkjvMatch) {
verseNumber = nkjvMatch[1];
verseText = nkjvMatch[2];
}
} else {
// ESV: 1. In the beginning, God created the heavens and the earth.
const esvMatch = line.match(/^(\d+)\.\s+(.+)$/);
if (esvMatch) {
verseNumber = esvMatch[1];
verseText = esvMatch[2];
}
}
if (verseNumber && verseText) {
verses.push(
<div key={`verse-${verseNumber}`} id={`verse-${verseNumber}`} className="mb-4 flex items-start p-2 rounded transition-colors">
<div className="flex-1">
@@ -267,15 +252,15 @@ const BibleReader: React.FC<BibleReaderProps> = ({ book, chapter, onBack, format
<span className="bible-text">{verseText}</span>
</div>
{/* Star button - only show for authenticated users */}
{user && verseNumber && (
{user && (
<button
onClick={() => verseNumber && toggleFavorite(verseNumber)}
onClick={() => toggleFavorite(verseNumber)}
className="ml-2 mt-1 p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors"
title={favorites.has(verseNumber!) ? 'Remove from favorites' : 'Add to favorites'}
title={favorites.has(verseNumber) ? 'Remove from favorites' : 'Add to favorites'}
>
<Star
className={`h-4 w-4 ${
favorites.has(verseNumber!)
favorites.has(verseNumber)
? 'text-yellow-500 fill-yellow-500'
: 'text-gray-400 hover:text-yellow-500'
} transition-colors`}
@@ -285,11 +270,7 @@ const BibleReader: React.FC<BibleReaderProps> = ({ book, chapter, onBack, format
</div>
);
} else if (line.startsWith('#')) {
// Chapter header - skip full header lines for NKJV as they're part of the title
if (version === 'nkjv' && line.match(/^#+\s+\d+\s+.+/)) {
// This is already handled above as verses
continue;
}
// Chapter header
const headerText = line.replace(/^#+\s*/, '');
verses.push(
<h2 key={`header-${i}`} className="chapter-title text-2xl font-bold text-gray-900 dark:text-gray-100 mb-6 mt-8">
@@ -387,7 +368,7 @@ const BibleReader: React.FC<BibleReaderProps> = ({ book, chapter, onBack, format
{/* Bible Content */}
<div className={`max-w-3xl mx-auto ${getFontSizeClass()}`}>
{parseBibleText(content, version)}
{parseBibleText(content)}
</div>
{/* Footer Navigation */}