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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user