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
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
"\\\\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
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
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
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)
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'))
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')
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
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
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,
def conv (str):
for a in ['beamed-lengths', 'beamed-minimum-free-lengths',
+ 'lengths',
'beamed-extreme-minimum-free-lengths']:
str = re.sub (r"\\override\s+Stem\s+#'%s" % a,
r"\\override Stem #'details #'%s" % a,
"""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,
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):
conversions.append (((2, 9, 9), conv, """annotatefoo -> annotate-foo"""))
+def conv (str):
+ str = re.sub (r"""(\\set\s)?(?P<context>[a-zA-Z]*.?)tupletNumberFormatFunction\s*=\s*#denominator-tuplet-formatter""",
+ r"""\\override \g<context>TupletNumber #'text = #tuplet-number::calc-denominator-text""", str)
+
+ str = re.sub (r"""(\\set\s+)?(?P<context>[a-zA-Z]*.?)tupletNumberFormatFunction\s*=\s*#fraction-tuplet-formatter""",
+ r"""\\override \g<context>TupletNumber #'text = #tuplet-number::calc-fraction-text""", str)
+
+ if re.search ('tupletNumberFormatFunction', str):
+ error_file.write ("\n")
+ error_file.write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
+ error_file.write ("\n")
+
+ return 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 = <right-text>\n"
+ "\t\\override TextSpanner #'bound-details #'left #'text = <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"""))