Support non-canonical/peripheral books
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- backend-api-design, frontend, testing-qa
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- TypeScript
- Star
- 2
- Fork
- 0
- Merge trung bình
- 2 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 47
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của sillsdev/interlinearizer-extension
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
sillsdev/interlinearizer-extension#419 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
sillsdev/interlinearizer-extension#418 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Imported PT9 interlinear gloss data sometimes missingCó thể đã có người làm @imnasnainaec đã nhận hôm nay. Đang mở
sillsdev/interlinearizer-extension#477 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 75/100
sillsdev/interlinearizer-extension#476 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 54/100
sillsdev/interlinearizer-extension#473 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của sillsdev/interlinearizer-extension
Issue tương tự
-
skillopt: success-reflect prompt omits the edit schema, so every success-only edit is droppedĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Workspace secrets/constants containing "$" are corrupted when resolved in data source optionsĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100
mobile-next/mobile-mcp#526 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
e2e-failure ready-to-code
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 73/100
redhat-developer/rhdh-plugin-export-overlays#4470 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày