Skip to content

Commit

Permalink
template engine approach
Browse files Browse the repository at this point in the history
  • Loading branch information
lightstrike committed Nov 12, 2015
1 parent c09be7e commit 6becf56
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 12 deletions.
46 changes: 35 additions & 11 deletions djeff/djeff.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
from HTMLParser import HTMLParser
from django.template.backends.django import DjangoTemplates, Template
from django.template.engine import _dirs_undefined
from html.parser import HTMLParser


class DjeffTemplates(DjangoTemplates):
def get_template(self, template_name, dirs=_dirs_undefined):
return DjeffTemplate(self.engine.get_template(template_name, dirs))


class DjeffTemplate(Template):
def render(self, context=None, request=None):
rendered_context = super().render(context, request)
return djeffify(rendered_context)


def djeffify(rendered_string):
"""
This function contains the core logic for a
middleware, template tag or Template engine approach
"""
parser = DjeffParser()
parser.feed(rendered_string)
return parser.dhtml


def reconstruct_attrs(attrs):
Expand All @@ -9,20 +32,21 @@ def reconstruct_attrs(attrs):


class DjeffParser(HTMLParser):
text = ''
def __init__(self, *, convert_charrefs=True):
super().__init__(convert_charrefs)
self.dhtml = ''

def handle_starttag(self, tag, attrs):
self.text += ('<%s %s>' % (tag, reconstruct_attrs(attrs)))
self.dhtml += '<{} {}>'.format(tag, reconstruct_attrs(attrs))

def handle_endtag(self, tag):
self.text += ('</%s>' % tag)
self.dhtml += '</{}>'.format(tag)

def handle_data(self, data):
data = data.replace(' G', ' dj')
self.text += data
"""
FIXME: Add more functionality!
"""
if data.strip():
data = "d{}".format(data)
self.dhtml += data


def djeff(string):
parser = DjeffParser()
parser.feed(string)
return parser.text
2 changes: 1 addition & 1 deletion requirements_dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ coverage==4.0
Sphinx==1.3.1
cryptography==1.0.1
PyYAML==3.11

django==1.8.5

0 comments on commit 6becf56

Please sign in to comment.