sdbus++: Refactor markdown into generic renderer

Change-Id: If5b1270511d9d6bfb0c9430a71d45126257793a9
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/tools/sdbusplus/interface.py b/tools/sdbusplus/interface.py
index 9034f8e..0cdb1a0 100644
--- a/tools/sdbusplus/interface.py
+++ b/tools/sdbusplus/interface.py
@@ -4,8 +4,9 @@
 from .property import Property
 from .method import Method
 from .signal import Signal
+from .renderer import Renderer
 
-class Interface(NamedElement):
+class Interface(NamedElement, Renderer):
     @staticmethod
     def load(name, rootdir='.'):
         filename = os.path.join(rootdir,
@@ -28,5 +29,4 @@
         super(Interface, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("interface.mako.md")
-        return template.render(interface=self, loader=loader)
+        return self.render(loader, "interface.mako.md", interface=self)
diff --git a/tools/sdbusplus/method.py b/tools/sdbusplus/method.py
index b4142cb..f8e2efd 100644
--- a/tools/sdbusplus/method.py
+++ b/tools/sdbusplus/method.py
@@ -1,7 +1,8 @@
 from .property import Property
 from .namedelement import NamedElement
+from .renderer import Renderer
 
-class Method(NamedElement):
+class Method(NamedElement, Renderer):
     def __init__(self, **kwargs):
         self.parameters = [ Property(**p) for p in
             kwargs.pop('parameters', []) ]
@@ -12,5 +13,4 @@
         super(Method, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("method.mako.md")
-        return template.render(method=self, loader=loader)
+        return self.render(loader, "method.mako.md", method=self)
diff --git a/tools/sdbusplus/property.py b/tools/sdbusplus/property.py
index 5b25869..869eef6 100644
--- a/tools/sdbusplus/property.py
+++ b/tools/sdbusplus/property.py
@@ -1,6 +1,7 @@
 from .namedelement import NamedElement
+from .renderer import Renderer
 
-class Property(NamedElement):
+class Property(NamedElement, Renderer):
     def __init__(self, **kwargs):
         self.typeName = kwargs.pop('type', None)
         self.defaultValue = kwargs.pop('default', None)
@@ -8,5 +9,4 @@
         super(Property, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("property.mako.md")
-        return template.render(property=self, loader=loader).strip()
+        return self.render(loader, "property.mako.md", property=self).strip()
diff --git a/tools/sdbusplus/renderer.py b/tools/sdbusplus/renderer.py
new file mode 100644
index 0000000..24e83c8
--- /dev/null
+++ b/tools/sdbusplus/renderer.py
@@ -0,0 +1,7 @@
+class Renderer(object):
+    def __init__(self, **kwargs):
+        super(Renderer, self).__init__(**kwargs)
+
+    def render(self, loader, template, **kwargs):
+        t = loader.get_template(template)
+        return t.render(loader=loader, **kwargs)
diff --git a/tools/sdbusplus/signal.py b/tools/sdbusplus/signal.py
index 3afe759..42dcdce 100644
--- a/tools/sdbusplus/signal.py
+++ b/tools/sdbusplus/signal.py
@@ -1,7 +1,8 @@
 from .property import Property
 from .namedelement import NamedElement
+from .renderer import Renderer
 
-class Signal(NamedElement):
+class Signal(NamedElement, Renderer):
     def __init__(self, **kwargs):
         self.properties = [ Property(**p) for p in
             kwargs.pop('properties', []) ]
@@ -9,5 +10,4 @@
         super(Signal, self).__init__(**kwargs)
 
     def markdown(self, loader):
-        template = loader.get_template("signal.mako.md")
-        return template.render(signal=self, loader=loader)
+        return self.render(loader, "signal.mako.md", signal=self)