+
+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"""))