js-chordpro

2.0.2 • Public • Published

ChordPro

Javscript implementation of parser for song lyrics writted in ChordPro format.

The solution is based on wonderful tools nearley parser and moo lexer.

How to build and deploy

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

ChordPro Format Coverage

Preamble directives

  • [ ] new_song, ns

Meta-data directives

  • [x] title, t
  • [x] subtitle, st
  • [x] artist
  • [ ] composer
  • [ ] lyricist
  • [ ] copyright
  • [ ] album
  • [ ] year
  • [ ] key
  • [ ] time
  • [ ] tempo
  • [ ] duration
  • [ ] capo
  • [ ] meta

Formatting directives

  • [x] comment, c
  • [ ] comment_italic, ci
  • [ ] comment_box, cb
  • [ ] image

Environment directives

  • [x] start_of_chorus, soc
  • [x] 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_

Quick Start

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);

Use as cli tool

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

Resources

Readme

Keywords

Package Sidebar

Install

npm i js-chordpro

Weekly Downloads

2

Version

2.0.2

License

ISC

Unpacked Size

108 kB

Total Files

6

Last publish

Collaborators

  • mnezerka