@ozarkoc/chordpro-parser
Version:
A browser-friendly bundled version of chordproject-parser
135 lines (94 loc) • 3 kB
Markdown
# ChordProject Parser
A TypeScript library for parsing, transposing and formatting ChordPro songs.
## Overview
Parse any ChordPro song by using the **ChordProParser**.
This gives back a *Song* object that can then be transposed with the **Transposer** or formatted with the **ChordProFormatter**.
**Part of [ChordProject](https://chordproject.com/)**
## Usage
### Setup
To install run:
```sh
$ npm i chordproject-parser
```
Load with `import`:
```typescript
import { ChordProParser } from "chordproject-parser";
```
### Parser
To use the ChordProParser:
```typescript
const parser = new ChordProParser();
const song = parser.parse(chordSheet);
```
*chordSheet* is a string variable that contains the raw ChordPro song.
### Formatter
You can choose between 3 formatters:
- **TextFormatter**: output the song as text
- **HtmlFormatter**: output the song as HTML
- **ChordProFormatter**: output the song as a "cleaned" ChordPro
```typescript
const formatter = new HtmlFormatter();
const songText = formatter.format(song);
```
The formatters have default settings.
You can pass the settings in the formatter's constructor...
```typescript
const settings = new FormatterSettings();
settings.showChords = false;
const formatter = new HtmlFormatter(settings);
```
...or directly change the settings after the initialization
```typescript
const formatter = new HtmlFormatter();
formatter.settings.showChords = false;
```
## ChordPro format: Lyrics and Chords
Essentially, it looks like this:
```
{title: Praise Adonai}
{artist: Paul Baloche}
{sot}
E|-----2---2-----|-------3-3---
B|---3---3---3---|-----0-------
G|-2-------------|---0---------
D|---------------|---0---------
A|---------------|-2-----------
E|---------------|-------------
{eot}
[Am]Who is like [F]Him,
The Lion and the [C]Lamb
Seated on the [G]throne [E7]
[Am]Mountains bow [F]down
Every ocean [C]roars
To the Lord of [G]hosts
{start_of_chorus}
[F]Praise Ado[Am]nai
From the [G]rising of the sun
'Till the [Dm7]end of every [F]day[G]
[F]Praise Ado[Am]nai
All the [G]nations of the earth
All the [Dm7] Angels and the [F]Saints
[G]Sing [Bbsus2]praise
{end_of_chorus}
```
# With source code
## Demo
To start the demo:
```sh
$ npm run start
```
...then click on the http://localhost:8081/ link to open the demo in your browser
## Unit test
You can add tests in the tests directory and execute them with
```sh
$ npm run test
```
or for the coverage
```sh
$ npm run test:ci
```
## Contributing
This project welcomes contributions of all types. If you find any bug or want some new features, please feel free to create an issue or submit a pull request.
Join the community and chat with us on **[Discord](https://discord.gg/ZQAgwBC9c8)**
## License
[GNU License](LICENSE)