Support non-canonical/peripheral books
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- typescript
调研方向
Start with usjBookExtractor.ts, bookTokenizer.ts, and useInterlinearizerBookData.ts, then review ScriptureRef and the named fixture builders. Run usjBookExtractor.test.ts and bookTokenizer.test.ts to understand the current verse assumptions; completion depends on defining the open questions and on platform support for opening and navigating extra-material books.
由索引模型根据 Issue 内容生成。
描述
Summary
The interlinearizer assumes every book has real chapters and verses.
Paratext's 15 non-canonical/peripheral book codes don't: XXA–XXG, FRT, BAK, OTH, INT, CNC, GLO, TDX, NDX. They're paragraph-structured, not verse-structured.
Today, opening one of these books doesn't error. It silently tokenizes to zero segments and renders a blank view — no message explains why.
paranext-core support
Canon.nonCanonicalIds/Canon.isExtraMaterialmodel these 15 codes explicitly.- Storage, project settings, and
VerseRefvalidity treat them uniformly with canonical books.VerseRef.internalValidskips chapter/verse bounds checking for them entirely. - Some platform UI (Find, the book/chapter quick-nav control, Manage Books) deliberately excludes or special-cases them, since they have no real chapter/verse structure to browse or search by.
So paranext-core has the vocabulary and partial precedent. This extension has none of it.
What core would need to add
- A way to open/view/edit extra-material content at all. The platform's own Find feature excludes these books today for exactly this reason (tracked as PT-4414: "drop this exclusion once extra material can be opened and addressed"). Until that lands, there's no host capability for this extension to build on.
- A paragraph-structured content API.
platformScripture.USJ_Bookis the only USJ access point this extension uses, and it's requested through a chapter/verse-shaped reference. Peripheral books need a way to fetch and navigate their content that doesn't route through chapter/verse at all. - Chapter/verse quick-nav support, or an equivalent. The platform's book-chapter control currently drops all 15 peripheral ids because "it cannot browse to them." Some paragraph-level navigation primitive would need to take that spot.
- Optionality for
verse/chapterin the shared scripture-reference types, so a peripheral book can be the active reference without a meaningless chapter/verse pair attached.
Current gaps
No awareness of the distinction
- Zero references anywhere in the codebase to
Canon.isCanonical,Canon.isExtraMaterial,Canon.nonCanonicalIds, or any of the 15 codes. Canonis imported in exactly two places, both display-only (bookIdToEnglishName) — never for filtering.
Tokenizer/segmentation pipeline assumes verse structure
usjBookExtractor.tsonly accumulates text intostate.currentVerse, which is set only by a\c/\vnode handler. A peripheral book has neither, so every character of body text is silently discarded.bookTokenizer.tsthen maps zero verses to zero segments. No error is raised.useInterlinearizerBookData.tsonly checks for a missing USJ book, not one that loaded but tokenized to nothing. Result: a blank view, indistinguishable from "this book has no analyzable text."ScriptureRefdeclareschapter/verseas non-optional. There's no way to represent "this paragraph belongs to no chapter/verse."- The alignment model's documented default — one segment per verse — inherits the same assumption.
No book-selection UI to gate or allow this
- The extension has no book picker of its own. Project creation only collects name, description, and analysis languages.
- Book/chapter/verse is entirely driven by the platform's shared scroll-group reference. Whatever restriction (or lack of one) the platform's navigation control applies is the only gate that exists today.
Test-fixture coverage: zero
- No test, fixture, or comment anywhere in the suite references any of the 15 codes.
- Every shared book-fixture builder (
GEN_1_1_BOOK,defaultScrRef,makeRawBook,makeVerseBook) is hardcoded to, or defaults to, canonical verse-structured books. makeSegmentactively throws unless itssidparses as"<BOOK> <chapter>:<verse>". Building a segment fixture for a peripheral book is structurally impossible with this helper today.- Two tests exercise "no verse markers" generically (
usjBookExtractor.test.ts,bookTokenizer.test.ts), both using book codeGEN. Neither is framed around, or asserts anything about, the peripheral-book case.
Non-goals
- Deuterocanon/apocrypha books (
TOB,WIS,1MA, etc.) are full canon members in paranext-core's model already. Out of scope here.
Open questions
- What should the UI show when a peripheral book is the active scripture reference: a blank interlinearizer, or an explicit "not supported" message (mirroring the platform's own Find-feature pattern)?
- Does paragraph-structured content need its own segment-identity scheme, or can it reuse a synthetic verse-like key?
- Should this wait on the platform's own extra-material viewing/editing support? The interlinearizer can't display these books meaningfully until the platform can.
Related: #129, #230 (alignment format's one-segment-per-verse default shares this gap).
Size: L — touches parsing, tokenization, segmentation, and every verse-keyed data structure.
- 主要语言
- TypeScript
- 星标
- 2
- 派生
- 0
- 平均合并
- 2 天 3 小时
- 30 天内合并 PR
- 46
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
sillsdev/interlinearizer-extension 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 25/100
sillsdev/interlinearizer-extension#407 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 18/100
sillsdev/interlinearizer-extension#403 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 55/100
sillsdev/interlinearizer-extension#402 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 8/100
sillsdev/interlinearizer-extension#401 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 25/100
sillsdev/interlinearizer-extension#388 ·
维护者通常 1 天内回复
查看 sillsdev/interlinearizer-extension 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 85/100
lukilabs/beautiful-mermaid#160 ·
-
难度 2/5 1-3 小时 新手友好度 66/100
rescript-lang/rescript-lang.org#1420 ·
维护者通常 2 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 82/100
chthollyphile/folia-major#520 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
databuddy-analytics/Databuddy#1106 ·
维护者通常 1 天内回复