From 73620b9029d04102a2e98d7dbd55c756b13e5512 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Sun, 10 May 2015 16:03:42 +0200 Subject: [PATCH] Issue 4372: convert-ly misses some bflat -> b-flat In python/convert-rules.py, using '\b' for note name boundaries turns out to be too audacious since bflat4 is one word. A proper solution would be to match the variable wordsyntax and let the match expression use a replacement function that triggers on the right words. However, such a large number of matches would be expensive. So instead we are using positive lookahead and lookbehind expressions to get reasonably good matches. --- python/convertrules.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/python/convertrules.py b/python/convertrules.py index 0df4b09b1d..05beeec455 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -3723,11 +3723,24 @@ def conv(str): str = re.sub (r'\bthin-kern\b', 'segno-kern', str) return str +# before_id is written in a manner where it will only substantially +# (rather than as a lookbefore assertion) match material that could +# not be part of a previous id. In that manner, one replacement does +# not inhibit an immediately adjacent replacement. + +before_id = r'(?:^|(? initialTimeSignatureVisibility csharp -> c-sharp""") def conv(str): str = re.sub (r'\bimplicitTimeSignatureVisibility\b', 'initialTimeSignatureVisibility', str) - str = re.sub (r'\b([a-g])((?:sharp){1,2}|(?:flat){1,2})\b',r'\1-\2', str) + str = re.sub ('(' + before_id + r'[a-g])((?:sharp){1,2}|(?:flat){1,2})' + + after_id, r'\1-\2', str) str = re.sub (r'\\shiftOff\b', r'\\undo\\shiftOn', str) return str -- 2.39.2