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:
@@ -126,7 +126,9 @@ app.get('/books/:book', async (req, res) => {
|
|||||||
app.get('/books/:book/:chapter', async (req, res) => {
|
app.get('/books/:book/:chapter', async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const { book, chapter } = req.params;
|
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);
|
const content = await readMarkdownFile(chapterPath);
|
||||||
res.type('text/markdown').send(content);
|
res.type('text/markdown').send(content);
|
||||||
|
|||||||
@@ -16,8 +16,16 @@ class BibleSearchEngine {
|
|||||||
for (let i = 0; i < lines.length; i++) {
|
for (let i = 0; i < lines.length; i++) {
|
||||||
const line = lines[i].trim();
|
const line = lines[i].trim();
|
||||||
|
|
||||||
// Match verse patterns like "1 In the beginning..." or "**1** In the beginning..."
|
// Skip empty lines and headers
|
||||||
const verseMatch = line.match(/^(\*\*)?(\d+)(\*\*)?\s+(.+)$/);
|
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) {
|
if (verseMatch) {
|
||||||
const verseNumber = parseInt(verseMatch[2]);
|
const verseNumber = parseInt(verseMatch[2]);
|
||||||
|
|||||||
Reference in New Issue
Block a user