mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #241 -- added django.contrib.markup app with markup templatetags for Textile, ReST and Markdown
git-svn-id: http://code.djangoproject.com/svn/django/trunk@467 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		
							
								
								
									
										0
									
								
								django/contrib/markup/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								django/contrib/markup/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										0
									
								
								django/contrib/markup/templatetags/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								django/contrib/markup/templatetags/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										46
									
								
								django/contrib/markup/templatetags/markup.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								django/contrib/markup/templatetags/markup.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| """ | ||||
| Set of "markup" template filters for Django.  These filters transform plain text | ||||
| markup syntaxes to HTML; currently there is support for: | ||||
|  | ||||
|     * Textile, which requires the PyTextile library available at | ||||
|       http://dealmeida.net/projects/textile/ | ||||
|        | ||||
|     * Markdown, which requires the Python-markdown library from | ||||
|       http://www.freewisdom.org/projects/python-markdown | ||||
|        | ||||
|     * ReStructuredText, which requires docutils from http://docutils.sf.net/ | ||||
|      | ||||
| In each case, if the required library is not installed, the filter will | ||||
| silently fail and return the un-marked-up text. | ||||
| """ | ||||
|  | ||||
| from django.core import template | ||||
|  | ||||
| def textile(value, _): | ||||
|     try: | ||||
|         import textile | ||||
|     except ImportError: | ||||
|         return value | ||||
|     else: | ||||
|         return textile.textile(value) | ||||
|          | ||||
| def markdown(value, _): | ||||
|     try: | ||||
|         import markdown | ||||
|     except ImportError: | ||||
|         return value | ||||
|     else: | ||||
|         return markdown.markdown(value) | ||||
|          | ||||
| def restructuredtext(value, _): | ||||
|     try: | ||||
|         from docutils.core import publish_parts | ||||
|     except ImportError: | ||||
|         return value | ||||
|     else: | ||||
|         parts = publish_parts(source=value, writer_name="html4css1") | ||||
|         return parts["fragment"] | ||||
|          | ||||
| template.register_filter("textile", textile, False) | ||||
| template.register_filter("markdown", markdown, False) | ||||
| template.register_filter("restructuredtext", restructuredtext, False) | ||||
							
								
								
									
										45
									
								
								tests/othertests/markup.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								tests/othertests/markup.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| # Quick tests for the markup templatetags (django.contrib.markup) | ||||
| # | ||||
| # Requires that all supported markup modules be installed | ||||
| # (http://dealmeida.net/projects/textile/,  | ||||
| # http://www.freewisdom.org/projects/python-markdown,  and  | ||||
| # http://docutils.sf.net/) | ||||
|  | ||||
|  | ||||
| from django.core.template import Template, Context | ||||
| import django.contrib.markup.templatetags.markup # this registers the filters | ||||
|  | ||||
| # simple examples 'cause this isn't actually testing the markup, just | ||||
| # that the filters work as advertised | ||||
|  | ||||
| textile_content = """Paragraph 1 | ||||
|  | ||||
| Paragraph 2 with "quotes" and @code@""" | ||||
|  | ||||
| markdown_content = """Paragraph 1 | ||||
|  | ||||
| ## An h2 with *italics*""" | ||||
|  | ||||
| rest_content = """Paragraph 1 | ||||
|  | ||||
| Paragraph 2 with a link_ | ||||
|  | ||||
| .. _link: http://www.example.com/""" | ||||
|  | ||||
| t = Template("""{{ textile_content|textile }} | ||||
| ---- | ||||
| {{ markdown_content|markdown }} | ||||
| ---- | ||||
| {{ rest_content|restructuredtext }}""") | ||||
|  | ||||
| rendered = t.render(Context(locals())) | ||||
|  | ||||
| assert rendered.strip() == """<p>Paragraph 1</p> | ||||
|  | ||||
| <p>Paragraph 2 with “quotes” and <code>code</code></p> | ||||
| ---- | ||||
| <p>Paragraph 1</p><h2>An h2 with *italics*</h2> | ||||
|  | ||||
| ---- | ||||
| <p>Paragraph 1</p> | ||||
| <p>Paragraph 2 with a <a class="reference" href="http://www.example.com/">link</a></p>""" | ||||
		Reference in New Issue
	
	Block a user