41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import re
|
|
|
|
KNOWN_DIRECTIVES = [
|
|
('title', 't'),
|
|
('subtitle', 'st'),
|
|
('artist',),
|
|
('composer',),
|
|
('lyricist',),
|
|
('arranger',),
|
|
('copyright',),
|
|
('album',),
|
|
('year',),
|
|
('key',),
|
|
('time',),
|
|
('tempo',),
|
|
('duration',),
|
|
('capo',),
|
|
('meta',),
|
|
('comment', 'c')
|
|
]
|
|
KNOWN_VERSE_TYPES = [
|
|
'verse',
|
|
'chorus',
|
|
'bridge',
|
|
'tab',
|
|
'grid'
|
|
]
|
|
ENGLISH_NOTES = '[CDEFGAB]'
|
|
GERMAN_NOTES = '[CDEFGAH]'
|
|
NEOLATIN_NOTES = '(Do|Re|Mi|Fa|Sol|La|Si)'
|
|
CHORD_SUFFIXES = '(b|bb)?(#)?(m|maj7|maj|min7|min|sus)?(1|2|3|4|5|6|7|8|9)?'
|
|
SLIM_CHARS = 'fiíIÍjlĺľrtť.,;/ ()|"\'!:\\'
|
|
DIRECTIVE = re.compile(r'\{(' + '|'.join([d for t in KNOWN_DIRECTIVES for d in t]) + r'): *(.*?)\}')
|
|
START_OF = re.compile(r'\{start_of_(' + '|'.join(KNOWN_VERSE_TYPES) + r')(: *(.*?))?\}')
|
|
END_OF = re.compile(r'\{end_of_(' + '|'.join(KNOWN_VERSE_TYPES) + r')\}')
|
|
CHORUS_MARKER = re.compile(r'\{chorus(: *(.*?))?\}')
|
|
VERSE_MARKER = re.compile(r'\{verse: *(.*?)\}')
|
|
BRIDGE_MARKER = re.compile(r'\{bridge: *(.*?)\}')
|
|
CHORD_WORD = re.compile(r'(.*?)\[(.*?)\]')
|
|
CHORD = re.compile(r'\[(.*?)\]')
|