def extract_data_from_jump_to(s): r""" Try to get a label from the search box """ label = '' args = dict() try: if s == 'delta': weight = 12 level = 1 label = "a" else: # see if we can parse the argument as a label s = s.replace(" ", "") # remove white space try: t = parse_newform_label(s) if len(t) == 4: args['level'], args['weight'], args['character'], args[ 'label'] = t elif len(t) == 5: args['level'], args['weight'], args['character'], args[ 'label'], args['embedding'] = t else: raise ValueError return args except ValueError: pass t = parse_space_label(s) if len(t) == 3: args['level'], args['weight'], args['character'] = t return args else: raise ValueError test = re.findall("[a-z]+", s) if len(test) == 1: args['label'] = test[0] test = re.findall("\d+", s) if not test is None and len(test) > 0: args['level'] = int(test[0]) if len(test) > 1: # we also have weight args['weight'] = int(test[1]) if len(test) > 2: # we also have character args['character'] = int(test[2]) except (TypeError, ValueError) as e: emf_logger.error( "Did not get a valid label from search box: {0} ".format(e)) msg = safe_non_valid_input_error( s, " either a newform or a space of modular forms.") msg += " Need input of the form 1.12.1 (for a space) or 1.12.1.a (for a newform)." flash(msg, "error") emf_logger.debug("args={0}".format(s)) return args
def extract_data_from_jump_to(s): r""" Try to get a label from the search box """ label = '' args = dict() try: if s == 'delta': weight = 12 level = 1 label = "a" else: # see if we can parse the argument as a label s = s.replace(" ","") # remove white space try: t = parse_newform_label(s) if len(t) == 4: args['level'],args['weight'],args['character'],args['label'] = t elif len(t) == 5: args['level'],args['weight'],args['character'],args['label'],args['embedding'] = t else: raise ValueError return args except ValueError: pass t = parse_space_label(s) if len(t) == 3: args['level'],args['weight'],args['character'] = t return args else: raise ValueError test = re.findall("[a-z]+", s) if len(test) == 1: args['label'] = test[0] test = re.findall("\d+", s) if not test is None and len(test)>0: args['level'] = int(test[0]) if len(test) > 1: # we also have weight args['weight'] = int(test[1]) if len(test) > 2: # we also have character args['character']=int(test[2]) except (TypeError,ValueError) as e: emf_logger.error("Did not get a valid label from search box: {0} ".format(e)) msg = safe_non_valid_input_error(s," either a newform or a space of modular forms.") msg += " Need input of the form 1.12.1 (for a space) or 1.12.1.a (for a newform)." flash(msg,"error") emf_logger.debug("args={0}".format(s)) return args
def html_table(tbl): r""" Takes a dictonary and returns an html-table. INPUT: -''tbl'' -- dictionary with the following keys - headersh // horozontal headers - headersv // vertical headers - rows -- dictionary of rows of data """ ncols = len(tbl["headersh"]) nrows = len(tbl["headersv"]) data = tbl['data'] if (len(data) != nrows): logger.error("wrong number of rows!") for i in range(nrows): logger.debug("len(%s)=%s" % (i, len(data[i]))) if (len(data[i]) != ncols): logger.error("wrong number of cols [=%s]!" % ncols) if ('atts' in tbl): s = "<table " + str(tbl['atts']) + ">\n" else: s = "<table>\n" format = dict() for i in range(ncols): format[i] = '' if ('data_format' in tbl): if isinstance(tbl['data_format'], dict): if (i in tbl['data_format']): format[i] = tbl['data_format'][i] elif (isinstance(tbl['data_format'], str)): format[i] = tbl['data_format'] if ('header' in tbl): s += "<thead><tr><th><td colspan=\"" + str( ncols) + "\">" + tbl['header'] + "</td></th></tr></thead>" s = s + "<tbody>" # smath="<span class=\"math\">" # check which type of content we have h1 = tbl['headersh'][0] sheaderh = "" sheaderv = "" h1 = tbl['headersv'][0] col_width = dict() if 'col_width' not in tbl: # use maximum width as default maxw = 0 for k in range(ncols): for r in range(nrows): l = len_as_printed(str(data[r][k])) if l > maxw: maxw = l l = l * 10.0 # use true font size? for k in range(ncols): col_width[k] = maxw else: for i in range(ncols): col_width[i] = 0 if 'col_width' in tbl: if i in tbl['col_width']: col_width[i] = tbl['col_width'][i] if ("corner_label" in tbl): l = len_as_printed(str(tbl["corner_label"])) * 10 row = "<tr><td width=\"%s\">" % l row += str(tbl["corner_label"]) + "</td>" else: row = "<tr><td></td>" for k in range(ncols): row = row + "<td>" + sheaderh + str(tbl['headersh'][k]) + "</td> \n" row = row + "</tr> \n" s = s + row for r in range(nrows): l = len_as_printed(str(tbl["headersv"][r])) * 10 logger.debug("l=%s head=%s" % (l, tbl["headersv"])) row = "<tr><td width=\"%s\">" % l row += sheaderv + str(tbl['headersv'][r]) + "</td>" for k in range(ncols): wid = col_width[k] if format[k] == 'html' or format[k] == 'text': row = row + "\t<td halign=\"center\" width=\"" + str( wid) + "\">" if isinstance(data[r][k], list): for ss in data[r][k]: sss = str(ss) if (len(sss) > 0): row += sss else: sss = str(data[r][k]) row += sss row = row + "</td> \n" else: row = row + "\t<td width=\"" + str(wid) + "\">" if isinstance(data[r][k], list): for ss in data[r][k]: sss = latex(ss) if (len(sss) > 0): row += "\(" + sss + "\)" else: sss = latex(data[r][k]) if (len(sss) > 0): row = row + "\(" + sss + "\)</td> \n" row += "</td>\n" # allow for different format in different columns row = row + "</tr> \n" s = s + row s = s + "</tbody></table>" return s
def html_table(tbl): r""" Takes a dictonary and returns an html-table. INPUT: -''tbl'' -- dictionary with the following keys - headersh // horozontal headers - headersv // vertical headers - rows -- dictionary of rows of data """ ncols = len(tbl["headersh"]) nrows = len(tbl["headersv"]) data = tbl['data'] if(len(data) != nrows): logger.error("wrong number of rows!") for i in range(nrows): logger.debug("len(%s)=%s" % (i, len(data[i]))) if(len(data[i]) != ncols): logger.error("wrong number of cols [=%s]!" % ncols) if('atts' in tbl): s = "<table " + str(tbl['atts']) + ">\n" else: s = "<table>\n" format = dict() for i in range(ncols): format[i] = '' if('data_format' in tbl): if isinstance(tbl['data_format'], dict): if(i in tbl['data_format']): format[i] = tbl['data_format'][i] elif(isinstance(tbl['data_format'], str)): format[i] = tbl['data_format'] if('header' in tbl): s += "<thead><tr><th><td colspan=\"" + str(ncols) + "\">" + tbl['header'] + "</td></th></tr></thead>" s = s + "<tbody>" # smath="<span class=\"math\">" # check which type of content we have h1 = tbl['headersh'][0] sheaderh = "" sheaderv = "" h1 = tbl['headersv'][0] col_width = dict() if 'col_width' not in tbl: # use maximum width as default maxw = 0 for k in range(ncols): for r in range(nrows): l = len_as_printed(str(data[r][k])) if l > maxw: maxw = l l = l * 10.0 # use true font size? for k in range(ncols): col_width[k] = maxw else: for i in range(ncols): col_width[i] = 0 if 'col_width' in tbl: if i in tbl['col_width']: col_width[i] = tbl['col_width'][i] if("corner_label" in tbl): l = len_as_printed(str(tbl["corner_label"])) * 10 row = "<tr><td width=\"%s\">" % l row += str(tbl["corner_label"]) + "</td>" else: row = "<tr><td></td>" for k in range(ncols): row = row + "<td>" + sheaderh + str(tbl['headersh'][k]) + "</td> \n" row = row + "</tr> \n" s = s + row for r in range(nrows): l = len_as_printed(str(tbl["headersv"][r])) * 10 logger.debug("l=%s head=%s" % (l, tbl["headersv"])) row = "<tr><td width=\"%s\">" % l row += sheaderv + str(tbl['headersv'][r]) + "</td>" for k in range(ncols): wid = col_width[k] if format[k] == 'html' or format[k] == 'text': row = row + "\t<td halign=\"center\" width=\"" + str(wid) + "\">" if isinstance(data[r][k], list): for ss in data[r][k]: sss = str(ss) if(len(sss) > 0): row += sss else: sss = str(data[r][k]) row += sss row = row + "</td> \n" else: row = row + "\t<td width=\"" + str(wid) + "\">" if isinstance(data[r][k], list): for ss in data[r][k]: sss = latex(ss) if(len(sss) > 0): row += "\(" + sss + "\)" else: sss = latex(data[r][k]) if(len(sss) > 0): row = row + "\(" + sss + "\)</td> \n" row += "</td>\n" # allow for different format in different columns row = row + "</tr> \n" s = s + row s = s + "</tbody></table>" return s