| Index: trunk/src/third_party/markdown/extensions/abbr.py
|
| ===================================================================
|
| --- trunk/src/third_party/markdown/extensions/abbr.py (revision 244009)
|
| +++ trunk/src/third_party/markdown/extensions/abbr.py (working copy)
|
| @@ -1,96 +0,0 @@
|
| -'''
|
| -Abbreviation Extension for Python-Markdown
|
| -==========================================
|
| -
|
| -This extension adds abbreviation handling to Python-Markdown.
|
| -
|
| -Simple Usage:
|
| -
|
| - >>> import markdown
|
| - >>> text = """
|
| - ... Some text with an ABBR and a REF. Ignore REFERENCE and ref.
|
| - ...
|
| - ... *[ABBR]: Abbreviation
|
| - ... *[REF]: Abbreviation Reference
|
| - ... """
|
| - >>> print markdown.markdown(text, ['abbr'])
|
| - <p>Some text with an <abbr title="Abbreviation">ABBR</abbr> and a <abbr title="Abbreviation Reference">REF</abbr>. Ignore REFERENCE and ref.</p>
|
| -
|
| -Copyright 2007-2008
|
| -* [Waylan Limberg](http://achinghead.com/)
|
| -* [Seemant Kulleen](http://www.kulleen.org/)
|
| -
|
| -
|
| -'''
|
| -
|
| -from __future__ import absolute_import
|
| -from __future__ import unicode_literals
|
| -from . import Extension
|
| -from ..preprocessors import Preprocessor
|
| -from ..inlinepatterns import Pattern
|
| -from ..util import etree
|
| -import re
|
| -
|
| -# Global Vars
|
| -ABBR_REF_RE = re.compile(r'[*]\[(?P<abbr>[^\]]*)\][ ]?:\s*(?P<title>.*)')
|
| -
|
| -class AbbrExtension(Extension):
|
| - """ Abbreviation Extension for Python-Markdown. """
|
| -
|
| - def extendMarkdown(self, md, md_globals):
|
| - """ Insert AbbrPreprocessor before ReferencePreprocessor. """
|
| - md.preprocessors.add('abbr', AbbrPreprocessor(md), '<reference')
|
| -
|
| -
|
| -class AbbrPreprocessor(Preprocessor):
|
| - """ Abbreviation Preprocessor - parse text for abbr references. """
|
| -
|
| - def run(self, lines):
|
| - '''
|
| - Find and remove all Abbreviation references from the text.
|
| - Each reference is set as a new AbbrPattern in the markdown instance.
|
| -
|
| - '''
|
| - new_text = []
|
| - for line in lines:
|
| - m = ABBR_REF_RE.match(line)
|
| - if m:
|
| - abbr = m.group('abbr').strip()
|
| - title = m.group('title').strip()
|
| - self.markdown.inlinePatterns['abbr-%s'%abbr] = \
|
| - AbbrPattern(self._generate_pattern(abbr), title)
|
| - else:
|
| - new_text.append(line)
|
| - return new_text
|
| -
|
| - def _generate_pattern(self, text):
|
| - '''
|
| - Given a string, returns an regex pattern to match that string.
|
| -
|
| - 'HTML' -> r'(?P<abbr>[H][T][M][L])'
|
| -
|
| - Note: we force each char as a literal match (in brackets) as we don't
|
| - know what they will be beforehand.
|
| -
|
| - '''
|
| - chars = list(text)
|
| - for i in range(len(chars)):
|
| - chars[i] = r'[%s]' % chars[i]
|
| - return r'(?P<abbr>\b%s\b)' % (r''.join(chars))
|
| -
|
| -
|
| -class AbbrPattern(Pattern):
|
| - """ Abbreviation inline pattern. """
|
| -
|
| - def __init__(self, pattern, title):
|
| - super(AbbrPattern, self).__init__(pattern)
|
| - self.title = title
|
| -
|
| - def handleMatch(self, m):
|
| - abbr = etree.Element('abbr')
|
| - abbr.text = m.group('abbr')
|
| - abbr.set('title', self.title)
|
| - return abbr
|
| -
|
| -def makeExtension(configs=None):
|
| - return AbbrExtension(configs=configs)
|
|
|