コード例 #1
0
ファイル: emf_utils.py プロジェクト: riiduan/lmfdb
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
コード例 #2
0
ファイル: emf_utils.py プロジェクト: yashpalgoyal1304/lmfdb
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
コード例 #3
0
ファイル: emf_core.py プロジェクト: sibilant/lmfdb
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
コード例 #4
0
ファイル: emf_core.py プロジェクト: arbooker/lmfdb
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