X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Fconvertrules.py;h=88ae549d0bc8bcce3158c77573d291fb8f529ba9;hb=ff2453f37bb89d53a173edfec14c3c07f26848bf;hp=0a2dfa969ae449415770ed510eaa9329d5e652fa;hpb=06d87fa7914ef57cc743bddc0d66dee2ce4e214f;p=lilypond.git diff --git a/python/convertrules.py b/python/convertrules.py index 0a2dfa969a..88ae549d0b 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -93,7 +93,7 @@ conversions.append (( def conv(str): if re.search ('\\\\header', str): error_file.write ('\n') - error_file.write (NOT_SMART % "new \\header format") + error_file.write (NOT_SMART % _ ("new \\header format")) error_file.write ('\n') return str @@ -127,7 +127,7 @@ conversions.append (((1,0,5), conv, 'ChoireStaff -> ChoirStaff')) def conv(str): if re.search ('[a-zA-Z]+ = *\\translator',str): error_file.write ('\n') - error_file.write (NOT_SMART % "\\translator syntax") + error_file.write (NOT_SMART % _ ("\\translator syntax")) error_file.write ('\n') # raise FatalConversionError () return str @@ -378,7 +378,7 @@ def conv (str): "\\\\musicalpitch #'(\\1)", str) if re.search ('\\\\notenames',str): error_file.write ('\n') - error_file.write (NOT_SMART % "new \\notenames format") + error_file.write (NOT_SMART % _ ("new \\notenames format")) error_file.write ('\n') return str @@ -398,7 +398,7 @@ conversions.append (((1,3,39), conv, '\\key A ; ->\\key a;')) def conv (str): if re.search ('\\[:',str): error_file.write ('\n') - error_file.write (NOT_SMART % "new tremolo format") + error_file.write (NOT_SMART % _ ("new tremolo format")) error_file.write ('\n') return str @@ -425,7 +425,7 @@ conversions.append (((1,3,49), conv, def conv (str): if re.search ('\\\\keysignature', str): error_file.write ('\n') - error_file.write (NOT_SMART % "new tremolo format") + error_file.write (NOT_SMART % _ ("new tremolo format")) error_file.write ('\n') return str @@ -538,7 +538,7 @@ def conv (str): str = re.sub ('ChordNames*', 'ChordNames', str) if re.search ('\\\\textscript "[^"]* *"[^"]*"', str): error_file.write ('\n') - error_file.write (NOT_SMART % "new \\textscript markup text") + error_file.write (NOT_SMART % _ ("new \\textscript markup text")) error_file.write ('\n') str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str) @@ -604,32 +604,33 @@ def conv (str): return str conversions.append (((1,3,113), conv, 'LyricVoice -> LyricsVoice')) - -def conv (str): - def regularize_id (str): - s = '' - lastx = '' - for x in str: - if x == '_': - lastx = x - continue - elif x in string.digits: - x = chr(ord (x) - ord ('0') +ord ('A')) - elif x not in string.letters: - x = 'x' - elif x in string.lowercase and lastx == '_': - x = string.upper (x) - s = s + x - lastx = x - return s - - def regularize_dollar_reference (match): - return regularize_id (match.group (1)) - def regularize_assignment (match): - return '\n' + regularize_id (match.group (1)) + ' = ' - str = re.sub ('\$([^\t\n ]+)', regularize_dollar_reference, str) - str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str) - return str +def regularize_id (str): + s = '' + lastx = '' + for x in str: + if x == '_': + lastx = x + continue + elif x in string.digits: + x = chr(ord (x) - ord ('0') +ord ('A')) + elif x not in string.letters: + x = 'x' + elif x in string.lowercase and lastx == '_': + x = string.upper (x) + s = s + x + lastx = x + return s + +def conv (str): + + + def regularize_dollar_reference (match): + return regularize_id (match.group (1)) + def regularize_assignment (match): + return '\n' + regularize_id (match.group (1)) + ' = ' + str = re.sub ('\$([^\t\n ]+)', regularize_dollar_reference, str) + str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str) + return str conversions.append (((1,3,117), conv, 'identifier names: $!foo_bar_123 -> xfooBarABC')) @@ -1157,7 +1158,7 @@ conversions.append (((1,7,23), conv,"barNonAuto -> automaticBars")) def conv(str): if re.search( r'-(start|stop)Cluster', str): error_file.write ('\n') - error_file.write (NOT_SMART % "Cluster syntax") + error_file.write (NOT_SMART % _ ("cluster syntax")) error_file.write ('\n') error_file.write (UPDATE_MANUALLY) error_file.write ('\n') @@ -2314,6 +2315,15 @@ conversions.append (((2, 3, 24), conv, '''regularize other identifiers.''')) +def conv (str): + str = re.sub ('petrucci_c1', 'petrucci-c1', str) + str = re.sub ('1style', 'single-digit', str) + return str + +conversions.append (((2, 3, 25), + conv, + '''petrucci_c1 -> petrucci-c1, 1style -> single-digit''')) + def conv (str): return str @@ -2469,7 +2479,7 @@ def conv (str): if re.search ("(override-|revert-)auto-beam-setting", str)\ or re.search ("autoBeamSettings", str): error_file.write ('\n') - error_file.write (NOT_SMART % "auto beam settings") + error_file.write (NOT_SMART % _ ("auto beam settings")) error_file.write ('\n') error_file.write (''' Auto beam settings must now specify each interesting moment in a measure @@ -2632,7 +2642,10 @@ def conv (str): str = re.sub (r"minimumVerticalExtent", r"\\override VerticalAxisGroup #'minimum-Y-extent", str) - + str = re.sub (r"\\set ([a-zA-Z]*\.?)extraVerticalExtent", + r"\\override \1VerticalAxisGroup #'extra-Y-extent", str) + str = re.sub (r"\\set ([a-zA-Z]*\.?)verticalExtent", + r"\\override \1VerticalAxisGroup #'Y-extent", str) return str conversions.append (((2, 7, 14), conv, @@ -2691,7 +2704,7 @@ conversions.append (((2, 7, 29), conv, """override Stem #'beamed-* -> #'details #'beamed-*""")) def conv (str): - str = re.sub (r'\epsfile *#"', r'\epsfile #X #10 #"', str) + str = re.sub (r'\\epsfile *#"', r'\\epsfile #X #10 #"', str) return str conversions.append (((2, 7, 30), conv, @@ -2795,7 +2808,7 @@ def conv (str): str = re.sub (r'\\context\s+\"?([a-zA-Z]+)\"?\s*\\applyOutput', r"\\applyOutput #'\1", str) return str -conversions.append (((2, 9, 6), conv, """\context Foo \applyOutput #bla -> \applyOutput #'Foo #bla """)) +conversions.append (((2, 9, 6), conv, """\context Foo \\applyOutput #bla -> \\applyOutput #'Foo #bla """)) def conv (str): @@ -2808,11 +2821,11 @@ conversions.append (((2, 9, 9), conv, """annotatefoo -> annotate-foo""")) def conv (str): - str = re.sub (r"""\\set ([a-zA-Z]+.?)tupletNumberFormatFunction *= *#denominator-tuplet-formatter""", - r"""\\override \1TupletNumber #'text = #tuplet-number::calc-denominator-text""", str) + str = re.sub (r"""(\\set\s)?(?P[a-zA-Z]*.?)tupletNumberFormatFunction\s*=\s*#denominator-tuplet-formatter""", + r"""\\override \gTupletNumber #'text = #tuplet-number::calc-denominator-text""", str) - str = re.sub (r"""\\set ([a-zA-Z]+.?)tupletNumberFormatFunction *= *#fraction-tuplet-formatter""", - r"""\\override \1TupletNumber #'text = #tuplet-number::calc-fraction-text""", str) + str = re.sub (r"""(\\set\s+)?(?P[a-zA-Z]*.?)tupletNumberFormatFunction\s*=\s*#fraction-tuplet-formatter""", + r"""\\override \gTupletNumber #'text = #tuplet-number::calc-fraction-text""", str) if re.search ('tupletNumberFormatFunction', str): error_file.write ("\n") @@ -2824,3 +2837,200 @@ def conv (str): conversions.append (((2, 9, 11), conv, """\\set tupletNumberFormatFunction -> \\override #'text = """)) +def conv (str): + str = re.sub ('vocNam', 'shortVocalName', str) + str = re.sub (r'\.instr\s*=', r'.shortInstrumentName =', str) + str = re.sub (r'\.instrument\s*=', r'.instrumentName =', str) + return str + +conversions.append (((2, 9, 13), conv, """instrument -> instrumentName, instr -> shortInstrumentName, vocNam -> shortVocalName""")) + + +def conv (str): + + def sub_tempo (m): + dur = int (m.group (1)) + dots = len (m.group (2)) + count = int (m.group (3)) + + log2 = 0 + while dur > 1 : + dur /= 2 + log2 += 1 + + den = (1 << dots) * (1 << log2) + num = ((1 << (dots+1)) - 1) + + return """ + \midi { + \context { + \Score + tempoWholesPerMinute = #(ly:make-moment %d %d) + } + } + +""" % (num*count, den) + + str = re.sub (r'\\midi\s*{\s*\\tempo ([0-9]+)\s*([.]*)\s*=\s*([0-9]+)\s*}', sub_tempo, str) + return str + +conversions.append (((2, 9, 16), conv, """deprecate \\tempo in \\midi""")) + +def conv (str): + str = re.sub ('printfirst-page-number', 'print-first-page-number', str) + return str + +conversions.append (((2, 9, 19), conv, """printfirst-page-number -> print-first-page-number""")) + + +def conv (str): + return str + +conversions.append (((2, 10, 0), conv, """bump version for release""")) + + +def conv (str): + return re.sub ('ly:clone-parser', + 'ly:parser-clone', str) + +conversions.append (((2, 11, 2), conv, """ly:clone-parser -> ly:parser-clone""")) + + + +def conv (str): + str = re.sub ("Accidental\s*#'cautionary-style\s*=\s*#'smaller", + "AccidentalCautionary #'font-size = #-2", str) + str = re.sub ("Accidental\s*#'cautionary-style\s*=\s*#'parentheses", + "AccidentalCautionary #'parenthesized = ##t", str) + str = re.sub ("([A-Za-z]+)\s*#'cautionary-style\s*=\s*#'parentheses", + r"\1 #'parenthesized = ##t", str) + str = re.sub ("([A-Za-z]+)\s*#'cautionary-style\s*=\s*#'smaller", + r"\1 #'font-size = #-2", str) + + return str + +conversions.append (((2, 11, 5), conv, """deprecate cautionary-style. Use AccidentalCautionary properties""")) + + + + +def conv (str): + + def sub_acc_name (m): + idx = int (m.group (1).replace ('M','-')) + + return ["accidentals.doublesharp", + "accidentals.sharp.slashslash.stemstemstem", + "accidentals.sharp", + "accidentals.sharp.slashslash.stem", + "accidentals.natural", + "accidentals.mirroredflat", + "accidentals.flat", + "accidentals.mirroredflat.flat", + "accidentals.flatflat"][4-idx] + + str = re.sub (r"accidentals[.](M?[-0-9]+)", + sub_acc_name, str) + str = re.sub (r"(KeySignature|Accidental[A-Za-z]*)\s*#'style\s*=\s*#'([a-z]+)", + r"\1 #'glyph-name-alist = #alteration-\2-glyph-name-alist", str) + ## FIXME: standard vs default, alteration-FOO vs FOO-alteration + str = str.replace ('alteration-default-glyph-name-alist', + 'standard-alteration-glyph-name-alist') + return str + +conversions.append (((2, 11, 6), conv, """Rename accidental glyphs, use glyph-name-alist.""")) + + +def conv (str): + str = re.sub (r'(\\set\s+)?([A-Z][a-zA-Z]+\s*\.\s*)allowBeamBreak', + r"\override \2Beam #'breakable", str) + str = re.sub (r'(\\set\s+)?allowBeamBreak', + r"\override Beam #'breakable", str) + str = re.sub (r'addquote' , 'addQuote', str) + if re.search ("Span_dynamic_performer", str): + error_file.write ("Span_dynamic_performer has been merged into Dynamic_performer") + + return str + +conversions.append (((2, 11, 10), conv, """allowBeamBreak -> Beam #'breakable = ##t +addquote -> addQuote + +""")) + +def conv (str): + str = re.sub (r'\(layout-set-staff-size \(\*\s*([0-9.]+)\s*(pt|mm|cm)\)\)', + r'(layout-set-absolute-staff-size (* \1 \2))', str) + return str + +conversions.append (((2, 11, 11), conv, """layout-set-staff-size -> layout-set-absolute-staff-size""")) + + +def conv (str): + str = re.sub (r"\\override\s*([a-zA-Z.]+)\s*#'arrow\s*=\s*##t", + r"\\override \1 #'bound-details #'right #'arrow = ##t", + str) + + if re.search ('edge-text', str): + error_file.write (NOT_SMART % _ ("edge-text settings for TextSpanner.")) + error_file.write (_ ("Use\n\n%s") % + "\t\\override TextSpanner #'bound-details #'right #'text = \n" + "\t\\override TextSpanner #'bound-details #'left #'text = \n") + + + return str + +conversions.append (((2, 11, 13), conv, """#'arrow = ##t -> #'bound-details #'right #'arrow = ##t""")) + +def conv (str): + def sub_edge_height (m): + s = '' + for (var, h) in [('left', m.group (3)), + ('right', m.group (4))]: + + if h and float (h): + once = m.group(1) + if not once: + once = '' + + s += (r"%s \override %s #'bound-details #'%s #'text = \markup { \draw-line #'(0 . %s) }" + % (once, m.group (2), var, h)) + + s += '\n' + + return s + + + str = re.sub (r"(\\once)?\s*\\override\s*([a-zA-Z.]+)\s*#'edge-height\s*=\s*#'\(([0-9.-]+)\s+[.]\s+([0-9.-]+)\)", + sub_edge_height, str) + return str + +conversions.append (((2, 11, 15), conv, """#'edge-height -> #'bound-details #'right/left #'text = ...""")) + +def conv (str): + str = re.sub (r"\\override\s*([a-zA-Z.]+)\s*#'break-align-symbol\s*=\s*#'([a-z-]+)", + r"\\override \1 #'break-align-symbols = #'(\2)", str) + return str + +conversions.append (((2, 11, 23), conv, """#'break-align-symbol -> #'break-align-symbols""")) + +def conv (str): + str = re.sub (r"scripts\.caesura", + r"scripts.caesura.curved", str) + + if re.search ('dash-fraction', str): + error_file.write (NOT_SMART % _ ("all settings related to dashed lines.\n")) + error_file.write (_ ("Use \\override ... #'style = #'line for solid lines and\n")) + error_file.write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines.")) + + return str + +conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved. Use #'style not #'dash-fraction to select solid/dashed lines.""")) + +def conv (str): + str = re.sub (r"setEasyHeads", r"easyHeadsOn", str) + str = re.sub (r"fatText", r"textLengthOn", str) + str = re.sub (r"emptyText", r"textLengthOff", str) + return str + +conversions.append (((2, 11, 38), conv, """\\setEasyHeads -> \\easyHeadsOn, \\fatText -> \\textLengthOn, +\\emptyText -> \\textLengthOff"""))