コード例 #1
0
def help_list_filters():

    import textwrap;
    from bibolamazi.core.bibfilter import factory

    def fmt_filter_helpline(f, fp):

        nlindentstr = "\n%16s"%(""); # newline, followed by 16 whitespaces
        return ( "  %-13s " %(f) +
                 nlindentstr.join(textwrap.wrap(factory.get_filter_class(f, filterpackage=fp)
                                                .getHelpDescription(),
                                                (80-16) # 80 line width, -16 indent chars
                                                ))
                 )

    full_filter_list = []
    for (fp,fplist) in factory.detect_filter_package_listings().iteritems():
        filter_list = [
            fmt_filter_helpline(f, fp)
            for f in fplist
            ]
        full_filter_list.append(
            FILTER_HELP_INNER_PACKAGE_LIST % {'filterpackage': fp,
                                              'filterlistcontents': "\n".join(filter_list)}
            )

    return FILTERS_HELP % {'full_filter_list': "\n\n".join(full_filter_list)};
コード例 #2
0
def get_filter_list():
    filter_pkg_list = filters_factory.detect_filter_package_listings()
    filter_list = []
    for (fpkg, flist) in filter_pkg_list.items():
        if fpkg == 'bibolamazi.filters':
            # built-in, ignore the filter package prefix.
            filter_list += flist
        else:
            filter_list += [ fpkg+':'+f for f in flist ]
    return filter_list
コード例 #3
0
def get_filter_list(filterpath=filters_factory.filterpath):
    logger.debug("filterinstanceeditor.get_filter_list()")
    filter_pkg_list = filters_factory.detect_filter_package_listings(filterpath=filterpath)
    logger.debug("filterinstanceeditor.get_filter_list(): filter_pkg_list=%r", filter_pkg_list)
    filter_list = []
    for (fpkg, flist) in filter_pkg_list.items():
        if fpkg == 'bibolamazi.filters':
            # built-in, ignore the filter package prefix.
            filter_list += [ finfo.filtername for finfo in flist]
        else:
            filter_list += [ fpkg+':'+finfo.filtername for finfo in flist ]
    logger.debug("filterinstanceeditor.get_filter_list(): filter_list=%r", filter_list)
    return filter_list
コード例 #4
0
ファイル: helppages.py プロジェクト: phfaist/bibolamazi
def _get_help_page_filters(pathitems, kwargs):

    if len(pathitems) != 0:
        raise HelpPageError("Invalid help path: /{}".format('/'.join(kwargs['basepathitems']+pathitems)))

    canonpath = '/filters'
    _get_help_canonpath_check(canonpath, kwargs)

    # first, make an inventory of filterpackages, filters and corresponding
    # description; store in a big list/dict

    fdata = []

    from bibolamazi.core.bibfilter import factory as filters_factory

    filterpath = filters_factory.filterpath

    for (fp,fplist) in iteritems(filters_factory.detect_filter_package_listings(filterpath=filterpath)):
        fdata.append({
            'fp': fp,
            'filterinfolist': sorted(fplist, key=lambda x: x.filtername)
        })

    def gen_txt(d=fdata):
        
        def fmt_filter_helpline(finfo, fpkg):

            nlindentstr = "\n%16s"%("") # newline, followed by 16 whitespaces
            return ( "  %-12s  " %(finfo.filtername) +
                     nlindentstr.join(textwrap.wrap(finfo.fclass.getHelpDescription(),
                                                    (80-16) # 80 line width, -16 indent chars
                                                    ))
                     )

        full_filter_list = []
        for fd in d:
            fp = fd['fp']
            finfolist = fd['filterinfolist']
            filter_list = [
                fmt_filter_helpline(f, fp)
                for f in finfolist
                ]
            full_filter_list.append(
                TMPL_FILTER_HELP_INNER_PACKAGE_LIST.format(
                    filterpackage=fp,
                    filterlistcontents="\n".join(filter_list)
                )
            )

        return TMPL_FILTERS_HELP.format(full_filter_list="\n\n".join(full_filter_list))

    def gen_htmlfragment(d=fdata, kwargs=dict(kwargs)):

        html = "<h1>List of filters</h1>\n\n"

        for fd in d:
            fp = fd['fp']
            finfolist = fd['filterinfolist']

            html += "<h2>Filter package <b>{filterpackage}</b></h2>\n\n".format(filterpackage=fp)

            html += "<table>"
            for finfo in finfolist:

                html += (
                    "<tr><th><a href=\"help:/filter/{filtname}\">{filtname}</a></th></tr>"+
                    "<tr><td class=\"indent\" width=\""+str(kwargs.get('html_table_width_px', 550))
                    +"\">{filtdesc}</td></tr>\n"
                ).format(
                    filtname=finfo.filtername,
                    filtdesc=finfo.fclass.getHelpDescription()
                )
            html += "</table>"

        html += ("<p style=\"margin-top: 2em\"><em>Filter packages are listed in the order " +
                 "they are searched.</em></p>")

        return html

    return HelpTopicPage(
        {'txt': gen_txt,
         'htmlfragment': gen_htmlfragment},
        title="Filter List",
        canonpath=canonpath
    )