xi2

a plain text language that compiles to MIDI
git clone https://git.ce9e.org/xi2.git

commit
ee4b38e8ede70d4d7cbcd46e3ea70f6c25e77980
parent
5ee50e75083c92b0698c62bf516fad5fb59e01f9
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-09-19 13:57
refactor macros and change end maker to [end]

Diffstat

M xi2.py 23 +++++++++++------------

1 files changed, 11 insertions, 12 deletions


diff --git a/xi2.py b/xi2.py

@@ -51,19 +51,18 @@ if __name__ == '__main__':
   51    51     ll = re.sub('#[^\n]*', '', ll)
   52    52 
   53    53     # expand macros
   54    -1     ll = re.sub('\n', '\\\\n', ll)
   55    -1     while re.search('(\[[^\]]*\]):(.*)', ll):
   56    -1         match = re.search('(\[[^\]]*\]):(.*)', ll)
   57    -1         (key, after) = match.groups()
   58    -1         if after.startswith('<<'):
   59    -1             eol = after.split('\\n',1)[0][2:]
   60    -1             val = after.split(eol,2)[1]
   61    -1             ll = re.sub(re.escape("%s:<<%s%s%s" % (key, eol, val, eol)), '', ll)
   -1    54     ll = ll.replace('\n', r'\n')
   -1    55     while re.search(r'(\[[^\]]*\]):(.*)', ll):
   -1    56         match = re.search(r'(\[[^\]]*\]):(.*)', ll)
   -1    57         key, after = match.groups()
   -1    58         if after.startswith(r'\n'):
   -1    59             val = after.split('[end]', 1)[0]
   -1    60             ll = ll.replace('%s:%s[end]' % (key, val), '')
   62    61         else:
   63    -1             val = after.split('\\n',1)[0]
   64    -1             ll = re.sub(re.escape("%s:%s" % (key, val)), '', ll)
   65    -1         ll = re.sub(re.escape(key), val, ll)
   66    -1     ll = re.sub('\\\\n', '\n', ll)
   -1    62             val = after.split(r'\n', 1)[0]
   -1    63             ll = ll.replace('%s:%s' % (key, val), '')
   -1    64         ll = ll.replace(key, val)
   -1    65     ll = ll.replace(r'\n', '\n')
   67    66 
   68    67     # trim newlines
   69    68     ll = ll.strip('\n')