Smarten punctuation: Add a few more cases for detecting opening and closing quotes

This commit is contained in:
Kovid Goyal 2012-03-17 20:53:42 +05:30
commit 1fb9cd8256

View File

@ -591,6 +591,21 @@ def educateQuotes(str):
str = re.sub(r'''""''', """””""", str) str = re.sub(r'''""''', """””""", str)
str = re.sub(r"""''""", """’’""", str) str = re.sub(r"""''""", """’’""", str)
# Special case for Quotes at inside of other entities, e.g.:
# <p>A double quote--"within dashes"--would be nice.</p>
str = re.sub(r"""(?<=\W)"(?=\w)""", r"""&#8220;""", str)
str = re.sub(r"""(?<=\W)'(?=\w)""", r"""&#8216;""", str)
str = re.sub(r"""(?<=\w)"(?=\W)""", r"""&#8221;""", str)
str = re.sub(r"""(?<=\w)'(?=\W)""", r"""&#8217;""", str)
# Special case for Quotes at end of line with a preceeding space (may change just to end of line)
str = re.sub(r"""(?<=\s)"$""", r"""&#8221;""", str)
str = re.sub(r"""(?<=\s)'$""", r"""&#8217;""", str)
# Special case for Quotes at beginning of line with a space - multiparagraph quoted text:
str = re.sub(r"""^"(?=\s)""", r"""&#8220;""", str)
str = re.sub(r"""^'(?=\s)""", r"""&#8216;""", str)
# Special case for decade abbreviations (the '80s): # Special case for decade abbreviations (the '80s):
str = re.sub(r"""\b'(?=\d{2}s)""", r"""&#8217;""", str) str = re.sub(r"""\b'(?=\d{2}s)""", r"""&#8217;""", str)