Mercurial > dottes
changeset 735:68f926e61d16
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.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Thu, 12 Oct 2017 13:32:24 +0100 |
parents | e896cf93fe98 |
children | 4a4d39bcc145 |
files | abcfield.py |
diffstat | 1 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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. # <foo.abc> 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).