code: def template(basedir, text, vars, lookup_fatal=True, expand_lists=False):
      ''' run a text buffer through the templating engine until it no longer changes '''
  
      try:
          text = text.decode('utf-8')
      except UnicodeEncodeError:
          pass # already unicode
      text = varReplace(basedir, unicode(text), vars, lookup_fatal=lookup_fatal, expand_lists=expand_lists)
      return texf template(basedir, text, vars, lookup_fatal=True, expand_lists=False):
      ''' run a text buffer through the templating engine until it no longer changes '''
  
      try:
          text = text.decode('utf-8')
      except UnicodeEncodeError:
          pass # already unicode
      text = varReplace(basedir, unicode(text), vars, lookup_fatal=lookup_fatal, expand_lists=expand_lists)
      return text
docs: run a text buffer through the templating engine until it no longer changes