X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Fconvertrules.py;h=c3cbc2133809dcb2b10d658f2461a1bdcda28208;hb=42ae342ba877dc8f26cabb5cc3937a6d3cdb4066;hp=3ea4739db0d091dbe138b736d62dc0c6ea692029;hpb=580faff1d6167b1500228dc5c5ae073dca0ead40;p=lilypond.git diff --git a/python/convertrules.py b/python/convertrules.py index 3ea4739db0..c3cbc21338 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -2964,22 +2964,29 @@ def conv(str): '(Note|Rest|Skip_event)_swallow_translator|String_number_engraver)"*', '', str) - str = re.sub (r"page-top-space\s*=\s*#([0-9.]+)", - r"top-system-spacing #'space = #\1", + # match through the end of assignments in the form "x = 30", "x = 1 \in", or "x = #3" + str = re.sub (r"(page-top-space)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" top-system-spacing #'space = #(/ obsolete-\1 staff-space)", str) - str = re.sub (r"between-system-space\s*=\s*#([0-9.]+)", - r"between-system-spacing #'space = #\1\nbetween-scores-system-spacing #'space = #\1", + str = re.sub (r"(between-system-space)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" between-system-spacing #'space = #(/ obsolete-\1 staff-space)" + r" between-scores-system-spacing #'space = #(/ obsolete-\1 staff-space)", str) - str = re.sub (r"between-system-padding\s*=\s*#([0-9.]+)", - r"between-system-spacing #'padding = #\1\nbetween-scores-system-spacing #'padding = #\1", + str = re.sub (r"(between-system-padding)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" between-system-spacing #'padding = #(/ obsolete-\1 staff-space)" + r" between-scores-system-spacing #'padding = #(/ obsolete-\1 staff-space)", str) - str = re.sub (r"(after|between|before)-title-space\s*=\s*#([0-9.]+)", - r"\1-title-spacing #'space = #\2", + str = re.sub (r"((before|between|after)-title-space)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" \2-title-spacing #'space = #(/ obsolete-\1 staff-space)", str) - if re.search(r'minimum-Y-extent', str): + if re.search(r"VerticalAxisGroup\s*#\s*'minimum-Y-extent", str): stderr_write("\n") - stderr_write(NOT_SMART % _("vertical spacing has been changed; minimum-Y-extent is obsolete.\n")) + stderr_write(NOT_SMART % _("minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n")) stderr_write(UPDATE_MANUALLY) return str @@ -3095,12 +3102,12 @@ def conv(str): @rule ((2, 13, 40), _ ("Remove \\paper variables head-separation and foot-separation.")) def conv(str): - if re.search(r'head-separation', str): + if re.search (r'head-separation', str): stderr_write("\n") stderr_write(NOT_SMART % ("head-separation.\n")) stderr_write(_ ("Adjust settings for top-system-spacing instead.\n")) - stderr_write(UPDATE_MANUALLY) - if re.search(r'foot-separation', str): + stderr_write (UPDATE_MANUALLY) + if re.search (r'foot-separation', str): stderr_write("\n") stderr_write(NOT_SMART % ("foot-separation.\n")) stderr_write(_ ("Adjust settings for last-bottom-spacing instead.\n")) @@ -3108,6 +3115,71 @@ def conv(str): return str +@rule ((2, 13, 42), + _ ("Rename space to basic-distance in various spacing alists.\n\ +Remove HarmonicParenthesesItem grob.")) +def conv(str): + str = re.sub (r'\(space\s+\.\s+([0-9]*\.?[0-9]*)\)', r'(basic-distance . \1)', str) + str = re.sub (r"#'space\s+=\s+#?([0-9]*\.?[0-9]*)", r"#'basic-distance = #\1", str) + if re.search (r'HarmonicParenthesesItem', str): + stderr_write ("\n") + stderr_write (NOT_SMART % ("HarmonicParenthesesItem.\n")) + stderr_write (_ ("HarmonicParenthesesItem has been eliminated.\n")) + stderr_write (_ ("Harmonic parentheses are part of the TabNoteHead grob.\n")) + stderr_write (UPDATE_MANUALLY); + return str + +@rule ((2, 13, 44), + _ ("Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n")) + +def conv(str): + str = re.sub (r"\\(override|revert)TimeSignatureSettings(\s+[^#]*)(#[^#]*)#", r"\\\1TimeSignatureSettings\2#", str) + return str + +@rule ((2, 13, 46), + _ ("Change stringTunings from a list of semitones to a list of pitches.\n"\ + "Change tenor and baritone ukulele names in string tunings.\n"\ + "Generate messages for manual conversion of vertical spacing if required.")) + +def conv(str): + def semitones2pitch(semitones): + steps = [0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 5, 6] + alterations = ["NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL", "NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL", "SHARP", "NATURAL"] + octave = 0 + while semitones > 11: + octave += 1 + semitones -=12 + while semitones < 0: + octave -= 1 + semitones += 12 + pitchArgs = "%d %d %s" % (octave, steps[semitones], alterations[semitones]) + return pitchArgs + + def convert_tones (semitone_list): + tones = semitone_list.split () + res = "" + for tone in tones: + args = semitones2pitch(int(tone)) + res += ",(ly:make-pitch " + args + ") " + return res + + def new_tunings (matchobj): + return "stringTunings = #`(" + convert_tones(matchobj.group(1)) + ")" + str = re.sub (r"stringTunings\s*=\s*#'\(([\d\s-]*)\)", \ + new_tunings , str) + + str = re.sub (r"ukulele-(tenor|baritone)-tuning", r"\1-ukulele-tuning", str) + + if re.search (r"[^-]page-top-space", str): + stderr_write (NOT_SMART % "page-top-space. " + UPDATE_MANUALLY) + if re.search (r"[^-]between-system-(space|padding)", str): + stderr_write (NOT_SMART % "between-system-space, -padding. " + UPDATE_MANUALLY) + if re.search (r"[^-](before|between|after)-title-space", str): + stderr_write (NOT_SMART % "-title-space. " + UPDATE_MANUALLY) + if re.search (r"\\name\s", str): + stderr_write("\n" + _("Vertical spacing changes might affect user-defined contexts. ") + UPDATE_MANUALLY) + + return str # Guidelines to write rules (please keep this at the end of this file) #