return r"[^{}]*?(?:{"*n+r"[^{}]*?"+r"}[^{}]*?)*?"*n
matchstring = r'"(?:[^"\\]|\\.)*"'
-matcharg = (r"\s+(?:[$#]['`]?\s*(?:[a-zA-Z]\S*|" + matchstring + r"|\("
- + paren_matcher(20) + r"\))|" + matchstring + r"|\\[a-z_A-Z]+)")
-matchmarkup = (r'(?:\\markup\s*(?:{' + brace_matcher (20) +r'}|' +
+matcharg = (r"\s+(?:[$#]['`]?\s*(?:[a-zA-Z][^ \t\n()\\]*|" + matchstring
+ + r"|#?\(" + paren_matcher(20) + r"\)|"
+ + r"-?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)|"
+ + r"#(?:[tf]|\\.|@?\{" + brace_matcher (10) + r"#@?\}))|"
+ + matchstring + r"|\\[a-z_A-Z]+|[0-9]+(?:/[0-9]+)?|-[0-9]+)")
+matchmarkup = (r'(?:\\markup\s*(?:@?\{' + brace_matcher (20) +r'\}|' +
matchstring + r'|(?:\\[a-z_A-Z][a-z_A-Z-]*(?:' + matcharg +
- r')*?\s*)*(?:' + matchstring + "|{" + brace_matcher (20) +
- "}))|" + matchstring + ")")
+ r')*?\s*)*(?:' + matchstring + r"|@?\{" + brace_matcher (20) +
+ r"\}))|" + matchstring + ")")
@rule((2, 15, 25), r"\(auto)?Footnote(Grob)? -> \footnote")
def conv (str):
@rule((2, 17, 27), r'''\stringTuning \notemode -> \stringTuning''')
def conv(str):
- str = re.sub (r"\\stringTuning\s*\\notemode(\s*)@?\{\s*(.*?)\s*@?}",
+ str = re.sub (r"\\stringTuning\s*\\notemode(\s*)@?\{\s*(.*?)\s*@?\}",
r"\\stringTuning\1\2", str)
if re.search (r'[^-\w]staff-padding[^-\w]', str):
stderr_write (NOT_SMART % "staff-padding")
+ after_id, r'\1-\2', str)
return str
-@rule ((2, 19, 21), r"""\relative x''' { y ... -> \relative { z''' ...""")
-def conv(str):
- # If the file contains a language switch to a language where the
- # name of c is not "c", we can't reliably convert.
- m = re.search (r'\\language\s(?!\s*#?"(?:nederlands|deutsch|english|norsk|suomi|svenska))"', str)
- if True: # not m:
- def subst(m):
- oct = (len (re.findall ("'", m.group (1) + m.group (4)))
- - len (re.findall (",", m.group (1) + m.group (4))))
- if (re.search (m.group (1)[0] + r".{7,}" + m.group (3)[0],
- "c d e f g a bh")):
- oct = oct - 1
- elif (re.search (m.group (3)[0] + r".{7,}" + m.group (1)[0],
- "c d e f g a bh")):
- oct = oct + 1
- return m.expand (r"\\relative\2\3" + oct * "'" + (-oct) * ",")
- str = re.sub (r"\\relative\s+([a-z]+[',]*)"
- + r"(\s+(?:@?\{|<<?|"
- + r"\\(?:new|context)\s+[a-zA-Z]+(?:\s*=\s*"
- + matchstring + r")?\s)"
- + r"(?:@?\{|<<?|\s|"
- + r"%.*\n|"
- + r"\\(?:new|context)\s+[a-zA-Z]+(?:\s*=\s*"
- + matchstring + r")?\s|"
- + r"\\clef\s+(?:[a-z]+\s|" + matchstring + ")|"
- + r"\\key\s+[a-z]+\s*\\[a-z]+\s|"
- + r"\\time\s+[0-9]+/[0-9]+\s|"
- + r"\||[rsR](?:[0-9]+\.*(?:\*[0-9]+)?)?"
- + r")*)([a-h][a-z]*)([',]*)",
- subst, str)
- return str
-
# Guidelines to write rules (please keep this at the end of this file)
#
# - keep at most one rule per version; if several conversions should be done,