forked from Bridgeconn/usfm-grammar
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Draft release notes for stable release
- Loading branch information
1 parent
8863feb
commit b12389e
Showing
1 changed file
with
37 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,42 @@ | ||
# Release Notes | ||
|
||
## Towards Version 3.0.0 | ||
## 3.0.0 | ||
With the 3.x versions, we are transitioning to a [Tree-Sitter](https://tree-sitter.github.io/tree-sitter/) based grammar implementation for usfm-grammar, replacing the [Ohm.js](https://ohmjs.org/) grammar used in the 2.x versions. This upgrade enhances performance, extensibility, and support for complex parsing scenarios. | ||
|
||
1. `tree-sitter-usfm` on NPM | ||
**v3.0.0-alpha.3** | ||
A grammar modelling the USFM language and a parser that can generate a syntax-tree using tree-sitter. Has been tested against USFM/X committee's testsuite for ensuring pass or fail on pasring, via the python module. | ||
#### Variants of USFM-Grammar | ||
We now provide specialized variants of USFM-Grammar tailored for different environments: | ||
* [usfm-grammar](https://pypi.org/project/usfm-grammar/) for Python | ||
* [usfm-grammar](https://www.npmjs.com/package/usfm-grammar) for Node.js | ||
* [usfm-grammar-web](https://www.npmjs.com/package/usfm-grammar-web) for frontend JavaScript and | ||
* A command-line interface (CLI) integrated into the Python package. | ||
|
||
2. `usfm-grammar` on PyPi | ||
**v3.0.0-alpha.5** | ||
A python parser for USFM that uses the `tree-sitter-usfm` grammar implementation. The parser is capable of converting the USFM to other formats like JSON, CSV, USX etc. It can also be used to extract specific contents from the USFM file like just the verses or just the notes. JSON output structure has been updated. Also conversion to USX implemented. Behaviour of filter in the API has be altered. Testing of these features are in progress. | ||
#### Independent Grammar Implementations | ||
For developers working directly with syntax trees, we offer grammar implementations as standalone packages for improved performance: | ||
* [tree-sitter-usfm3](https://pypi.org/project/tree-sitter-usfm3/) for Python, | ||
* [tree-sitter-usfm3](https://www.npmjs.com/package/tree-sitter-usfm3) for Node.js, | ||
* [WASM build](https://cdn.jsdelivr.net/npm/usfm-grammar-web@3.0.0/tree-sitter-usfm.wasm) for fornt-end applications. | ||
|
||
<!-- 3. `language-usfm` on https://atom.io/packages/ | ||
For syntax highlighting and code folding on Atom. | ||
--> | ||
#### USFM-USX-USJ Format Support | ||
Version 3.0.0 expands support across all three formats in the [USFM ecosystem]((https://docs.usfm.bible/usfm/3.1/index.html)): | ||
|
||
* Parse USFM, convert to other formats, and generate USFM from the other two formats. | ||
* Parse USX (XML), convert to other formats, and generate USX from the other two formats. | ||
* Parse USJ (JSON), convert to other formats, and generate USJ from the other two formats. | ||
* Export to additional user-friendly formats such as CSV and BibleNLP. | ||
|
||
|
||
#### Other Features | ||
|
||
* *Marker-Based Filtering*: Simplify the cleanup and reformatting of marker-rich USFM files by specifying markers or marker types to include or exclude. This feature is centered on the USJ format. | ||
* *Error Reporting and Validation*: When initializing a USFMParser with a USFM file, all errors in the file are reported in the USFMParser.errors field. A USJ input can also be validated against its JSON-Schema definition. | ||
* *Error Ignoring Option*: An `ignore_errors=True/False` option is available for format conversion methods, allowing processing of imperfect input files wherever possible. | ||
* *Autofix Errors (Experimental)*: Automatically identifies and fixes common errors in USFM files to streamline processing. | ||
|
||
#### Standards and Testing | ||
|
||
This release adheres to the comprehensive test suite and standards recommended by the USFM/X Technical Committee, ensuring robust validation and compatibility with approved file formats. | ||
|
||
#### Breaking Changes | ||
|
||
* The JSON output schema used in the 2.x versions has been completely replaced with the officially supported USJ format for better compatibility and adherence to standards. | ||
* The APIs in the 2.x Node.js library have been re-designed to support new features and ensure cross-platform consistency. |