aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmarkdown.py41
-rw-r--r--test-markdown.py3
-rw-r--r--tests/extensions-x-codehilite/code.html19
-rw-r--r--tests/extensions-x-codehilite/code.txt12
-rw-r--r--tests/extensions-x-tables/tables.html30
-rw-r--r--tests/extensions-x-tables/tables.txt15
6 files changed, 110 insertions, 10 deletions
diff --git a/markdown.py b/markdown.py
index b5903f5..059ac87 100755
--- a/markdown.py
+++ b/markdown.py
@@ -161,8 +161,10 @@ INLINE_PLACEHOLDER_PREFIX = u'\u0001'
INLINE_PLACEHOLDER_SUFFIX = u'\u0002'
# a template for html placeholders
-HTML_PLACEHOLDER_PREFIX = "qaodmasdkwaspemas"
-HTML_PLACEHOLDER = HTML_PLACEHOLDER_PREFIX + "%dajkqlsmdqpakldnzsdfls"
+START = u'\u0001'
+END = u'\u0002'
+HTML_PLACEHOLDER_PREFIX = START+"html:"
+HTML_PLACEHOLDER = HTML_PLACEHOLDER_PREFIX + "%d"+END
BLOCK_LEVEL_ELEMENTS = ['p', 'div', 'blockquote', 'pre', 'table',
'dl', 'ol', 'ul', 'script', 'noscript',
@@ -1486,9 +1488,9 @@ class Markdown:
break
# Check if the next non-blank line is still a part of the list
- if ( RE.regExp['ul'].match(next) or
- RE.regExp['ol'].match(next) or
- RE.regExp['tabbed'].match(next)):
+
+ if ( RE.regExp[listexpr].match(next) or
+ RE.regExp['tabbed'].match(next) ):
# get rid of any white space in the line
items[item].append(line.strip())
looseList = loose or looseList
@@ -1870,6 +1872,10 @@ class Markdown:
return u""
# Fixup the source text
+
+ self.source = self.source.replace(START, "")
+ self.source = self.source.replace(END, "")
+
self.source = self.source.replace("\r\n", "\n").replace("\r", "\n")
self.source += "\n\n"
self.source = self.source.expandtabs(TAB_LENGTH)
@@ -2047,6 +2053,22 @@ class Extension:
""" Set a config setting for `key` with the given `value`. """
self.config[key][0] = value
+ def extendMarkdown(self, md, md_globals):
+ """
+ Add the various proccesors and patterns to the Markdown Instance.
+
+ This method must be overriden by every extension.
+
+ Ketword arguments:
+
+ * md: The Markdown instance.
+
+ * md_globals: All global variables availabel in the markdown module
+ namespace.
+
+ """
+ pass
+
def load_extension(ext_name, configs = []):
"""
@@ -2076,11 +2098,12 @@ def load_extension(ext_name, configs = []):
try:
module = __import__(extension_module_name)
- except:
- message(CRITICAL,
- "couldn't load extension %s (looking for %s module)"
+ except ImportError:
+ message(WARN,
+ "Couldn't load extension '%s' from \"%s\" - continuing without."
% (ext_name, extension_module_name) )
- sys.exit(1)
+ # Return a dummy (do nothing) Extension as silent failure
+ return Extension(configs={})
return module.makeExtension(configs.items())
diff --git a/test-markdown.py b/test-markdown.py
index 3d14c10..c936464 100644
--- a/test-markdown.py
+++ b/test-markdown.py
@@ -358,7 +358,8 @@ markdown = __import__(MARKDOWN_FILE)
testDirectory("tests/markdown-test", measure_time=True)
testDirectory("tests/misc", measure_time=True)
-#testDirectory("tests/extensions-x-footnotes")
+testDirectory("tests/extensions-x-footnotes")
+#testDirectory("tests/extensions-x-tables")
# testDirectory("tests/extensions-x-ext1-ext2")
testDirectory("tests/safe_mode", measure_time=True, safe_mode="escape")
diff --git a/tests/extensions-x-codehilite/code.html b/tests/extensions-x-codehilite/code.html
new file mode 100644
index 0000000..43b09ea
--- /dev/null
+++ b/tests/extensions-x-codehilite/code.html
@@ -0,0 +1,19 @@
+
+<p>Some text
+</p>
+<table><tr><td class="linenos"><pre>1
+2
+3
+4
+5
+6</pre></td><td class="code"><div class="codehilite"><pre><span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="p">:</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">pattern</span>
+ <span class="bp">self</span><span class="o">.</span><span class="n">compiled_re</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">&quot;^(.*)</span><span class="si">%s</span><span class="s">(.*)$&quot;</span> <span class="o">%</span> <span class="n">pattern</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">DOTALL</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">getCompiledRegExp</span> <span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="p">:</span>
+ <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">compiled_re</span>
+</pre></div>
+</td></tr></table><p>More text
+</p>
+
+
diff --git a/tests/extensions-x-codehilite/code.txt b/tests/extensions-x-codehilite/code.txt
new file mode 100644
index 0000000..6c62e6a
--- /dev/null
+++ b/tests/extensions-x-codehilite/code.txt
@@ -0,0 +1,12 @@
+
+Some text
+
+ #!python
+ def __init__ (self, pattern) :
+ self.pattern = pattern
+ self.compiled_re = re.compile("^(.*)%s(.*)$" % pattern, re.DOTALL)
+
+ def getCompiledRegExp (self) :
+ return self.compiled_re
+
+More text \ No newline at end of file
diff --git a/tests/extensions-x-tables/tables.html b/tests/extensions-x-tables/tables.html
new file mode 100644
index 0000000..fad47b2
--- /dev/null
+++ b/tests/extensions-x-tables/tables.html
@@ -0,0 +1,30 @@
+
+<p>Before
+</p>
+<table><tr>
+<td> a </td>
+<th> b </th>
+</tr><tr>
+<td> <a href="#">c</a> </td>
+<td> <em>d</em> </td>
+</tr></table><p>Another
+</p>
+<table><tr>
+<td> a </td>
+<td> b </td>
+</tr><tr>
+<td> <em>a</em> </td>
+<td> b </td>
+</tr><tr>
+<td> a </td>
+<td> b </td>
+</tr><tr>
+<td> a </td>
+<td> b </td>
+</tr><tr>
+<td> c </td>
+<td> <em>d</em> </td>
+</tr></table><p>After
+</p>
+
+
diff --git a/tests/extensions-x-tables/tables.txt b/tests/extensions-x-tables/tables.txt
new file mode 100644
index 0000000..1cdab46
--- /dev/null
+++ b/tests/extensions-x-tables/tables.txt
@@ -0,0 +1,15 @@
+Before
+
+| a |* b *|
+| [c](#) | *d* |
+
+Another
+
+| a | b |
+| _a_ | b |
+| a | b |
+| a | b |
+| c | *d* |
+
+After
+