Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jackson-nestelroad/daily-bread
TypeScript library for reading the Bible.
https://github.com/jackson-nestelroad/daily-bread
bible bible-gateway
Last synced: about 1 month ago
JSON representation
TypeScript library for reading the Bible.
- Host: GitHub
- URL: https://github.com/jackson-nestelroad/daily-bread
- Owner: jackson-nestelroad
- Created: 2023-04-12T07:01:36.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-25T18:59:04.000Z (about 1 year ago)
- Last Synced: 2024-11-16T00:09:27.218Z (about 2 months ago)
- Topics: bible, bible-gateway
- Language: TypeScript
- Homepage:
- Size: 687 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DailyBread
_This project is not affiliated with [Bible Gateway](http://biblegateway.com)._
**DailyBread** is a TypeScript library for reading the Bible. It is currently implemented by reading from [Bible Gateway](http://biblegateway.com).
```ts
const bible = new DailyBread();
const passage = await bible.getOne('Matt 6:9-13');
console.log(passage.text);
```Output:
```
⁹ “This, then, is how you should pray:“‘Our Father in heaven,
hallowed be your name,
¹⁰ your kingdom come,
your will be done,
on earth as it is in heaven.
¹¹ Give us today our daily bread.
¹² And forgive us our debts,
as we also have forgiven our debtors.
¹³ And lead us not into temptation,
but deliver us from the evil one.’
```## Install
To install, simply run the following command:
```
npm install --save daily-bread
```## Usage
## `DailyBread`
DailyBread provides a simple library for reading one or more passages of the Bible in one of many supported versions. The `DailyBread` class is the primary interface for searching for Bible verses.
### Finding a single passage or verse
You can search for a single passage by string:
```ts
import { DailyBread } from 'daily-bread';const bible = new DailyBread();
const passage = await bible.getOne('Matt 11:28');
console.log(passage.text);
```Output:
```
²⁸ “Come to me, all you who are weary and burdened, and I will give you rest.
```The library will even preserve spacing for poetry:
```ts
const passage = await bible.getOne('Psalm 22:1-2');
console.log(passage.text);
```Output:
```
¹ My God, my God, why have you forsaken me?
Why are you so far from saving me,
so far from my cries of anguish?
² My God, I cry out by day, but you do not answer,
by night, but I find no rest.
```You may also search using a reference object:
```ts
const passages = await bible.getOne({
book: 'Genesis',
from: { chapter: 1, verse: 1 },
to: { chapter: 2, verse: 3 },
});
```The library provides an enumeration for books of the Bible, allowing you to read the Bible completely programmatically:
```ts
import { CanonBook, DailyBread } from 'daily-bread';...
const passage = await bible.getOne({
book: CanonBook.Matthew,
from: { chapter: 5 },
to: { chapter: 7 },
});
```### Finding multiple passages
You can search for multiple passages at a time. As above, searches can be a single string or an array of references:
```ts
const passages = await bible.get('Matthew 7:12;Luke 6:31');
console.log(passages);// Equivalently:
const passages = await bible.get([
{
book: CanonBook.Matthew,
from: { chapter: 7, verse: 12 },
},
{
book: CanonBook.Luke,
from: { chapter: 6, verse: 31 },
},
]);
console.log(passages);
```Output:
```
[
{
reference: 'Matthew 7:12',
text: '¹² So in everything, do to others what you would have them do to you, for this sums up the Law and the Prophets.'
},
{
reference: 'Luke 6:31',
text: '³¹ Do to others as you would have them do to you.'
}
]
```### Verse of the day
You can read the verse of the day with a single method:
```ts
const bible = new DailyBread();
const votd = await bible.votd();
console.log(votd.text);
```### Setting Bible version
`DailyBread` currently supports several languages and translations. Language is tied to translation, so setting the Bible version will also use the associated language.
The following languages and translations are supported:
- **English:** CEB, ESV, KJV, LEB, MSG,NIV, NKJV, NLT.
- **Spanish:** NTV, NVI, RVC, RVR1960, RVA.
- **Chinese:** CCB, CCBT, CNVS, CNVT, CUVS, CUV, CUVMPS, CUVMPT.
- **Korean:** KLB.
- **Japanese:** JLB.
- **Portuguese:** ARC, NVT, NVI-PT.
- **French:** LSG, NEG1979.
- **German:** HOF, LUTH1545.
- **Italian:** CEI, NR2006.
- **Hindi:** ERV-HI.The version currently being read can be changed directly on the `DailyBread` object:
```ts
// Check if version is supported before setting.
if (bible.isSupportedVersion('NLT')) {
bible.setVersion('NLT');
}// Set version directly.
bible.setVersion('esv');
```### Customizing passage formatting
There are several options for customizing the format of your passages:
```ts
bible.setFormatting({
showVerseNumbers: false,
preserveSmallCaps: true,
});
const passage = bible.getOne('Ex 3:14');
console.log(passage);
```Output:
```
{
reference: 'Exodus 3:14',
text: 'God said to Moses, “I AM WHO I AM. This is what you are to say to the Israelites: ‘I AM has sent me to you.’”'
}
```## `BibleGatewayWebScraper`
The `DailyBread` class is intended to be a standard library for reading the Bible programmatically. For more flexibility, you may use the `BibleGatewayWebScraper` directly, which allows direct access to the Bible Gateway website.
```ts
const scraper = new BibleGatewayWebScraper('ESV');
const passages = await scraper.passages('1 cor 13:4;gal 6:9');
console.log(passages);
```Output:
```
[
{
reference: '1 Corinthians 13:4',
text: '⁴ Love is patient and kind; love does not envy or boast; it is not arrogant'
},
{
reference: 'Galatians 6:9',
text: '⁹ And let us not grow weary of doing good, for in due season we will reap, if we do not give up.'
}
]
```## CLI
A CLI that uses DailyBread comes bundled with the NPM package. It can be called from the command line using `npx daily-bread`.
```
npx daily-bread -v esv rom 12npx daily-bread book acts of the apostles
npx daily-bread books
```## Features
- `DailyBread` class
- Read one or more passages from the Bible from a supported version with customizable formatting.
- Get information about a canon or deuterocanon book of the Bible.
- Read Verse of the Day.
- `BibleGatewayWebScraper` class
- Read passages from Bible Gateway for any version with customizable formatting.
- Read Verse of the Day.## Planned Features
- Search for verses by word.