Add KJV translator footnotes package
This commit is contained in:
+7
-1
@@ -2,7 +2,13 @@
|
|||||||
|
|
||||||
## Current
|
## Current
|
||||||
|
|
||||||
- Added Strong's dictionary reference material for KJV word links.
|
- Added KJV translator footnotes from the eBible USFM package.
|
||||||
|
|
||||||
|
## 0.1.7 - 2026-07-12
|
||||||
|
|
||||||
|
- Added KJV translator footnotes from the eBible USFM package as `footnotes.jsonl`.
|
||||||
|
- Added footnote catalog metadata, generated docs, package checksums, and footnote counts.
|
||||||
|
- Normalized common mojibake punctuation found in imported USFM notes.
|
||||||
|
|
||||||
## 0.1.6 - 2026-07-12
|
## 0.1.6 - 2026-07-12
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -6,5 +6,5 @@ This file is generated from source manifests and package catalogs. Edit `sources
|
|||||||
|
|
||||||
| Resource | Type | Language | Date / Edition | Source | License | Features | Attachments | Counts | Detail |
|
| Resource | Type | Language | Date / Edition | Source | License | Features | Attachments | Counts | Detail |
|
||||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
| [King James (Authorized) Version](docs/resources/kjv-eng-kjv2006.md) | translation | English (eng) - archaic British | 1611; 1769 edition | eBible.org | Public Domain (redistributable) | Bible text, Strong's-linked words, USFM source, Strong's dictionary lookup | Strong's links, Strong's dictionary lookup, future: study_notes, future: commentary, future: cross_references, future: morphology, future: lemma_links, future: lexicon, future: dictionary, future: maps, future: timeline, future: media | 66 books, 31102 verses, 348884 Strong's links | [Details](docs/resources/kjv-eng-kjv2006.md) |
|
| [King James (Authorized) Version](docs/resources/kjv-eng-kjv2006.md) | translation | English (eng) - archaic British | 1611; 1769 edition | eBible.org | Public Domain (redistributable) | Bible text, Strong's-linked words, USFM source, Strong's dictionary lookup, Translator footnotes | Strong's links, Strong's dictionary lookup, Translator footnotes, future: study_notes, future: commentary, future: cross_references, future: morphology, future: lemma_links, future: lexicon, future: dictionary, future: maps, future: timeline, future: media | 66 books, 31102 verses, 348884 Strong's links, 6959 footnotes | [Details](docs/resources/kjv-eng-kjv2006.md) |
|
||||||
| [Strong's Hebrew and Greek Dictionaries](docs/resources/strongs-open-scriptures.md) | lexicon | English (eng) | n/a | Open Scriptures | CC-BY-SA digital edition; original Strong's dictionaries public domain (redistributable) | Strong's dictionary entries, Hebrew and Aramaic entries, Greek entries | Strong's number definitions, future: morphology, future: lemma_links | 14197 dictionary entries | [Details](docs/resources/strongs-open-scriptures.md) |
|
| [Strong's Hebrew and Greek Dictionaries](docs/resources/strongs-open-scriptures.md) | lexicon | English (eng) | n/a | Open Scriptures | CC-BY-SA digital edition; original Strong's dictionaries public domain (redistributable) | Strong's dictionary entries, Hebrew and Aramaic entries, Greek entries | Strong's number definitions, future: morphology, future: lemma_links | 14197 dictionary entries | [Details](docs/resources/strongs-open-scriptures.md) |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# King James (Authorized) Version
|
# King James (Authorized) Version
|
||||||
|
|
||||||
Public-domain KJV package based on the 1769 standardized text, with Strong's numbers embedded in the source USFM.
|
Public-domain KJV package based on the 1769 standardized text, with Strong's numbers and translator footnotes embedded in the source USFM.
|
||||||
|
|
||||||
## Identity
|
## Identity
|
||||||
|
|
||||||
@@ -51,12 +51,14 @@ Public-domain KJV package based on the 1769 standardized text, with Strong's num
|
|||||||
- Strong's-linked words: concordance_links; languages: hebrew, aramaic, greek; systems: strongs; embedded; package: packages/json/kjv-eng-kjv2006/strongs-links.jsonl
|
- Strong's-linked words: concordance_links; languages: hebrew, aramaic, greek; systems: strongs; embedded; package: packages/json/kjv-eng-kjv2006/strongs-links.jsonl
|
||||||
- USFM source: source_format; format: usfm
|
- USFM source: source_format; format: usfm
|
||||||
- Strong's dictionary lookup: lexicon_lookup; languages: hebrew, aramaic, greek, eng; systems: strongs; package: packages/json/strongs-open-scriptures/entries.jsonl
|
- Strong's dictionary lookup: lexicon_lookup; languages: hebrew, aramaic, greek, eng; systems: strongs; package: packages/json/strongs-open-scriptures/entries.jsonl
|
||||||
|
- Translator footnotes: footnotes; languages: eng; embedded; package: packages/json/kjv-eng-kjv2006/footnotes.jsonl
|
||||||
|
|
||||||
## Attachments
|
## Attachments
|
||||||
|
|
||||||
Included:
|
Included:
|
||||||
- Strong's links: concordance_links; word-to-strongs; anchors: verse, word, strongs_number; languages: hebrew, aramaic, greek; systems: strongs; package: packages/json/kjv-eng-kjv2006/strongs-links.jsonl
|
- Strong's links: concordance_links; word-to-strongs; anchors: verse, word, strongs_number; languages: hebrew, aramaic, greek; systems: strongs; package: packages/json/kjv-eng-kjv2006/strongs-links.jsonl
|
||||||
- Strong's dictionary lookup: lexicon; strongs-number-to-definition; anchors: strongs_number, word; languages: hebrew, aramaic, greek, eng; systems: strongs; package: packages/json/strongs-open-scriptures/entries.jsonl
|
- Strong's dictionary lookup: lexicon; strongs-number-to-definition; anchors: strongs_number, word; languages: hebrew, aramaic, greek, eng; systems: strongs; package: packages/json/strongs-open-scriptures/entries.jsonl
|
||||||
|
- Translator footnotes: footnotes; verse-to-footnote; anchors: verse; languages: eng; package: packages/json/kjv-eng-kjv2006/footnotes.jsonl
|
||||||
|
|
||||||
Supported future attachment types:
|
Supported future attachment types:
|
||||||
- study_notes
|
- study_notes
|
||||||
@@ -75,6 +77,7 @@ Supported future attachment types:
|
|||||||
- Package catalog: packages/json/kjv-eng-kjv2006/catalog.json
|
- Package catalog: packages/json/kjv-eng-kjv2006/catalog.json
|
||||||
- Verses JSONL: packages/json/kjv-eng-kjv2006/verses.jsonl
|
- Verses JSONL: packages/json/kjv-eng-kjv2006/verses.jsonl
|
||||||
- Strong's links JSONL: packages/json/kjv-eng-kjv2006/strongs-links.jsonl
|
- Strong's links JSONL: packages/json/kjv-eng-kjv2006/strongs-links.jsonl
|
||||||
|
- Footnotes JSONL: packages/json/kjv-eng-kjv2006/footnotes.jsonl
|
||||||
- Entries JSONL: n/a
|
- Entries JSONL: n/a
|
||||||
- Source SHA-256: 4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d
|
- Source SHA-256: 4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d
|
||||||
- Last checked: 2026-07-12T02:18:30Z
|
- Last checked: 2026-07-12T02:18:30Z
|
||||||
@@ -84,6 +87,7 @@ Supported future attachment types:
|
|||||||
- Books: 66
|
- Books: 66
|
||||||
- Verses: 31102
|
- Verses: 31102
|
||||||
- Strong's links: 348884
|
- Strong's links: 348884
|
||||||
|
- Footnotes: 6959
|
||||||
- Entries: n/a
|
- Entries: n/a
|
||||||
- Commentary entries: n/a
|
- Commentary entries: n/a
|
||||||
- Dictionary entries: n/a
|
- Dictionary entries: n/a
|
||||||
@@ -92,3 +96,4 @@ Supported future attachment types:
|
|||||||
|
|
||||||
- verses_jsonl: `verses.jsonl` (e3102f854a99c4788ed259ec61cb93fea830845c0788c8c0929bc77e9db6ca10)
|
- verses_jsonl: `verses.jsonl` (e3102f854a99c4788ed259ec61cb93fea830845c0788c8c0929bc77e9db6ca10)
|
||||||
- strongs_jsonl: `strongs-links.jsonl` (fa9702224776509275ea17fb245cb72150f1c262c4fbe44c7161e8e83866c779)
|
- strongs_jsonl: `strongs-links.jsonl` (fa9702224776509275ea17fb245cb72150f1c262c4fbe44c7161e8e83866c779)
|
||||||
|
- footnotes_jsonl: `footnotes.jsonl` (a0ae3a83ffa82a9a8a7859cfed9488ea58233d81990d2557199a770fcfe688c2)
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ Supported future attachment types:
|
|||||||
- Package catalog: packages/json/strongs-open-scriptures/catalog.json
|
- Package catalog: packages/json/strongs-open-scriptures/catalog.json
|
||||||
- Verses JSONL: n/a
|
- Verses JSONL: n/a
|
||||||
- Strong's links JSONL: n/a
|
- Strong's links JSONL: n/a
|
||||||
|
- Footnotes JSONL: n/a
|
||||||
- Entries JSONL: packages/json/strongs-open-scriptures/entries.jsonl
|
- Entries JSONL: packages/json/strongs-open-scriptures/entries.jsonl
|
||||||
- Source SHA-256: 04a2d6d0a13d75f17e562998bba7491beeed5a149909f904d12dd80aa1e47037
|
- Source SHA-256: 04a2d6d0a13d75f17e562998bba7491beeed5a149909f904d12dd80aa1e47037
|
||||||
- Last checked: 2026-07-12T12:37:00Z
|
- Last checked: 2026-07-12T12:37:00Z
|
||||||
@@ -74,6 +75,7 @@ Supported future attachment types:
|
|||||||
- Books: n/a
|
- Books: n/a
|
||||||
- Verses: n/a
|
- Verses: n/a
|
||||||
- Strong's links: n/a
|
- Strong's links: n/a
|
||||||
|
- Footnotes: n/a
|
||||||
- Entries: 14197
|
- Entries: 14197
|
||||||
- Commentary entries: n/a
|
- Commentary entries: n/a
|
||||||
- Dictionary entries: 14197
|
- Dictionary entries: 14197
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "libre-bible-data",
|
"name": "libre-bible-data",
|
||||||
"version": "0.1.6",
|
"version": "0.1.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "libre-bible-data",
|
"name": "libre-bible-data",
|
||||||
"version": "0.1.6",
|
"version": "0.1.7",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"adm-zip": "^0.5.16"
|
"adm-zip": "^0.5.16"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "libre-bible-data",
|
"name": "libre-bible-data",
|
||||||
"version": "0.1.6",
|
"version": "0.1.7",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"schema_version": "librebible.index-catalog.v1",
|
"schema_version": "librebible.index-catalog.v1",
|
||||||
"project": "LibreBible",
|
"project": "LibreBible",
|
||||||
"generated_at": "2026-07-12T12:40:40.189Z",
|
"generated_at": "2026-07-12T14:08:30.649Z",
|
||||||
"resources": [
|
"resources": [
|
||||||
{
|
{
|
||||||
"id": "kjv-eng-kjv2006",
|
"id": "kjv-eng-kjv2006",
|
||||||
@@ -89,6 +89,16 @@
|
|||||||
],
|
],
|
||||||
"embedded": false,
|
"embedded": false,
|
||||||
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "translator-footnotes",
|
||||||
|
"type": "footnotes",
|
||||||
|
"label": "Translator footnotes",
|
||||||
|
"languages": [
|
||||||
|
"eng"
|
||||||
|
],
|
||||||
|
"embedded": true,
|
||||||
|
"package": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"attachments": {
|
"attachments": {
|
||||||
@@ -134,6 +144,20 @@
|
|||||||
],
|
],
|
||||||
"source": "LibreBible resource strongs-open-scriptures.",
|
"source": "LibreBible resource strongs-open-scriptures.",
|
||||||
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kjv-eng-kjv2006-footnotes",
|
||||||
|
"resource_type": "footnotes",
|
||||||
|
"label": "Translator footnotes",
|
||||||
|
"relationship": "verse-to-footnote",
|
||||||
|
"anchor_types": [
|
||||||
|
"verse"
|
||||||
|
],
|
||||||
|
"languages": [
|
||||||
|
"eng"
|
||||||
|
],
|
||||||
|
"source": "Embedded in the eBible USFM package.",
|
||||||
|
"package": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"supported_future_types": [
|
"supported_future_types": [
|
||||||
@@ -184,9 +208,10 @@
|
|||||||
"primary_features": [
|
"primary_features": [
|
||||||
"Bible text",
|
"Bible text",
|
||||||
"Strong's-linked words",
|
"Strong's-linked words",
|
||||||
|
"Translator footnotes",
|
||||||
"USFM source"
|
"USFM source"
|
||||||
],
|
],
|
||||||
"summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers embedded in the source USFM."
|
"summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers and translator footnotes embedded in the source USFM."
|
||||||
},
|
},
|
||||||
"package_path": "packages/json/kjv-eng-kjv2006/catalog.json",
|
"package_path": "packages/json/kjv-eng-kjv2006/catalog.json",
|
||||||
"source_manifest_path": "sources/kjv-eng-kjv2006.json",
|
"source_manifest_path": "sources/kjv-eng-kjv2006.json",
|
||||||
@@ -194,7 +219,8 @@
|
|||||||
"counts": {
|
"counts": {
|
||||||
"books": 66,
|
"books": 66,
|
||||||
"verses": 31102,
|
"verses": 31102,
|
||||||
"strongs_links": 348884
|
"strongs_links": 348884,
|
||||||
|
"footnotes": 6959
|
||||||
},
|
},
|
||||||
"files": {
|
"files": {
|
||||||
"verses_jsonl": {
|
"verses_jsonl": {
|
||||||
@@ -206,6 +232,11 @@
|
|||||||
"path": "strongs-links.jsonl",
|
"path": "strongs-links.jsonl",
|
||||||
"bytes": 62690394,
|
"bytes": 62690394,
|
||||||
"sha256": "fa9702224776509275ea17fb245cb72150f1c262c4fbe44c7161e8e83866c779"
|
"sha256": "fa9702224776509275ea17fb245cb72150f1c262c4fbe44c7161e8e83866c779"
|
||||||
|
},
|
||||||
|
"footnotes_jsonl": {
|
||||||
|
"path": "footnotes.jsonl",
|
||||||
|
"bytes": 1371923,
|
||||||
|
"sha256": "a0ae3a83ffa82a9a8a7859cfed9488ea58233d81990d2557199a770fcfe688c2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"checks": {
|
"checks": {
|
||||||
|
|||||||
@@ -86,6 +86,16 @@
|
|||||||
],
|
],
|
||||||
"embedded": false,
|
"embedded": false,
|
||||||
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "translator-footnotes",
|
||||||
|
"type": "footnotes",
|
||||||
|
"label": "Translator footnotes",
|
||||||
|
"languages": [
|
||||||
|
"eng"
|
||||||
|
],
|
||||||
|
"embedded": true,
|
||||||
|
"package": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"attachments": {
|
"attachments": {
|
||||||
@@ -131,6 +141,20 @@
|
|||||||
],
|
],
|
||||||
"source": "LibreBible resource strongs-open-scriptures.",
|
"source": "LibreBible resource strongs-open-scriptures.",
|
||||||
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kjv-eng-kjv2006-footnotes",
|
||||||
|
"resource_type": "footnotes",
|
||||||
|
"label": "Translator footnotes",
|
||||||
|
"relationship": "verse-to-footnote",
|
||||||
|
"anchor_types": [
|
||||||
|
"verse"
|
||||||
|
],
|
||||||
|
"languages": [
|
||||||
|
"eng"
|
||||||
|
],
|
||||||
|
"source": "Embedded in the eBible USFM package.",
|
||||||
|
"package": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"supported_future_types": [
|
"supported_future_types": [
|
||||||
@@ -181,15 +205,16 @@
|
|||||||
"primary_features": [
|
"primary_features": [
|
||||||
"Bible text",
|
"Bible text",
|
||||||
"Strong's-linked words",
|
"Strong's-linked words",
|
||||||
|
"Translator footnotes",
|
||||||
"USFM source"
|
"USFM source"
|
||||||
],
|
],
|
||||||
"summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers embedded in the source USFM."
|
"summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers and translator footnotes embedded in the source USFM."
|
||||||
},
|
},
|
||||||
"importer": {
|
"importer": {
|
||||||
"name": "scripts/import-usfm.js",
|
"name": "scripts/import-usfm.js",
|
||||||
"version": "0.1.0"
|
"version": "0.1.0"
|
||||||
},
|
},
|
||||||
"generated_at": "2026-07-12T12:40:38.744Z",
|
"generated_at": "2026-07-12T14:08:28.582Z",
|
||||||
"source_sha256": "4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d",
|
"source_sha256": "4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d",
|
||||||
"checks": {
|
"checks": {
|
||||||
"expected_sha256": "4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d",
|
"expected_sha256": "4ea6952590d070bfa22985aded48a49581e31b568a60aa09e25f73462e700e7d",
|
||||||
@@ -198,7 +223,8 @@
|
|||||||
"counts": {
|
"counts": {
|
||||||
"books": 66,
|
"books": 66,
|
||||||
"verses": 31102,
|
"verses": 31102,
|
||||||
"strongs_links": 348884
|
"strongs_links": 348884,
|
||||||
|
"footnotes": 6959
|
||||||
},
|
},
|
||||||
"files": {
|
"files": {
|
||||||
"verses_jsonl": {
|
"verses_jsonl": {
|
||||||
@@ -210,6 +236,11 @@
|
|||||||
"path": "strongs-links.jsonl",
|
"path": "strongs-links.jsonl",
|
||||||
"bytes": 62690394,
|
"bytes": 62690394,
|
||||||
"sha256": "fa9702224776509275ea17fb245cb72150f1c262c4fbe44c7161e8e83866c779"
|
"sha256": "fa9702224776509275ea17fb245cb72150f1c262c4fbe44c7161e8e83866c779"
|
||||||
|
},
|
||||||
|
"footnotes_jsonl": {
|
||||||
|
"path": "footnotes.jsonl",
|
||||||
|
"bytes": 1371923,
|
||||||
|
"sha256": "a0ae3a83ffa82a9a8a7859cfed9488ea58233d81990d2557199a770fcfe688c2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -135,7 +135,7 @@
|
|||||||
"version": "0.1.0"
|
"version": "0.1.0"
|
||||||
},
|
},
|
||||||
"source_manifest_file": "strongs-open-scriptures.json",
|
"source_manifest_file": "strongs-open-scriptures.json",
|
||||||
"generated_at": "2026-07-12T12:40:40.189Z",
|
"generated_at": "2026-07-12T14:08:30.649Z",
|
||||||
"source_sha256": "04a2d6d0a13d75f17e562998bba7491beeed5a149909f904d12dd80aa1e47037",
|
"source_sha256": "04a2d6d0a13d75f17e562998bba7491beeed5a149909f904d12dd80aa1e47037",
|
||||||
"checks": {
|
"checks": {
|
||||||
"expected_sha256": "04a2d6d0a13d75f17e562998bba7491beeed5a149909f904d12dd80aa1e47037",
|
"expected_sha256": "04a2d6d0a13d75f17e562998bba7491beeed5a149909f904d12dd80aa1e47037",
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ function resourceDetailMarkdown(manifest, packageCatalog) {
|
|||||||
`- Package catalog: ${manifest.packages?.json_catalog ?? 'n/a'}`,
|
`- Package catalog: ${manifest.packages?.json_catalog ?? 'n/a'}`,
|
||||||
`- Verses JSONL: ${manifest.packages?.verses_jsonl ?? 'n/a'}`,
|
`- Verses JSONL: ${manifest.packages?.verses_jsonl ?? 'n/a'}`,
|
||||||
`- Strong\'s links JSONL: ${manifest.packages?.strongs_jsonl ?? 'n/a'}`,
|
`- Strong\'s links JSONL: ${manifest.packages?.strongs_jsonl ?? 'n/a'}`,
|
||||||
|
`- Footnotes JSONL: ${manifest.packages?.footnotes_jsonl ?? 'n/a'}`,
|
||||||
`- Entries JSONL: ${manifest.packages?.entries_jsonl ?? 'n/a'}`,
|
`- Entries JSONL: ${manifest.packages?.entries_jsonl ?? 'n/a'}`,
|
||||||
`- Source SHA-256: ${packageCatalog?.source_sha256 ?? manifest.checks?.expected_sha256 ?? 'n/a'}`,
|
`- Source SHA-256: ${packageCatalog?.source_sha256 ?? manifest.checks?.expected_sha256 ?? 'n/a'}`,
|
||||||
`- Last checked: ${manifest.checks?.last_checked_at ?? 'n/a'}`,
|
`- Last checked: ${manifest.checks?.last_checked_at ?? 'n/a'}`,
|
||||||
@@ -138,6 +139,7 @@ function resourceDetailMarkdown(manifest, packageCatalog) {
|
|||||||
`- Books: ${packageCatalog?.counts?.books ?? 'n/a'}`,
|
`- Books: ${packageCatalog?.counts?.books ?? 'n/a'}`,
|
||||||
`- Verses: ${packageCatalog?.counts?.verses ?? 'n/a'}`,
|
`- Verses: ${packageCatalog?.counts?.verses ?? 'n/a'}`,
|
||||||
`- Strong\'s links: ${packageCatalog?.counts?.strongs_links ?? 'n/a'}`,
|
`- Strong\'s links: ${packageCatalog?.counts?.strongs_links ?? 'n/a'}`,
|
||||||
|
`- Footnotes: ${packageCatalog?.counts?.footnotes ?? 'n/a'}`,
|
||||||
`- Entries: ${packageCatalog?.counts?.entries ?? 'n/a'}`,
|
`- Entries: ${packageCatalog?.counts?.entries ?? 'n/a'}`,
|
||||||
`- Commentary entries: ${packageCatalog?.counts?.commentary_entries ?? 'n/a'}`,
|
`- Commentary entries: ${packageCatalog?.counts?.commentary_entries ?? 'n/a'}`,
|
||||||
`- Dictionary entries: ${packageCatalog?.counts?.dictionary_entries ?? 'n/a'}`,
|
`- Dictionary entries: ${packageCatalog?.counts?.dictionary_entries ?? 'n/a'}`,
|
||||||
@@ -198,6 +200,7 @@ function countsLabel(packageCatalog) {
|
|||||||
counts.books != null ? `${counts.books} books` : null,
|
counts.books != null ? `${counts.books} books` : null,
|
||||||
counts.verses != null ? `${counts.verses} verses` : null,
|
counts.verses != null ? `${counts.verses} verses` : null,
|
||||||
counts.strongs_links != null ? `${counts.strongs_links} Strong's links` : null,
|
counts.strongs_links != null ? `${counts.strongs_links} Strong's links` : null,
|
||||||
|
counts.footnotes != null ? `${counts.footnotes} footnotes` : null,
|
||||||
counts.commentary_entries != null ? `${counts.commentary_entries} commentary entries` : null,
|
counts.commentary_entries != null ? `${counts.commentary_entries} commentary entries` : null,
|
||||||
counts.dictionary_entries != null ? `${counts.dictionary_entries} dictionary entries` : null,
|
counts.dictionary_entries != null ? `${counts.dictionary_entries} dictionary entries` : null,
|
||||||
counts.entries != null && counts.commentary_entries == null && counts.dictionary_entries == null ? `${counts.entries} entries` : null,
|
counts.entries != null && counts.commentary_entries == null && counts.dictionary_entries == null ? `${counts.entries} entries` : null,
|
||||||
|
|||||||
@@ -43,7 +43,9 @@ const usfmEntries = zip
|
|||||||
|
|
||||||
const verses = []
|
const verses = []
|
||||||
const strongsLinks = []
|
const strongsLinks = []
|
||||||
|
const footnotes = []
|
||||||
let tokenId = 1
|
let tokenId = 1
|
||||||
|
let footnoteId = 1
|
||||||
|
|
||||||
for (const entry of usfmEntries) {
|
for (const entry of usfmEntries) {
|
||||||
const filePath = path.join(extractDir, entry.entryName)
|
const filePath = path.join(extractDir, entry.entryName)
|
||||||
@@ -68,6 +70,7 @@ for (const entry of usfmEntries) {
|
|||||||
const raw = verseMatch[2]
|
const raw = verseMatch[2]
|
||||||
const verseId = `${bookId}.${chapter}.${verseNumber}`
|
const verseId = `${bookId}.${chapter}.${verseNumber}`
|
||||||
const links = [...raw.matchAll(/\\\+?w\s+([^|\\]+)\|strong="([^"]+)"\\\+?w\*/g)]
|
const links = [...raw.matchAll(/\\\+?w\s+([^|\\]+)\|strong="([^"]+)"\\\+?w\*/g)]
|
||||||
|
const notes = extractFootnotes(raw)
|
||||||
const text = cleanUsfmText(raw.replace(/\\\+?w\s+([^|\\]+)\|strong="([^"]+)"\\\+?w\*/g, '$1'))
|
const text = cleanUsfmText(raw.replace(/\\\+?w\s+([^|\\]+)\|strong="([^"]+)"\\\+?w\*/g, '$1'))
|
||||||
|
|
||||||
verses.push({
|
verses.push({
|
||||||
@@ -95,6 +98,21 @@ for (const entry of usfmEntries) {
|
|||||||
strong: normalizeStrong(link[2]),
|
strong: normalizeStrong(link[2]),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const [index, note] of notes.entries()) {
|
||||||
|
footnotes.push({
|
||||||
|
id: footnoteId++,
|
||||||
|
verse_id: verseId,
|
||||||
|
translation_id: manifest.id,
|
||||||
|
book_id: bookId,
|
||||||
|
chapter,
|
||||||
|
verse: verseNumber,
|
||||||
|
note_index: index + 1,
|
||||||
|
caller: note.caller,
|
||||||
|
reference: note.reference || `${chapter}.${verseNumber}`,
|
||||||
|
text: note.text,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,9 +127,15 @@ await writeFile(
|
|||||||
`${strongsLinks.map((link) => JSON.stringify(link)).join('\n')}\n`,
|
`${strongsLinks.map((link) => JSON.stringify(link)).join('\n')}\n`,
|
||||||
'utf8',
|
'utf8',
|
||||||
)
|
)
|
||||||
|
await writeFile(
|
||||||
|
path.join(outputDir, 'footnotes.jsonl'),
|
||||||
|
`${footnotes.map((note) => JSON.stringify(note)).join('\n')}\n`,
|
||||||
|
'utf8',
|
||||||
|
)
|
||||||
|
|
||||||
const versesPackage = await packageFile(outputDir, 'verses.jsonl')
|
const versesPackage = await packageFile(outputDir, 'verses.jsonl')
|
||||||
const strongsPackage = await packageFile(outputDir, 'strongs-links.jsonl')
|
const strongsPackage = await packageFile(outputDir, 'strongs-links.jsonl')
|
||||||
|
const footnotesPackage = await packageFile(outputDir, 'footnotes.jsonl')
|
||||||
|
|
||||||
const catalog = {
|
const catalog = {
|
||||||
schema_version: 'librebible.resource-catalog.v1',
|
schema_version: 'librebible.resource-catalog.v1',
|
||||||
@@ -140,10 +164,12 @@ const catalog = {
|
|||||||
books: new Set(verses.map((verse) => verse.book_id)).size,
|
books: new Set(verses.map((verse) => verse.book_id)).size,
|
||||||
verses: verses.length,
|
verses: verses.length,
|
||||||
strongs_links: strongsLinks.length,
|
strongs_links: strongsLinks.length,
|
||||||
|
footnotes: footnotes.length,
|
||||||
},
|
},
|
||||||
files: {
|
files: {
|
||||||
verses_jsonl: versesPackage,
|
verses_jsonl: versesPackage,
|
||||||
strongs_jsonl: strongsPackage,
|
strongs_jsonl: strongsPackage,
|
||||||
|
footnotes_jsonl: footnotesPackage,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,6 +208,25 @@ await writeJson(path.join(root, 'packages', 'json', 'catalog.json'), {
|
|||||||
|
|
||||||
console.log(`${manifest.id}: imported ${catalog.counts.verses} verses`)
|
console.log(`${manifest.id}: imported ${catalog.counts.verses} verses`)
|
||||||
console.log(`${manifest.id}: imported ${catalog.counts.strongs_links} Strong's links`)
|
console.log(`${manifest.id}: imported ${catalog.counts.strongs_links} Strong's links`)
|
||||||
|
console.log(`${manifest.id}: imported ${catalog.counts.footnotes} footnotes`)
|
||||||
|
|
||||||
|
function extractFootnotes(raw) {
|
||||||
|
return [...raw.matchAll(/\\f\s+([\s\S]*?)\\f\*/g)]
|
||||||
|
.map((match) => {
|
||||||
|
const content = match[1]
|
||||||
|
const caller = /^([+\w-]+)/.exec(content.trim())?.[1] ?? '+'
|
||||||
|
const reference = /\\fr\s+([^\\]+)/.exec(content)?.[1]?.trim() ?? ''
|
||||||
|
const textSource = content
|
||||||
|
.replace(/^([+\w-]+)/, '')
|
||||||
|
.replace(/\\fr\s+[^\\]+/, '')
|
||||||
|
return {
|
||||||
|
caller,
|
||||||
|
reference,
|
||||||
|
text: cleanUsfmText(textSource),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter((note) => note.text.length > 0)
|
||||||
|
}
|
||||||
|
|
||||||
async function packageFile(outputDir, fileName) {
|
async function packageFile(outputDir, fileName) {
|
||||||
const filePath = path.join(outputDir, fileName)
|
const filePath = path.join(outputDir, fileName)
|
||||||
|
|||||||
@@ -59,6 +59,11 @@ export function normalizeStrong(value) {
|
|||||||
|
|
||||||
export function cleanUsfmText(input) {
|
export function cleanUsfmText(input) {
|
||||||
return input
|
return input
|
||||||
|
.replace(/…/g, '...')
|
||||||
|
.replace(/…/g, '...')
|
||||||
|
.replace(/’/g, "'")
|
||||||
|
.replace(/“/g, '"')
|
||||||
|
.replace(/â€/g, '"')
|
||||||
.replace(/\\f [\s\S]*?\\f\*/g, '')
|
.replace(/\\f [\s\S]*?\\f\*/g, '')
|
||||||
.replace(/\\x [\s\S]*?\\x\*/g, '')
|
.replace(/\\x [\s\S]*?\\x\*/g, '')
|
||||||
.replace(/\\add\s+([^\\]+)\\add\*/g, '$1')
|
.replace(/\\add\s+([^\\]+)\\add\*/g, '$1')
|
||||||
|
|||||||
@@ -67,6 +67,14 @@
|
|||||||
"systems": ["strongs"],
|
"systems": ["strongs"],
|
||||||
"embedded": false,
|
"embedded": false,
|
||||||
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "translator-footnotes",
|
||||||
|
"type": "footnotes",
|
||||||
|
"label": "Translator footnotes",
|
||||||
|
"languages": ["eng"],
|
||||||
|
"embedded": true,
|
||||||
|
"package": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"attachments": {
|
"attachments": {
|
||||||
@@ -92,6 +100,16 @@
|
|||||||
"systems": ["strongs"],
|
"systems": ["strongs"],
|
||||||
"source": "LibreBible resource strongs-open-scriptures.",
|
"source": "LibreBible resource strongs-open-scriptures.",
|
||||||
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
"package": "packages/json/strongs-open-scriptures/entries.jsonl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kjv-eng-kjv2006-footnotes",
|
||||||
|
"resource_type": "footnotes",
|
||||||
|
"label": "Translator footnotes",
|
||||||
|
"relationship": "verse-to-footnote",
|
||||||
|
"anchor_types": ["verse"],
|
||||||
|
"languages": ["eng"],
|
||||||
|
"source": "Embedded in the eBible USFM package.",
|
||||||
|
"package": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"supported_future_types": [
|
"supported_future_types": [
|
||||||
@@ -147,10 +165,11 @@
|
|||||||
"packages": {
|
"packages": {
|
||||||
"json_catalog": "packages/json/kjv-eng-kjv2006/catalog.json",
|
"json_catalog": "packages/json/kjv-eng-kjv2006/catalog.json",
|
||||||
"verses_jsonl": "packages/json/kjv-eng-kjv2006/verses.jsonl",
|
"verses_jsonl": "packages/json/kjv-eng-kjv2006/verses.jsonl",
|
||||||
"strongs_jsonl": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl"
|
"strongs_jsonl": "packages/json/kjv-eng-kjv2006/strongs-links.jsonl",
|
||||||
|
"footnotes_jsonl": "packages/json/kjv-eng-kjv2006/footnotes.jsonl"
|
||||||
},
|
},
|
||||||
"catalog_display": {
|
"catalog_display": {
|
||||||
"primary_features": ["Bible text", "Strong's-linked words", "USFM source"],
|
"primary_features": ["Bible text", "Strong's-linked words", "Translator footnotes", "USFM source"],
|
||||||
"summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers embedded in the source USFM."
|
"summary": "Public-domain KJV package based on the 1769 standardized text, with Strong's numbers and translator footnotes embedded in the source USFM."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user