diff --git a/abcfield.py b/abcfield.py index a342a69..fb4c196 100755 --- a/abcfield.py +++ b/abcfield.py @@ -178,15 +178,17 @@ def convertMarkdown(t, latex): # 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 getFieldText(lines, field, n = 1, starts = None): 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).