def make_function_from_root(root, tmplt_obj, suffix=''): """build python source to make the Elements from scratch""" suffix = suffix.replace(',', '_') if suffix in func_quick_lookupD: n = 2 while '%s_%i' % (suffix, n) in func_quick_lookupD: n += 1 suffix = '%s_%i' % (suffix, n) func_name = python_def_from_tag(root.tag) if suffix: func_name = func_name + '_%s' % python_def_from_tag(suffix) # Used after code is generated func_quick_lookupD[suffix] = func_name keyL = sorted(root.keys()) sL = ['def %s():' % (func_name, )] sL.append(' ') doc_str = 'Build Element %s' % force_to_short(root.tag) if suffix: doc_str = doc_str + ' for %s' % suffix sL.append(''' """%s """''' % doc_str) sL.append(' ') sOut = tmplt_obj.elem_tostring(root, include_ns=False, use_linebreaks=True) sOut = fix_utf8(sOut) sL.append(''' elem = build_element( """%s""" )''' % sOut) sL.append(' ') sL.append(' return elem\n\n') return '\n'.join(sL)
def make_function_from_root( root, tmplt_obj, suffix='' ): """build python source to make the Elements from scratch""" suffix = suffix.replace(',','_') if suffix in func_quick_lookupD: n = 2 while '%s_%i'%(suffix, n) in func_quick_lookupD: n += 1 suffix = '%s_%i'%(suffix, n) func_name = python_def_from_tag(root.tag) if suffix: func_name = func_name + '_%s'%python_def_from_tag(suffix) # Used after code is generated func_quick_lookupD[suffix] = func_name dname = root.get( force_to_tag('style:display-name'), '' ) lname = root.get( force_to_tag('style:name'), '' ) if dname and lname: layout_name_lookupD[dname] = lname display_name_lookupD[lname] = dname keyL = sorted( root.keys() ) sL = ['def %s():'%(func_name, )] sL.append( ' ' ) doc_str = 'Build Element %s'%force_to_short(root.tag) if suffix: doc_str = doc_str + ' for %s'%suffix sL.append( ''' """%s """'''%doc_str ) sL.append( ' ' ) sOut = tmplt_obj.elem_tostring(root, include_ns=False, use_linebreaks=True ) sOut = fix_utf8( sOut ) sL.append( ''' elem = build_element( """%s""" )'''%sOut ) sL.append( ' ' ) sL.append( ' return elem\n\n' ) return '\n'.join(sL)
) fOut.write('\n\nlayout_page_name_lookupD = {}') fOut.write('\n\n') # do style:presentation-page-layout for style in odp.content_body_presentation.getchildren(): layout_name = style.get( force_to_tag('presentation:presentation-page-layout-name'), 'nofam') master_name = style.get(force_to_tag('draw:master-page-name'), 'noname') if layout_name == 'nofam': suffix = force_to_short(style.tag) else: suffix = layout_name master_page_name_lookupD[layout_name] = master_name layout_page_name_lookupD[master_name] = layout_name fOut.write( make_function_from_root(style, odp.content_xml_obj, suffix=suffix).encode('utf-8')) fOut.write('\n\n# Set values in func_quick_lookupD\n') keyL = sorted(func_quick_lookupD.keys()) for key in keyL: fOut.write('func_quick_lookupD["%s"] = %s\n' % (key, func_quick_lookupD[key]))
fOut.write('\n\n# Use layout_page_name_lookupD for access layout page names') fOut.write('\n# index=layout name (e.g. "Master1-Layout24-tbl-Title-and-Table"), value=master name (e.g. "Master1-PPL24")') fOut.write( '\n\nlayout_page_name_lookupD = {}' ) fOut.write('\n\n') # do style:presentation-page-layout for style in odp.content_body_presentation.getchildren(): layout_name = style.get( force_to_tag('presentation:presentation-page-layout-name'), 'nofam' ) master_name = style.get( force_to_tag('draw:master-page-name'), 'noname' ) if layout_name == 'nofam': suffix = force_to_short(style.tag) else: suffix = layout_name master_page_name_lookupD[ layout_name ] = master_name layout_page_name_lookupD[ master_name ] = layout_name fOut.write( make_function_from_root( style, odp.content_xml_obj, suffix=suffix ).encode('utf-8') ) fOut.write('\n\n# Set values in func_quick_lookupD\n') keyL = sorted( func_quick_lookupD.keys() ) for key in keyL: fOut.write( 'func_quick_lookupD["%s"] = %s\n'%(key, func_quick_lookupD[key]) ) fOut.write('\n\n')