openlyrics-parser
Version:
Parses and extracts data from OpenLyrics files, and creates them!
111 lines (110 loc) • 2.84 kB
TypeScript
export interface IBuilderOptions {
format?: IBuilderFormat[];
instruments?: IBuilderInstrument[];
meta?: IBuilderMeta;
properties: IBuilderProperties;
verses: IBuilderVerse[];
}
export interface IBuilderMeta {
chordNotation?: string;
createdIn?: string;
modifiedIn?: string;
lang?: string;
}
export interface IBuilderProperties {
[key: string]: any;
authors?: string | IBuilderAuthor[];
ccliNo?: string | number;
comments?: string[];
copyright?: string | number;
key?: string;
keywords?: string;
publisher?: string;
released?: string | number;
songBooks?: IBuilderSongBook[];
tempo?: string | number;
themes?: IBuilderTheme[];
timeSignature?: string;
titles: IBuilderTitle[] | string;
transposition?: string | number;
variant?: string;
verseOrder?: string;
version?: string | number;
}
export interface IBuilderAuthor {
lang?: string;
type?: string;
value: string;
}
export interface IBuilderTitle {
lang?: string;
original?: boolean;
transliteration?: string;
value: string;
}
export interface IBuilderTheme {
lang?: string;
value: string;
}
export interface IBuilderSongBook {
entry?: string | number;
name: string;
}
export interface IBuilderFormat {
application: string;
tags: IBuilderFormatTag[];
}
export interface IBuilderFormatTag {
close: string;
name: string;
open: string;
}
interface IBuilderChordBase {
bass?: string;
root?: string;
structure?: string;
type: 'chord';
upbeat?: boolean;
}
export interface IBuilderVerse {
optionalBreak?: boolean;
lang?: string;
lines: string[] | IBuilderVerseLine[];
name: string;
transliteration?: string;
}
export interface IBuilderVerseLine {
content: IBuilderVerseLineContent[];
part?: string;
optionalBreak?: boolean;
repeat?: number;
}
export interface IBuilderVerseChord extends IBuilderChordBase {
value?: string;
}
export type IBuilderVerseLineContent = IBuilderVerseLineContentStandard | IBuilderVerseLineContentTag | IBuilderVerseChord;
export interface IBuilderVerseLineContentStandard {
type: 'text' | 'comment';
value: string;
}
export interface IBuilderVerseLineContentTag {
name: string;
type: 'tag';
value: string;
}
export interface IBuilderInstrument {
lines: IBuilderInstrumentLine[];
name: string;
}
export interface IBuilderInstrumentLine {
content: IBuilderInstrumentLineContent[];
part?: string;
repeat?: number;
}
export type IBuilderInstrumentChord = IBuilderChordBase;
export interface IBuilderInstrumentLineContentBeat {
chords: IBuilderInstrumentChord[];
type: 'beat';
}
export type IBuilderInstrumentLineContent = IBuilderInstrumentLineContentBeat | IBuilderInstrumentChord;
export {};