aboutsummaryrefslogtreecommitdiffstats
path: root/markdown/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'markdown/extensions')
-rw-r--r--markdown/extensions/__init__.py7
-rw-r--r--markdown/extensions/abbr.py20
-rw-r--r--markdown/extensions/admonition.py15
-rw-r--r--markdown/extensions/attr_list.py15
-rw-r--r--markdown/extensions/codehilite.py13
-rw-r--r--markdown/extensions/def_list.py14
-rw-r--r--markdown/extensions/extra.py7
-rw-r--r--markdown/extensions/fenced_code.py20
-rw-r--r--markdown/extensions/footnotes.py27
-rw-r--r--markdown/extensions/headerid.py22
-rw-r--r--markdown/extensions/html_tidy.py14
-rw-r--r--markdown/extensions/meta.py17
-rw-r--r--markdown/extensions/nl2br.py10
-rw-r--r--markdown/extensions/sane_lists.py12
-rw-r--r--markdown/extensions/smart_strong.py12
-rw-r--r--markdown/extensions/tables.py12
-rw-r--r--markdown/extensions/toc.py13
-rw-r--r--markdown/extensions/wikilinks.py28
18 files changed, 144 insertions, 134 deletions
diff --git a/markdown/extensions/__init__.py b/markdown/extensions/__init__.py
index 0222c91..960d8f9 100644
--- a/markdown/extensions/__init__.py
+++ b/markdown/extensions/__init__.py
@@ -1,9 +1,10 @@
+from __future__ import unicode_literals
"""
Extensions
-----------------------------------------------------------------------------
"""
-class Extension:
+class Extension(object):
""" Base class for extensions to subclass. """
def __init__(self, configs = {}):
"""Create an instance of an Extention.
@@ -46,6 +47,6 @@ class Extension:
* md_globals: Global variables in the markdown module namespace.
"""
- raise NotImplementedError, 'Extension "%s.%s" must define an "extendMarkdown"' \
- 'method.' % (self.__class__.__module__, self.__class__.__name__)
+ raise NotImplementedError('Extension "%s.%s" must define an "extendMarkdown"' \
+ 'method.' % (self.__class__.__module__, self.__class__.__name__))
diff --git a/markdown/extensions/abbr.py b/markdown/extensions/abbr.py
index 45663c0..76a08cd 100644
--- a/markdown/extensions/abbr.py
+++ b/markdown/extensions/abbr.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
'''
Abbreviation Extension for Python-Markdown
==========================================
@@ -23,14 +24,17 @@ Copyright 2007-2008
'''
+from __future__ import absolute_import
+from . import Extension
+from ..preprocessors import Preprocessor
+from ..inlinepatterns import Pattern
+from ..util import etree
import re
-import markdown
-from markdown.util import etree
# Global Vars
ABBR_REF_RE = re.compile(r'[*]\[(?P<abbr>[^\]]*)\][ ]?:\s*(?P<title>.*)')
-class AbbrExtension(markdown.Extension):
+class AbbrExtension(Extension):
""" Abbreviation Extension for Python-Markdown. """
def extendMarkdown(self, md, md_globals):
@@ -38,7 +42,7 @@ class AbbrExtension(markdown.Extension):
md.preprocessors.add('abbr', AbbrPreprocessor(md), '<reference')
-class AbbrPreprocessor(markdown.preprocessors.Preprocessor):
+class AbbrPreprocessor(Preprocessor):
""" Abbreviation Preprocessor - parse text for abbr references. """
def run(self, lines):
@@ -75,11 +79,11 @@ class AbbrPreprocessor(markdown.preprocessors.Preprocessor):
return r'(?P<abbr>\b%s\b)' % (r''.join(chars))
-class AbbrPattern(markdown.inlinepatterns.Pattern):
+class AbbrPattern(Pattern):
""" Abbreviation inline pattern. """
def __init__(self, pattern, title):
- markdown.inlinepatterns.Pattern.__init__(self, pattern)
+ super(AbbrPattern, self).__init__(pattern)
self.title = title
def handleMatch(self, m):
@@ -90,7 +94,3 @@ class AbbrPattern(markdown.inlinepatterns.Pattern):
def makeExtension(configs=None):
return AbbrExtension(configs=configs)
-
-if __name__ == "__main__":
- import doctest
- doctest.testmod()
diff --git a/markdown/extensions/admonition.py b/markdown/extensions/admonition.py
index 122eb87..98dcb3a 100644
--- a/markdown/extensions/admonition.py
+++ b/markdown/extensions/admonition.py
@@ -1,5 +1,4 @@
-#!/usr/bin/env python
-
+from __future__ import unicode_literals
"""
Admonition extension for Python-Markdown
========================================
@@ -42,12 +41,14 @@ By [Tiago Serafim](http://www.tiagoserafim.com/).
"""
+from __future__ import absolute_import
+from . import Extension
+from ..blockprocessors import BlockProcessor
+from ..util import etree
import re
-import markdown
-from markdown.util import etree
-class AdmonitionExtension(markdown.Extension):
+class AdmonitionExtension(Extension):
""" Admonition extension for Python-Markdown. """
def extendMarkdown(self, md, md_globals):
@@ -59,7 +60,7 @@ class AdmonitionExtension(markdown.Extension):
'_begin')
-class AdmonitionProcessor(markdown.blockprocessors.BlockProcessor):
+class AdmonitionProcessor(BlockProcessor):
CLASSNAME = 'admonition'
CLASSNAME_TITLE = 'admonition-title'
@@ -84,7 +85,7 @@ class AdmonitionProcessor(markdown.blockprocessors.BlockProcessor):
if m:
klass, title = self.get_class_and_title(m)
div = etree.SubElement(parent, 'div')
- div.set('class', u'%s %s' % (self.CLASSNAME, klass))
+ div.set('class', '%s %s' % (self.CLASSNAME, klass))
if title:
p = etree.SubElement(div, 'p')
p.text = title
diff --git a/markdown/extensions/attr_list.py b/markdown/extensions/attr_list.py
index 3a79d85..d0d4873 100644
--- a/markdown/extensions/attr_list.py
+++ b/markdown/extensions/attr_list.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
"""
Attribute List Extension for Python-Markdown
============================================
@@ -18,9 +19,11 @@ Dependencies:
"""
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..treeprocessors import Treeprocessor
+from ..util import isBlockLevel
import re
-from markdown.util import isBlockLevel
try:
Scanner = re.Scanner
@@ -41,9 +44,9 @@ def _handle_key_value(s, t):
def _handle_word(s, t):
if t.startswith('.'):
- return u'.', t[1:]
+ return '.', t[1:]
if t.startswith('#'):
- return u'id', t[1:]
+ return 'id', t[1:]
return t, t
_scanner = Scanner([
@@ -61,7 +64,7 @@ def get_attrs(str):
def isheader(elem):
return elem.tag in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']
-class AttrListTreeprocessor(markdown.treeprocessors.Treeprocessor):
+class AttrListTreeprocessor(Treeprocessor):
BASE_RE = r'\{\:?([^\}]*)\}'
HEADER_RE = re.compile(r'[ ]*%s[ ]*$' % BASE_RE)
@@ -128,7 +131,7 @@ class AttrListTreeprocessor(markdown.treeprocessors.Treeprocessor):
return self.NAME_RE.sub('_', name)
-class AttrListExtension(markdown.extensions.Extension):
+class AttrListExtension(Extension):
def extendMarkdown(self, md, md_globals):
md.treeprocessors.add('attr_list', AttrListTreeprocessor(md), '>prettify')
diff --git a/markdown/extensions/codehilite.py b/markdown/extensions/codehilite.py
index fd8e2f4..89c0251 100644
--- a/markdown/extensions/codehilite.py
+++ b/markdown/extensions/codehilite.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python
-
+from __future__ import unicode_literals
"""
CodeHilite Extension for Python-Markdown
========================================
@@ -20,7 +19,9 @@ Dependencies:
"""
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..treeprocessors import Treeprocessor
import warnings
try:
from pygments import highlight
@@ -31,7 +32,7 @@ except ImportError:
pygments = False
# ------------------ The Main CodeHilite Class ----------------------
-class CodeHilite:
+class CodeHilite(object):
"""
Determine language of source code, and pass it into the pygments hilighter.
@@ -167,7 +168,7 @@ class CodeHilite:
# ------------------ The Markdown Extension -------------------------------
-class HiliteTreeprocessor(markdown.treeprocessors.Treeprocessor):
+class HiliteTreeprocessor(Treeprocessor):
""" Hilight source code in code blocks. """
def run(self, root):
@@ -193,7 +194,7 @@ class HiliteTreeprocessor(markdown.treeprocessors.Treeprocessor):
block.text = placeholder
-class CodeHiliteExtension(markdown.Extension):
+class CodeHiliteExtension(Extension):
""" Add source code hilighting to markdown codeblocks. """
def __init__(self, configs):
diff --git a/markdown/extensions/def_list.py b/markdown/extensions/def_list.py
index 382445c..cd9dc9c 100644
--- a/markdown/extensions/def_list.py
+++ b/markdown/extensions/def_list.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+from __future__ import unicode_literals
"""
Definition List Extension for Python-Markdown
=============================================
@@ -19,12 +19,14 @@ Copyright 2008 - [Waylan Limberg](http://achinghead.com)
"""
+from __future__ import absolute_import
+from . import Extension
+from ..blockprocessors import BlockProcessor, ListIndentProcessor
+from ..util import etree
import re
-import markdown
-from markdown.util import etree
-class DefListProcessor(markdown.blockprocessors.BlockProcessor):
+class DefListProcessor(BlockProcessor):
""" Process Definition Lists. """
RE = re.compile(r'(^|\n)[ ]{0,3}:[ ]{1,3}(.*?)(\n|$)')
@@ -85,7 +87,7 @@ class DefListProcessor(markdown.blockprocessors.BlockProcessor):
if theRest:
blocks.insert(0, theRest)
-class DefListIndentProcessor(markdown.blockprocessors.ListIndentProcessor):
+class DefListIndentProcessor(ListIndentProcessor):
""" Process indented children of definition list items. """
ITEM_TYPES = ['dd']
@@ -98,7 +100,7 @@ class DefListIndentProcessor(markdown.blockprocessors.ListIndentProcessor):
-class DefListExtension(markdown.Extension):
+class DefListExtension(Extension):
""" Add definition lists to Markdown. """
def extendMarkdown(self, md, md_globals):
diff --git a/markdown/extensions/extra.py b/markdown/extensions/extra.py
index ba646f5..5b8876c 100644
--- a/markdown/extensions/extra.py
+++ b/markdown/extensions/extra.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+from __future__ import unicode_literals
"""
Python-Markdown Extra Extension
===============================
@@ -27,7 +27,8 @@ when you upgrade to any future version of Python-Markdown.
"""
-import markdown
+from __future__ import absolute_import
+from . import Extension
extensions = ['smart_strong',
'fenced_code',
@@ -39,7 +40,7 @@ extensions = ['smart_strong',
]
-class ExtraExtension(markdown.Extension):
+class ExtraExtension(Extension):
""" Add various extensions to Markdown class."""
def extendMarkdown(self, md, md_globals):
diff --git a/markdown/extensions/fenced_code.py b/markdown/extensions/fenced_code.py
index 76d644f..91c59ee 100644
--- a/markdown/extensions/fenced_code.py
+++ b/markdown/extensions/fenced_code.py
@@ -1,5 +1,4 @@
-#!/usr/bin/env python
-
+from __future__ import unicode_literals
"""
Fenced Code Extension for Python Markdown
=========================================
@@ -75,9 +74,11 @@ Dependencies:
"""
+from __future__ import absolute_import
+from . import Extension
+from ..preprocessors import Preprocessor
+from .codehilite import CodeHilite, CodeHiliteExtension
import re
-import markdown
-from markdown.extensions.codehilite import CodeHilite, CodeHiliteExtension
# Global vars
FENCED_BLOCK_RE = re.compile( \
@@ -87,7 +88,7 @@ FENCED_BLOCK_RE = re.compile( \
CODE_WRAP = '<pre><code%s>%s</code></pre>'
LANG_TAG = ' class="%s"'
-class FencedCodeExtension(markdown.Extension):
+class FencedCodeExtension(Extension):
def extendMarkdown(self, md, md_globals):
""" Add FencedBlockPreprocessor to the Markdown instance. """
@@ -98,10 +99,10 @@ class FencedCodeExtension(markdown.Extension):
">normalize_whitespace")
-class FencedBlockPreprocessor(markdown.preprocessors.Preprocessor):
+class FencedBlockPreprocessor(Preprocessor):
def __init__(self, md):
- markdown.preprocessors.Preprocessor.__init__(self, md)
+ super(FencedBlockPreprocessor, self).__init__(md)
self.checked_for_codehilite = False
self.codehilite_conf = {}
@@ -158,8 +159,3 @@ class FencedBlockPreprocessor(markdown.preprocessors.Preprocessor):
def makeExtension(configs=None):
return FencedCodeExtension(configs=configs)
-
-
-if __name__ == "__main__":
- import doctest
- doctest.testmod()
diff --git a/markdown/extensions/footnotes.py b/markdown/extensions/footnotes.py
index 0a0ddea..b7ebc35 100644
--- a/markdown/extensions/footnotes.py
+++ b/markdown/extensions/footnotes.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
"""
========================= FOOTNOTES =================================
@@ -23,16 +24,22 @@ Example:
"""
+from __future__ import absolute_import
+from . import Extension
+from ..preprocessors import Preprocessor
+from ..inlinepatterns import Pattern
+from ..treeprocessors import Treeprocessor
+from ..postprocessors import Postprocessor
+from ..util import etree, text_type
+from ..odict import OrderedDict
import re
-import markdown
-from markdown.util import etree
FN_BACKLINK_TEXT = "zz1337820767766393qq"
NBSP_PLACEHOLDER = "qq3936677670287331zz"
DEF_RE = re.compile(r'[ ]{0,3}\[\^([^\]]*)\]:\s*(.*)')
TABBED_RE = re.compile(r'((\t)|( ))(.*)')
-class FootnoteExtension(markdown.Extension):
+class FootnoteExtension(Extension):
""" Footnote Extension. """
def __init__ (self, configs):
@@ -83,7 +90,7 @@ class FootnoteExtension(markdown.Extension):
def reset(self):
""" Clear the footnotes on reset, and prepare for a distinct document. """
- self.footnotes = markdown.odict.OrderedDict()
+ self.footnotes = OrderedDict()
self.unique_prefix += 1
def findFootnotesPlaceholder(self, root):
@@ -155,7 +162,7 @@ class FootnoteExtension(markdown.Extension):
return div
-class FootnotePreprocessor(markdown.preprocessors.Preprocessor):
+class FootnotePreprocessor(Preprocessor):
""" Find all footnote references and store for later use. """
def __init__ (self, footnotes):
@@ -246,11 +253,11 @@ class FootnotePreprocessor(markdown.preprocessors.Preprocessor):
return items, i
-class FootnotePattern(markdown.inlinepatterns.Pattern):
+class FootnotePattern(Pattern):
""" InlinePattern for footnote markers in a document's body text. """
def __init__(self, pattern, footnotes):
- markdown.inlinepatterns.Pattern.__init__(self, pattern)
+ super(FootnotePattern, self).__init__(pattern)
self.footnotes = footnotes
def handleMatch(self, m):
@@ -263,13 +270,13 @@ class FootnotePattern(markdown.inlinepatterns.Pattern):
if self.footnotes.md.output_format not in ['html5', 'xhtml5']:
a.set('rel', 'footnote') # invalid in HTML5
a.set('class', 'footnote-ref')
- a.text = unicode(self.footnotes.footnotes.index(id) + 1)
+ a.text = text_type(self.footnotes.footnotes.index(id) + 1)
return sup
else:
return None
-class FootnoteTreeprocessor(markdown.treeprocessors.Treeprocessor):
+class FootnoteTreeprocessor(Treeprocessor):
""" Build and append footnote div to end of document. """
def __init__ (self, footnotes):
@@ -291,7 +298,7 @@ class FootnoteTreeprocessor(markdown.treeprocessors.Treeprocessor):
else:
root.append(footnotesDiv)
-class FootnotePostprocessor(markdown.postprocessors.Postprocessor):
+class FootnotePostprocessor(Postprocessor):
""" Replace placeholders with html entities. """
def __init__(self, footnotes):
self.footnotes = footnotes
diff --git a/markdown/extensions/headerid.py b/markdown/extensions/headerid.py
index cf3df17..33d7d90 100644
--- a/markdown/extensions/headerid.py
+++ b/markdown/extensions/headerid.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python
-
+from __future__ import unicode_literals
"""
HeaderID Extension for Python-Markdown
======================================
@@ -76,7 +75,9 @@ Dependencies:
"""
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..treeprocessors import Treeprocessor
import re
import logging
import unicodedata
@@ -120,7 +121,7 @@ def itertext(elem):
yield e.tail
-class HeaderIdTreeprocessor(markdown.treeprocessors.Treeprocessor):
+class HeaderIdTreeprocessor(Treeprocessor):
""" Assign IDs to headers. """
IDs = set()
@@ -135,7 +136,7 @@ class HeaderIdTreeprocessor(markdown.treeprocessors.Treeprocessor):
if "id" in elem.attrib:
id = elem.get('id')
else:
- id = slugify(u''.join(itertext(elem)), sep)
+ id = slugify(''.join(itertext(elem)), sep)
elem.set('id', unique(id, self.IDs))
if start_level:
level = int(elem.tag[-1]) + start_level
@@ -149,9 +150,9 @@ class HeaderIdTreeprocessor(markdown.treeprocessors.Treeprocessor):
level = int(self.config['level']) - 1
force = self._str2bool(self.config['forceid'])
if hasattr(self.md, 'Meta'):
- if self.md.Meta.has_key('header_level'):
+ if 'header_level' in self.md.Meta:
level = int(self.md.Meta['header_level'][0]) - 1
- if self.md.Meta.has_key('header_forceid'):
+ if 'header_forceid' in self.md.Meta:
force = self._str2bool(self.md.Meta['header_forceid'][0])
return level, force
@@ -165,7 +166,7 @@ class HeaderIdTreeprocessor(markdown.treeprocessors.Treeprocessor):
return default
-class HeaderIdExtension (markdown.Extension):
+class HeaderIdExtension(Extension):
def __init__(self, configs):
# set defaults
self.config = {
@@ -196,8 +197,3 @@ class HeaderIdExtension (markdown.Extension):
def makeExtension(configs=None):
return HeaderIdExtension(configs=configs)
-
-if __name__ == "__main__":
- import doctest
- doctest.testmod()
-
diff --git a/markdown/extensions/html_tidy.py b/markdown/extensions/html_tidy.py
index 80272a3..e5f060c 100644
--- a/markdown/extensions/html_tidy.py
+++ b/markdown/extensions/html_tidy.py
@@ -1,5 +1,4 @@
-#!/usr/bin/env python
-
+from __future__ import unicode_literals
"""
HTML Tidy Extension for Python-Markdown
=======================================
@@ -28,13 +27,16 @@ Dependencies:
"""
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..postprocessors import Postprocessor
+from ..util import text_type
try:
import tidy
except ImportError:
tidy = None
-class TidyExtension(markdown.Extension):
+class TidyExtension(Extension):
def __init__(self, configs):
# Set defaults to match typical markdown behavior.
@@ -54,13 +56,13 @@ class TidyExtension(markdown.Extension):
md.postprocessors['tidy'] = TidyProcessor(md)
-class TidyProcessor(markdown.postprocessors.Postprocessor):
+class TidyProcessor(Postprocessor):
def run(self, text):
# Pass text to Tidy. As Tidy does not accept unicode we need to encode
# it and decode its return value.
enc = self.markdown.tidy_options.get('char_encoding', 'utf8')
- return unicode(tidy.parseString(text.encode(enc),
+ return text_type(tidy.parseString(text.encode(enc),
**self.markdown.tidy_options),
encoding=enc)
diff --git a/markdown/extensions/meta.py b/markdown/extensions/meta.py
index a3ee6fb..a2fbe80 100644
--- a/markdown/extensions/meta.py
+++ b/markdown/extensions/meta.py
@@ -1,5 +1,4 @@
-#!usr/bin/python
-
+from __future__ import unicode_literals
"""
Meta Data Extension for Python-Markdown
=======================================
@@ -40,15 +39,17 @@ Contact: markdown@freewisdom.org
License: BSD (see ../LICENSE.md for details)
"""
-import re
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..preprocessors import Preprocessor
+import re
# Global Vars
META_RE = re.compile(r'^[ ]{0,3}(?P<key>[A-Za-z0-9_-]+):\s*(?P<value>.*)')
META_MORE_RE = re.compile(r'^[ ]{4,}(?P<value>.*)')
-class MetaExtension (markdown.Extension):
+class MetaExtension (Extension):
""" Meta-Data extension for Python-Markdown. """
def extendMarkdown(self, md, md_globals):
@@ -57,7 +58,7 @@ class MetaExtension (markdown.Extension):
md.preprocessors.add("meta", MetaPreprocessor(md), "_begin")
-class MetaPreprocessor(markdown.preprocessors.Preprocessor):
+class MetaPreprocessor(Preprocessor):
""" Get Meta-Data. """
def run(self, lines):
@@ -90,7 +91,3 @@ class MetaPreprocessor(markdown.preprocessors.Preprocessor):
def makeExtension(configs={}):
return MetaExtension(configs=configs)
-
-if __name__ == "__main__":
- import doctest
- doctest.testmod()
diff --git a/markdown/extensions/nl2br.py b/markdown/extensions/nl2br.py
index 3967c75..5636214 100644
--- a/markdown/extensions/nl2br.py
+++ b/markdown/extensions/nl2br.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
"""
NL2BR Extension
===============
@@ -20,17 +21,18 @@ Dependencies:
"""
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..inlinepatterns import SubstituteTagPattern
BR_RE = r'\n'
-class Nl2BrExtension(markdown.Extension):
+class Nl2BrExtension(Extension):
def extendMarkdown(self, md, md_globals):
- br_tag = markdown.inlinepatterns.SubstituteTagPattern(BR_RE, 'br')
+ br_tag = SubstituteTagPattern(BR_RE, 'br')
md.inlinePatterns.add('nl', br_tag, '_end')
def makeExtension(configs=None):
return Nl2BrExtension(configs)
-
diff --git a/markdown/extensions/sane_lists.py b/markdown/extensions/sane_lists.py
index dce04ea..5620ccd 100644
--- a/markdown/extensions/sane_lists.py
+++ b/markdown/extensions/sane_lists.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+from __future__ import unicode_literals
"""
Sane List Extension for Python-Markdown
=======================================
@@ -19,23 +19,25 @@ Copyright 2011 - [Waylan Limberg](http://achinghead.com)
"""
+from __future__ import absolute_import
+from . import Extension
+from ..blockprocessors import OListProcessor, UListProcessor
import re
-import markdown
-class SaneOListProcessor(markdown.blockprocessors.OListProcessor):
+class SaneOListProcessor(OListProcessor):
CHILD_RE = re.compile(r'^[ ]{0,3}((\d+\.))[ ]+(.*)')
SIBLING_TAGS = ['ol']
-class SaneUListProcessor(markdown.blockprocessors.UListProcessor):
+class SaneUListProcessor(UListProcessor):
CHILD_RE = re.compile(r'^[ ]{0,3}(([*+-]))[ ]+(.*)')
SIBLING_TAGS = ['ul']
-class SaneListExtension(markdown.Extension):
+class SaneListExtension(Extension):
""" Add sane lists to Markdown. """
def extendMarkdown(self, md, md_globals):
diff --git a/markdown/extensions/smart_strong.py b/markdown/extensions/smart_strong.py
index 7166989..7ce2d4d 100644
--- a/markdown/extensions/smart_strong.py
+++ b/markdown/extensions/smart_strong.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
'''
Smart_Strong Extension for Python-Markdown
==========================================
@@ -22,13 +23,14 @@ Copyright 2011
'''
-import markdown
-from markdown.inlinepatterns import SimpleTagPattern
+from __future__ import absolute_import
+from . import Extension
+from ..inlinepatterns import SimpleTagPattern
SMART_STRONG_RE = r'(?<!\w)(_{2})(?!_)(.+?)(?<!_)\2(?!\w)'
STRONG_RE = r'(\*{2})(.+?)\2'
-class SmartEmphasisExtension(markdown.extensions.Extension):
+class SmartEmphasisExtension(Extension):
""" Add smart_emphasis extension to Markdown class."""
def extendMarkdown(self, md, md_globals):
@@ -38,7 +40,3 @@ class SmartEmphasisExtension(markdown.extensions.Extension):
def makeExtension(configs={}):
return SmartEmphasisExtension(configs=dict(configs))
-
-if __name__ == '__main__':
- import doctest
- doctest.testmod()
diff --git a/markdown/extensions/tables.py b/markdown/extensions/tables.py
index 1388cb5..3edaccf 100644
--- a/markdown/extensions/tables.py
+++ b/markdown/extensions/tables.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+from __future__ import unicode_literals
"""
Tables Extension for Python-Markdown
====================================
@@ -14,11 +14,13 @@ A simple example:
Copyright 2009 - [Waylan Limberg](http://achinghead.com)
"""
-import markdown
-from markdown.util import etree
+from __future__ import absolute_import
+from . import Extension
+from ..blockprocessors import BlockProcessor
+from ..util import etree
-class TableProcessor(markdown.blockprocessors.BlockProcessor):
+class TableProcessor(BlockProcessor):
""" Process Tables. """
def test(self, parent, block):
@@ -84,7 +86,7 @@ class TableProcessor(markdown.blockprocessors.BlockProcessor):
return row.split('|')
-class TableExtension(markdown.Extension):
+class TableExtension(Extension):
""" Add tables to Markdown. """
def extendMarkdown(self, md, md_globals):
diff --git a/markdown/extensions/toc.py b/markdown/extensions/toc.py
index 1d6639e..f50f11b 100644
--- a/markdown/extensions/toc.py
+++ b/markdown/extensions/toc.py
@@ -1,3 +1,4 @@
+from __future__ import unicode_literals
"""
Table of Contents Extension for Python-Markdown
* * *
@@ -8,10 +9,12 @@ Dependencies:
* [Markdown 2.1+](http://packages.python.org/Markdown/)
"""
-import markdown
-from markdown.util import etree
-from markdown.extensions.headerid import slugify, unique, itertext
+from __future__ import absolute_import
+from . import Extension
+from ..treeprocessors import Treeprocessor
+from ..util import etree
+from .headerid import slugify, unique, itertext
import re
@@ -77,7 +80,7 @@ def order_toc_list(toc_list):
return ordered_list
-class TocTreeprocessor(markdown.treeprocessors.Treeprocessor):
+class TocTreeprocessor(Treeprocessor):
# Iterator wrapper to get parent and child all at once
def iterparent(self, root):
@@ -182,7 +185,7 @@ class TocTreeprocessor(markdown.treeprocessors.Treeprocessor):
self.markdown.toc = toc
-class TocExtension(markdown.Extension):
+class TocExtension(Extension):
TreeProcessorClass = TocTreeprocessor
diff --git a/markdown/extensions/wikilinks.py b/markdown/extensions/wikilinks.py
index 5384adb..de4d9aa 100644
--- a/markdown/extensions/wikilinks.py
+++ b/markdown/extensions/wikilinks.py
@@ -1,5 +1,4 @@
-#!/usr/bin/env python
-
+from __future__ import unicode_literals
'''
WikiLinks Extension for Python-Markdown
======================================
@@ -78,7 +77,10 @@ Dependencies:
* [Markdown 2.0+](http://packages.python.org/Markdown/)
'''
-import markdown
+from __future__ import absolute_import
+from . import Extension
+from ..inlinepatterns import Pattern
+from ..util import etree
import re
def build_url(label, base, end):
@@ -87,7 +89,7 @@ def build_url(label, base, end):
return '%s%s%s'% (base, clean_label, end)
-class WikiLinkExtension(markdown.Extension):
+class WikiLinkExtension(Extension):
def __init__(self, configs):
# set extension defaults
self.config = {
@@ -111,9 +113,9 @@ class WikiLinkExtension(markdown.Extension):
md.inlinePatterns.add('wikilink', wikilinkPattern, "<not_strong")
-class WikiLinks(markdown.inlinepatterns.Pattern):
+class WikiLinks(Pattern):
def __init__(self, pattern, config):
- markdown.inlinepatterns.Pattern.__init__(self, pattern)
+ super(WikiLinks, self).__init__(pattern)
self.config = config
def handleMatch(self, m):
@@ -121,7 +123,7 @@ class WikiLinks(markdown.inlinepatterns.Pattern):
base_url, end_url, html_class = self._getMeta()
label = m.group(2).strip()
url = self.config['build_url'](label, base_url, end_url)
- a = markdown.util.etree.Element('a')
+ a = etree.Element('a')
a.text = label
a.set('href', url)
if html_class:
@@ -136,20 +138,14 @@ class WikiLinks(markdown.inlinepatterns.Pattern):
end_url = self.config['end_url']
html_class = self.config['html_class']
if hasattr(self.md, 'Meta'):
- if self.md.Meta.has_key('wiki_base_url'):
+ if 'wiki_base_url' in self.md.Meta:
base_url = self.md.Meta['wiki_base_url'][0]
- if self.md.Meta.has_key('wiki_end_url'):
+ if 'wiki_end_url' in self.md.Meta:
end_url = self.md.Meta['wiki_end_url'][0]
- if self.md.Meta.has_key('wiki_html_class'):
+ if 'wiki_html_class' in self.md.Meta:
html_class = self.md.Meta['wiki_html_class'][0]
return base_url, end_url, html_class
def makeExtension(configs=None) :
return WikiLinkExtension(configs=configs)
-
-
-if __name__ == "__main__":
- import doctest
- doctest.testmod()
-