# # Collective Knowledge (dealing with table) # # See CK LICENSE.txt for licensing details # See CK COPYRIGHT.txt for copyright details # # Developer: Grigori Fursin, Grigori.Fursin@cTuning.org, http://fursin.net # cfg={} # Will be updated by CK (meta description of this module) work={} # Will be updated by CK (temporal data) ck=None # Will be updated by CK (initialized CK kernel) # Local settings ############################################################################## # Initialize module def init(i): """ Input: {} Output: { return - return code = 0, if successful > 0, if error (error) - error text if return > 0 } """ return {'return':0} ############################################################################## # draw table def draw(i): """ Input: { table - table to draw [[],[],[]...], [[],[],[]...] ...] (out) - txt (default) or html } Output: { return - return code = 0, if successful > 0, if error (error) - error text if return > 0 string - output } """ o=i.get('out','') table=i.get('table',[]) s='' if len(table)>0: lx=len(table[0]) lwidth=[] for l in range(0, lx): lwidth.append(-1) # If 'txt', check length of all entries if o=='txt': for t in table: for l in range(0, lx): sx=str(t[l]) lw=lwidth[l] if lw==-1 or len(sx)>lw: lwidth[l]=len(sx) for t in table: for l in range(0, lx): sx=str(t[l]) lw=lwidth[l] s+=sx.ljust(lw+2) s+='\n' else: s='\n' s+=' \n' s+=' \n' for t in table: s+=' \n' for l in range(0, lx): sx=str(t[l]) s+=' \n' s+=' \n' s+='
'+sx+'
\n' s+=' \n' s+='\n' return {'return':0, 'string':s} ############################################################################## # prepare table (in HTML and LaTex) def prepare(i): """ Input: { table table_header (table_custom) (table_style) (header_style) (header_element_style) (element_style) (row_style) (html_before_table) (html_after_table) (tex_before_table) (tex_after_table) (record_html) - file (with path) to record produced HTML (record_tex) - file (with path) to record produced TEX } Output: { return - return code = 0, if successful > 0, if error (error) - error text if return > 0 html - prepared HTML tex - prepared :aTex } """ table=i['table'] table_header=i['table_header'] table_custom=i.get('table_custom',{}) h=i.get('html_before_table','') # HTML t=i.get('tex_before_table','') # LaTex ts=i.get('table_style','') hs=i.get('header_style','') rs=i.get('row_style','') hes=i.get('header_element_style','') es=i.get('element_style','') # Preparing Header h+='\n' t+=' \\begin{tabular}{|' for x in table_header: t+=x.get('tex','')+'|' t+='}\n' h+=' \n' t+=' \\hline\n' t+=' ' first=True for x in table_header: n=x.get('name','') if first: first=False else: t+=' & ' t+='\\textbf{'+n+'}' if x.get('html_change_space','')=='yes': n=n.replace(' ',' ') h+=' \n' h+=' \n' t+=' \\\\ \n' # Preparing table for ix in range(0, len(table)): x=table[ix] cx={} if ix\n' t+=' \\hline\n' t+=' ' first=True for iy in range(0, len(x)): st={} if iy\n' if st.get('html_before','')!='': h+=' '+st['html_before'] h+=' '+str(y)+'\n' if st.get('html_after','')!='': h+=' '+st['html_after'] h+=' \n' z=cx.get('field_'+str(iy)+'_tex','') if z=='': z=str(x[iy]) if first: first=False else: t+=' & ' if st.get('tex_before','')!='': t+=st['tex_before'] t+=' '+str(z)+' ' if st.get('tex_after','')!='': t+=st['tex_after'] t+='\\\\\n' h+=' \n' t+=" \\hline\n" # Finalizing h+='
\n' h+=' '+n+'\n' h+='
\n' h+=i.get('html_after_table','') t+=' \\end{tabular}' t+=' '+i.get('tex_after_table','') # Check if record if i.get('record_html','')!='': r=ck.save_text_file({'text_file':i['record_html'], 'string':h}) if i.get('record_tex','')!='': r=ck.save_text_file({'text_file':i['record_tex'], 'string':t}) return {'return':0, 'html':h, 'tex':t}