{"id":25842192,"url":"https://github.com/joelmon/estienne","last_synced_at":"2026-05-13T06:36:27.730Z","repository":{"id":37292383,"uuid":"505648947","full_name":"JoelMon/Estienne","owner":"JoelMon","description":"Estienne is a simple and easy-to-use library for parsing Biblical verses.","archived":false,"fork":false,"pushed_at":"2024-06-07T20:16:31.000Z","size":81,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-07T21:32:03.227Z","etag":null,"topics":["bible","markdown-parser","notes","nwt","scriptures","study"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JoelMon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-21T01:22:02.000Z","updated_at":"2024-06-07T20:16:35.000Z","dependencies_parsed_at":"2024-06-07T21:31:34.318Z","dependency_job_id":"9b5957b2-8e9c-486f-8a2f-218cfd141df3","html_url":"https://github.com/JoelMon/Estienne","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoelMon%2FEstienne","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoelMon%2FEstienne/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoelMon%2FEstienne/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoelMon%2FEstienne/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JoelMon","download_url":"https://codeload.github.com/JoelMon/Estienne/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241322550,"owners_count":19944073,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bible","markdown-parser","notes","nwt","scriptures","study"],"created_at":"2025-03-01T05:38:18.781Z","updated_at":"2026-05-13T06:36:27.725Z","avatar_url":"https://github.com/JoelMon.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Estienne\n\n\u003cimg src=\"https://user-images.githubusercontent.com/6587811/190536556-aec1ba71-0aef-4878-9c1f-a9727e647083.png\" alt=\"A digital image generated by an AI of a bearded man reading from a large book in the style of medieval painting.\" width=200 align=center\u003e\n\n[![Rust](https://github.com/JoelMon/Estienne/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/JoelMon/Estienne/actions/workflows/rust.yml)\n[![Crates.io](https://img.shields.io/crates/v/estienne.svg)](https://crates.io/crates/estienne)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Project Status: WIP](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip)\n\nEstienne is a Rust library that scans plain text for Bible scriptures and helps you format or link them to online Bibles. It targets apps that work with notes, articles, and transcripts where scripture mentions appear in normal prose. No special markup is required for detecting and manipulating scriptures in text.\n\nEstienne is early-stage software and the API can change. It already ships tested functions for formatting and linking verses and can be used.\n\n## What Estienne Does\n\n- Detect Bible references in a string using a locale-aware parser.\n- Wrap references with custom prefix and postfix text for styling.\n- Turn references into markdown links that point to a specific online Bible (currently JW.org).\n- Return the raw references or their index positions for custom processing.\n\n## The Name\nThe library is named after Robert Estienne, a French theologian of the early Christian era. \nHe is best remembered for being the first to print the New Testament divided with numbered verses. [Read More](https://www.jw.org/finder?wtlocale=E\u0026docid=2016167\u0026srctype=wol\u0026srcid=share\u0026par=14)\n\n\n## API at a glance\n- `surround(text, prefix, postfix) -\u003e Result\u003cString, BibleError\u003e`: wraps each detected reference.\n- `url(\u0026Site, text) -\u003e Result\u003cString, BibleError\u003e`: inserts markdown links to the given site.\n- `get_scriptures(text) -\u003e Result\u003cVec\u003cString\u003e, BibleError\u003e`: returns validated references.\n- `get_locations(text) -\u003e Locations`: returns reference start and end indexes plus the original string.\n\n## Status and roadmap\n- Current focus: stability, better locale coverage, and richer parsing of ranged references.\n- Short term: expand supported locales and improve error messages.\n- Expect breaking changes until a stable release is tagged.\n\n## Installation\n\n```shell\ncargo add estienne\n```\n\n## Examples\n\n### Highlight references inline\n\n```rust\nlet text = \"A popular scripture is John 3:16, it's quoted often.\";\nlet highlighted = est::surround(text, \"\u003cstrong\u003e\", \"\u003c/strong\u003e\").unwrap();\nassert_eq!(\n    highlighted,\n    \"A popular scripture is \u003cstrong\u003eJohn 3:16\u003c/strong\u003e, it's quoted often.\"\n);\n```\n\n### Create markdown links to JW.org\n\n```rust\nuse est::locales::nwt_en::Site::JwOrg;\n\nlet text = \"Read Revelation 21:3-4 for comfort.\";\nlet linked = est::url(\u0026JwOrg, text).unwrap();\nassert_eq!(linked, vec![\"Read [Revelation 21:3-4](https://www.jw.org/en/library/bible/study-bible/books/revelation/21/#v66021003-v66021004) for comfort.\"]);\n```\n\n### Extract scriptures as plain strings\n\n```rust\nlet text = \"Cross reference Psalm 83:18 with Matthew 24:14.\";\nlet refs = est::get_scriptures(text).unwrap();\nassert_eq!(refs, vec![\"Psalm 83:18\", \"Matthew 24:14\"]);\n```\n\n### Get the locations of each scripture found in a string\n\n```rust\nuse est::{get_locations, Locations};\n\nlet text = \"John 3:16 pairs well with 1 John 4:8.\";\nlet locations: Locations = get_locations(text);\nassert_eq!(locations.slices, vec![(0, 9), (24, 35)]);\nassert_eq!(locations.string, text);\n```\n\n## Contributing\nContributions are welcomed, but please be aware that the project is still in a very early phase and large portions of code might change at any moment. Feel free to open an issue if you have any questions, suggestions, or bug reports.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE.txt) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoelmon%2Festienne","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoelmon%2Festienne","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoelmon%2Festienne/lists"}