Javscript implementation of parser for song lyrics writted in ChordPro format.
The solution is based on wonderful tools nearley parser and moo lexer.
Install dependences:
npm install
Compile grammar to js:
npx nearly src/grammar.ns -o src/grammar.js
Start development mode (package is built on each change in source code):
npm run dev
Build package for deploymet:
npm run build
Preamble directives
-
new_song
,ns
Meta-data directives
-
title
,t
-
subtitle
,st
-
artist
-
composer
-
lyricist
-
copyright
-
album
-
year
-
key
-
time
-
tempo
-
duration
-
capo
-
meta
Formatting directives
-
comment
,c
-
comment_italic
,ci
-
comment_box
,cb
-
image
Environment directives
-
start_of_chorus
,soc
-
end_of_chorus
,eoc
-
chorus
-
start_of_verse
-
end_of_verse
-
start_of_tab
,sot)
-
end_of_tab
,eot)
-
start_of_grid
-
end_of_grid
Chord diagrams
-
define
-
chord
Fonts, sizes and colours
-
textfont
-
textsize
-
textcolour
-
chordfont
-
chordsize
-
chordcolour
-
tabfont
-
tabsize
-
tabcolour
Output related directives
-
new_page
,np
-
new_physical_page
,npp)
-
column_break
,cb
-
grid
,g
-
no_grid
,ng
-
titles
-
columns
,col
Custom extensions
-
x_
var chordpro = require('js-chordpro');
// Song to be parsed
const song_chordpro = `
{title: Some Song}
[G]This is first [C]verse
with [G]chords
`;
// tokenize and parse song into in-memory song document structure
let parsed = jschordpro.parse(song_chordpro + "\n")
// render in-memory song document to html
let html = jschordpro.to_html(doc);
console.log(html);
Package provides cli command jschordpro
.
Following command will register package as cli command in case you don't install it as npm package (e.g. in case of git clone)
npm link