コード例 #1
0
ファイル: MDGenerator.py プロジェクト: Rui-Xin/MiDuSite
    def generatePage(self, page):
        page_info = MiduHelper.parseVar(page.group(1))
        bkpath = self.mdvar.path_backup()
        self.mdvar._path['pg_tmpl'] = page_info['target']
        self.mdvar._path['pg_para'] = page_info['paras']
        if self.mdvar._listinfo['in_list'] and \
                'dst' not in page_info['paras']:
            rel_path = os.path.relpath(
                self.mdvar._listinfo['list_root'],
                self.mdvar._path['curdir'])
            targ_path = rel_path + '/' + page_info['target']
            page_info['paras']['dst'] = targ_path

        if 'suffix' in page_info['paras']:
            page_info['paras']['dst'] += page_info['paras']['suffix']
        self.mdvar.path_changepage(page_info['paras']['dst'])
        dst_name = self.mdvar._path['curdir'] + '/' +\
            self.mdvar._path['curpage'] + '.html'

        if dst_name in self.page_cached:
            self.mdvar.path_restore(bkpath)
            return dst_name

        MiduHelper.mkdir_p(self.mdvar._path['dst_prefix'] +
                           self.mdvar._path['curdir'])

        with open(self.mdvar._path['dst_prefix'] +
                  dst_name, 'w') as f_w:
            lines = self.loaded['page'].get(page_info['target'])
            self.page_cached[dst_name] = dst_name
            new_lines = self.replace(lines)
            f_w.write(new_lines)
            self.mdvar.path_restore(bkpath)

            return dst_name

        self.mdvar.path_restore(bkpath)

        return ''