finish initial plugin system, get email and other features working
[logparse.git] / logparse / formatting.py
index b3ae5f060b550064357d50b88b424a7da2a22f3f..aa4b71f6d79fe3e6b8170d34d5f278d4977ac339 100644 (file)
@@ -10,9 +10,8 @@
 import os
 import re
 import locale
+from string import Template
 
-#import util
-#import interface
 import logparse
 from . import interface, util, config
 
@@ -29,9 +28,11 @@ DATEFMT = "%x"
 def init_varfilter():
     global varfilter
     global varpattern
+    global varsubst
     varfilter = {"$title$": config.prefs['title'], "$date$": interface.start.strftime(DATEFMT),"$time$": interface.start.strftime(TIMEFMT), "$hostname$": util.hostname(config.prefs['hostname-path']), "$version$": logparse.__version__, "$css$": os.path.relpath(config.prefs['css'], os.path.dirname(config.prefs['output']))}
     varfilter = dict((re.escape(k), v) for k, v in varfilter.items())
     varpattern = re.compile("|".join(varfilter.keys()))
+    varsubst = dict(title=config.prefs['title'], date=interface.start.strftime(DATEFMT), time=interface.start.strftime(TIMEFMT), hostname=util.hostname(config.prefs['hostname-path']), version=logparse.__version__, css=os.path.relpath(config.prefs['css'], os.path.dirname(config.prefs['output'])))
 
 def writetitle(title):  # write title for a section
     if (title == '' or '\n' in title):
@@ -72,9 +73,8 @@ def header(template):   # return a parsed html header from file
 #    except Exception as e:
 #        logger.warning("could not copy main.css - " + str(e))
     init_varfilter()
-    headercontent = open(template, 'r').read()
-    headercontent = varpattern.sub(lambda m: varfilter[re.escape(m.group(0))], headercontent)
-    return headercontent
+    headercontent = Template(open(template, 'r').read())
+    return headercontent.safe_substitute(varsubst)
 
 def orderbyfreq(l):     # order a list by the frequency of its elements and remove duplicates
     temp_l = l[:]