Fix search functionality for markdown bible data

- Update search engine to parse numbered list format (1. verse text)
- Fix chapter file path construction to use Chapter_XX.md format
- Add zero-padding for chapter numbers in API routes
- Skip empty lines and headers in markdown parsing
- Ensure compatibility with external bible data source structure
This commit is contained in:
Ryderjj89
2025-09-15 17:40:37 -04:00
parent f5639af27f
commit 5f22fb5bdc
2 changed files with 13 additions and 3 deletions

View File

@@ -126,7 +126,9 @@ app.get('/books/:book', async (req, res) => {
app.get('/books/:book/:chapter', async (req, res) => {
try {
const { book, chapter } = req.params;
const chapterPath = path.join(BIBLE_DATA_DIR, book, `${chapter}.md`);
// Format chapter number with leading zero if needed (e.g., "1" -> "01")
const paddedChapter = chapter.padStart(2, '0');
const chapterPath = path.join(BIBLE_DATA_DIR, book, `Chapter_${paddedChapter}.md`);
const content = await readMarkdownFile(chapterPath);
res.type('text/markdown').send(content);

View File

@@ -16,8 +16,16 @@ class BibleSearchEngine {
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim();
// Match verse patterns like "1 In the beginning..." or "**1** In the beginning..."
const verseMatch = line.match(/^(\*\*)?(\d+)(\*\*)?\s+(.+)$/);
// Skip empty lines and headers
if (!line || line.startsWith('#')) {
continue;
}
// Match verse patterns:
// - "1. In the beginning..." (numbered list format)
// - "1 In the beginning..." (simple number format)
// - "**1** In the beginning..." (bold number format)
const verseMatch = line.match(/^(\*\*)?(\d+)(\*\*)?[.\s]\s*(.+)$/);
if (verseMatch) {
const verseNumber = parseInt(verseMatch[2]);