Skip to content
This repository has been archived by the owner on Jan 29, 2022. It is now read-only.

ctrochalakis/django-markuputils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Markup Utils
============

This a django application that adds markup-chain functionallity.
All you have to do is include markup_utils to your apps and add a
MARKUP_CHAIN setting in your settings.py file.

The app also includes a build-in filter for code highlighting
and simple replacing, see below
for details.

e.x.

settings.py:

INSTALLED_APPS = (
    ...
    'markup_utils',
    ...
)

MARKUP_CHAIN = (
    'markdown.markdown',
    'markup_utils.filters.code_highlighter',
    'markup_utils.filters.simple_replace',
)

Usage
=====

  * Through a python function:
  	from markup_utils.filters import markup_chain
	markup_chain(some_content)
  * Through templatetags
  	{% include markuptags %}
	{{ object.body|markup_chain }}

The filters will be called in up to bottom order.

Sample use
==========
You can achieve the same result by using any of the following methods.
Although the first method can be extended to use the caching mechanism,
which is very cool. Checkout this blog entry for details.

http://www.eflorenzano.com/blog/post/django-tip-denormalization-alternative/

Use it in the model
-------------------

models.py: 

from django.db import models
from markup_utils.filters import markup_chain

class Post(models.Model):
    body = models.TextField('body')

    def _get_body_html(self):
      return mark_safe(markup_chain(self.body))
    body_html = property(_get_body_html)

mytemplate.html:

{{ post.body_html }}

Use it in the template
----------------------

my_template.html:

{% load markuptags %}
{{ post.body|markup_chain }}

Code highlighting
=================

code_highlighter finds <pre class="language">...</pre> blocks and
replaces them with code highlighted blocks using pygments.
You can use css to format the code, some default css is included in
static/codehighlight.css

Inner workings
--------------
Markdown doesn't touch <pre> elements. So it's safe to pass our content
to the markdown filter first and then pass it to code_highlighter.


Simple replace
==============

`simple_replace` replaces html elements with a specified expression.
All you have to do is specify the elements and the replacing string in your
settings file:

MARKUP_CHAIN = (
    ...
    'markup_utils.filters.simple_replace',
    ...
)

MARKUP_SIMPLE_REPLACE = (
    dict(element='span',klass='dj-ticket',
        replace_with="<a href=\"http://code.djangoproject.com/ticket/%(content)s\">#%(content)s</a>"),
    dict(...
)

Replaces `<span class="dj-ticket">6969</span>` with
`<a href="http://code.djangoproject.com/ticket/6969">#6969</a>`

About

Markup utils for Django

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages