Add support for icon drivers. Add a driver for Font Awesome.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2018-04-11 04:16:57 -04:00
parent bce5411ea7
commit 05aa1fc038

View File

@@ -1,29 +1,39 @@
from __future__ import unicode_literals
from django.template import Template, Context
from django.template import Context, Template
class IconDriver(object):
_registry = {}
@classmethod
def get(cls, name):
return cls._registry[name]
@classmethod
def register(cls, driver_class):
cls._registry[driver_class.name] = driver_class
class FontAwesomeDriver(IconDriver):
name = 'fontawesome'
template_text = '<i class="hidden-xs hidden-sm hidden-md fa fa-{{ symbol }}"></i>'
def __init__(self, symbol):
self.symbol = symbol
def render(self):
return Template(self.template_text).render(
context=Context({'symbol': self.symbol})
)
class Icon(object):
templates = {
'classes': '<i class="hidden-xs hidden-sm hidden-md {{ classes }}"></i>',
'symbol': '<i class="hidden-xs hidden-sm hidden-md fa fa-{{ symbol }}"></i>'
}
def __init__(self, driver_name, **kwargs):
self.driver = IconDriver.get(name=driver_name)(**kwargs)
def __init__(self, classes=None, symbol=None):
self.classes = classes
self.symbol = symbol
def render(self, **kwargs):
return self.driver.render(**kwargs)
if self.classes:
self.template = self.templates['classes']
else:
self.template = self.templates['symbol']
def render(self):
return Template(self.template).render(
context=Context(
{
'classes': self.classes,
'symbol': self.symbol,
}
)
)
IconDriver.register(driver_class=FontAwesomeDriver)