Fold the Study notes/resources halves; compare translations
- Your notes and Commentary & resources can each be folded so the other fills the right column (remembered on this device; never both folded). - Compare has a Translations view: pick BSB/ESV/NET/NLT/CSB/NASB and read the chunk verse by verse, with each translation's notice. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d8e522dd06
commit
76df145b1e
5 files changed
+216
-22
No files matched your search
@@ -0,0 +1,30 @@
|
||||
// Comparing translations of one chunk: which chapter(s) and verses to fetch, and the verses lined up by number.
|
||||
import { getChunkVerseEntries } from './bibleUtils.jsx';
|
||||
|
||||
// -> [{ bookAbbrev, book, chapter, from, to }]: one entry per chapter the chunk covers (two when it spills over).
|
||||
export function translationSpans(project, chapterIndex, chunk) {
|
||||
const spans = [];
|
||||
for (const v of getChunkVerseEntries(project, chapterIndex, chunk)) {
|
||||
const last = spans[spans.length - 1];
|
||||
if (last && last.chapter === v.chapter && last.book === v.book) { last.to = Math.max(last.to, v.number); last.from = Math.min(last.from, v.number); continue; }
|
||||
const chapter = project.chapters.find((c) => c.book === v.book && String(c.chapter) === String(v.chapter));
|
||||
spans.push({ bookAbbrev: chapter?.bookAbbrev, book: v.book, chapter: v.chapter, from: v.number, to: v.number });
|
||||
}
|
||||
return spans;
|
||||
}
|
||||
|
||||
// byTranslation: { BSB: { verses: [{ number, text }] }, … } for the chapters in `spans`; `loaded` is keyed by
|
||||
// `${chapter}` inside each translation. -> [{ key, label, texts: { BSB: 'text' | null } }] one row per verse, in order.
|
||||
export function alignVerses(spans, byTranslation) {
|
||||
const rows = [];
|
||||
for (const span of spans) {
|
||||
for (let n = span.from; n <= span.to; n += 1) {
|
||||
const texts = {};
|
||||
for (const [id, chapters] of Object.entries(byTranslation)) {
|
||||
texts[id] = chapters?.[`${span.book}|${span.chapter}`]?.find((v) => v.number === n)?.text ?? null;
|
||||
}
|
||||
rows.push({ key: `${span.book}${span.chapter}:${n}`, label: spans.length > 1 ? `${span.chapter}:${n}` : String(n), texts });
|
||||
}
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
Reference in new issue
Block a user