'Loads an object from the repository.
:param topic: the name of a context (for example, menu)
:param obj: the help object where to load the help data
(if None, a new one is created)
:param vars: a dict of variables to replace in the help text'

def load_help(self, topic, obj=None, vars=None):

    def subst(templ):
        if (not vars):
            return templ
        return Template(templ).safe_substitute(vars)
    if (not obj):
        obj = HelpContainer()
    elt = self.__map[topic]
    for catElt in elt.findall('category'):
        catName = ((('name' in catElt.attrib) and catElt.attrib['name']) or 'default')
        catName = str(catName)
        for itemElt in catElt.findall('item'):
            itemName = str(itemElt.attrib['name'])
            itemName = subst(itemName)
            short = itemElt.findtext('head')
            full = itemElt.findtext('body')
            if (not short):
                short = itemElt.text
            short = subst(short)
            if full:
                full = subst(full)
            short = short.replace('\n', '\r\n')
            if full:
                full = full.replace('\n', '\r\n')
            obj.add_help_entry(itemName, (short, full), catName)
    return obj
