From 4510e6e3336362a29cd4f1716e6ac6e11b88905a Mon Sep 17 00:00:00 2001 From: Ryderjj89 Date: Sun, 28 Sep 2025 13:02:51 -0400 Subject: [PATCH] Fix NKJV verse parsing to handle header-style verses - Updated parseBibleText to detect NKJV verses with ###### 1 Verse format - Added version-specific parsing for ESV (1. format) vs NKJV (###### format) - Ensures proper verse number extraction and text display for both versions - Removes diamond question marks and square artifacts in NKJV text --- frontend/src/components/BibleReader.tsx | 41 ++++++++++++++++++------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/BibleReader.tsx b/frontend/src/components/BibleReader.tsx index c80c5a87..b25fdf0f 100644 --- a/frontend/src/components/BibleReader.tsx +++ b/frontend/src/components/BibleReader.tsx @@ -229,7 +229,7 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format } }; - const parseBibleText = (text: string) => { + const parseBibleText = (text: string, version: string) => { const lines = text.split('\n'); const verses: JSX.Element[] = []; @@ -239,12 +239,27 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format // Skip empty lines if (!line) continue; - // Check if line starts with verse number (e.g., "1. ", "2. ", etc.) - const verseMatch = line.match(/^(\d+)\.\s+(.+)$/); - if (verseMatch) { - const verseNumber = verseMatch[1]; - const verseText = verseMatch[2]; + let verseNumber: string | null = null; + let verseText: string | null = null; + // 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(
@@ -258,10 +273,10 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format 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'} > - @@ -270,7 +285,11 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format
); } else if (line.startsWith('#')) { - // Chapter header + // 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; + } const headerText = line.replace(/^#+\s*/, ''); verses.push(

@@ -368,7 +387,7 @@ const BibleReader: React.FC = ({ book, chapter, onBack, format {/* Bible Content */}
- {parseBibleText(content)} + {parseBibleText(content, version)}
{/* Footer Navigation */}