if re.search(r'\\oldaddlyrics', str):
stderr_write (NOT_SMART % "oldaddlyrics")
stderr_write (_ ("oldaddlyrics is no longer supported. \n \
- Use addlyrics or lyrsicsto instead.\n"))
+ Use addlyrics or lyricsto instead.\n"))
stderr_write (UPDATE_MANUALLY)
raise FatalConversionError ()
return str
return str
return inner (str)
+@rule ((2, 19, 24), r"""music-has-type -> music-is-of-type?
+\applyOutput #'Context -> \applyOutput Context""")
+def conv (str):
+ str = re.sub (r'(?<=\s|["\\()])' + "music-has-type" + r'(?=\s|["\\()])',
+ "music-is-of-type?", str)
+ str = re.sub (r"(\\applyOutput\s+)#'([a-zA-Z])", r"\1\2", str)
+ return str
+
+@rule ((2, 19, 28), r"c:5.x, c:5^x, c:sus -> c:3.5.x, c:3.5^x, c:5")
+def conv (str):
+ str = re.sub (r":5([.^][1-9])", r":3.5\1", str)
+ # row back for self-defeating forms
+ str = re.sub (r":3\.5((?:\.[0-9]+)*\^(?:[0-9]+\.)*)3\.", r":5\1", str)
+ str = re.sub (r":3\.5((?:\.[0-9]+)*\^?:[0-9]+(?:\.[0-9]+)*)\.3(?![.0-9])", r":5\1", str)
+ str = re.sub (r":3\.5((?:\.[0-9]+)*)\^3(?=\s|\})", r":5\1", str)
+ str = re.sub (r":sus(?=\s|\})", ":5", str)
+ str = re.sub (r":1\.5(?=\s|[.^}])", r":5", str)
+ return str
+
+@rule ((2, 19, 29), r"partcombine*Once -> \once \partcombine*")
+def conv(str):
+ str = re.sub (r"(\\partcombine(?:Apart|Chords|Unisono|SoloII?|Automatic))Once\b",
+ r"\\once \1", str)
+ str = re.sub (r"(\\partcombineForce" + matcharg + r")\s*##f(\s)",
+ r"\1\2", str)
+ str = re.sub (r"(\\partcombineForce" + matcharg + r")\s*##t(\s)",
+ r"\\once \1\2", 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,