# HG changeset patch # User Jim Hague # Date 1507811544 -3600 # Node ID 68f926e61d168c5becc35ac9ffd1be6a05f0b45f # Parent e896cf93fe9881eeb7dc3d0b735fc868126c57bd Revise Markdown handling of character entities. Ideally I'd like the ABC character entities to survive Markdown and then get converted. But because they start with '\', they don't. So I have no alternative but to convert them to HTML entities, which Markdown then converts to UTF-8. diff -r e896cf93fe98 -r 68f926e61d16 abcfield.py --- a/abcfield.py Thu Oct 12 13:29:50 2017 +0100 +++ b/abcfield.py Thu Oct 12 13:32:24 2017 +0100 @@ -178,15 +178,17 @@ # Implement a custom Markdown shorthand for referencing ABC files. # will expand to ['title of foo'](foo.abc). -def expandCustomMarkdown(t, dir, latex): +def expandCustomMarkdown(t, dir): # Given a match to (foo.abc), return a markdown link to the tune with the # title (and subtitle, if present) of the tune as the text of the link. + # Because we're going through Markdown, character entities must be + # HTML. Pandoc will convert them to UTF-8. def getTitleLink(m): fname = m.group(1) + ".abc" path = pathlib.Path(dir, fname) with path.open() as f: lines = f.readlines() - return "[" + getFullTitle(lines, dir, latex=latex) + "](" + fname + ")" + return "[" + getFullTitle(lines, dir) + "](" + fname + ")" return re.sub(r'<(.*?).abc>', getTitleLink, t) # Return the raw text for a given field. Optionally the nth field is taken, @@ -223,13 +225,15 @@ def getFieldDisplayText(lines, dir, field, n = 1, starts = None, latex = False): res = getFieldText(lines, field, n, starts) if res: - res = convertAccents(res, latex) + # Fields that go through Markdown must have HTML entities. + mdfield = field.upper() in ['H', 'N']; + res = convertAccents(res, False if mdfield else latex) if field.upper() == "T": res = convertTitleToDisplay(res) elif field.upper() == "K": res = convertKeyToDisplay(res) - elif field.upper() in ["H", "N"]: - res = convertMarkdown(expandCustomMarkdown(res, dir, latex), latex) + elif mdfield: + res = convertMarkdown(expandCustomMarkdown(res, dir), latex) return res # Return full title (title + [" (" + subtitle + ")"] if subtitle exists).