diff options
-rwxr-xr-x | markdown.py | 41 | ||||
-rw-r--r-- | test-markdown.py | 3 | ||||
-rw-r--r-- | tests/extensions-x-codehilite/code.html | 19 | ||||
-rw-r--r-- | tests/extensions-x-codehilite/code.txt | 12 | ||||
-rw-r--r-- | tests/extensions-x-tables/tables.html | 30 | ||||
-rw-r--r-- | tests/extensions-x-tables/tables.txt | 15 |
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">"^(.*)</span><span class="si">%s</span><span class="s">(.*)$"</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 + |