Blame lib/dbtexmf/dblatex/grubber/bibtopic.py

Packit Service 76cb02
Packit Service 76cb02
from plugins import TexModule
Packit Service 76cb02
from bibtex import BibTex
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
class BibSect(BibTex):
Packit Service 76cb02
    def __init__(self, doc, bibaux, bibfiles, bibstyle):
Packit Service 76cb02
        self.bibfiles = bibfiles.split(",")
Packit Service 76cb02
        self.bibstyle = bibstyle
Packit Service 76cb02
        self.bibaux = bibaux
Packit Service 76cb02
        BibTex.__init__(self, doc, {}, bibaux)
Packit Service 76cb02
        for bib in self.bibfiles:
Packit Service 76cb02
            self.add_db(bib)
Packit Service 76cb02
        if self.bibstyle:
Packit Service 76cb02
            self.set_style(self.bibstyle)
Packit Service 76cb02
Packit Service 76cb02
class BibNull(BibSect):
Packit Service 76cb02
    """
Packit Service 76cb02
    Null biblio section having no bibfile
Packit Service 76cb02
    """
Packit Service 76cb02
    def __init__(self, doc, bibaux):
Packit Service 76cb02
        pass
Packit Service 76cb02
Packit Service 76cb02
    def pre_compile(self):
Packit Service 76cb02
        return 0
Packit Service 76cb02
Packit Service 76cb02
    def post_compile(self):
Packit Service 76cb02
        return 0
Packit Service 76cb02
        
Packit Service 76cb02
Packit Service 76cb02
class Bibtopic(TexModule):
Packit Service 76cb02
    def __init__(self, doc, dict):
Packit Service 76cb02
        self.doc = doc
Packit Service 76cb02
        self.btsects = []
Packit Service 76cb02
        doc.parser.add_hook("begin{btSect}", self.add_sect)
Packit Service 76cb02
Packit Service 76cb02
        # If loaded from a sect, register this sect too
Packit Service 76cb02
        if dict["name"] == "begin{btSect}":
Packit Service 76cb02
            self.add_sect(dict)
Packit Service 76cb02
Packit Service 76cb02
    def add_sect(self, dict):
Packit Service 76cb02
        bibaux = "%s%d" % (self.doc.src_base, len(self.btsects) + 1)
Packit Service 76cb02
        if dict["arg"]:
Packit Service 76cb02
            btsect = BibSect(self.doc, bibaux, dict["arg"], dict["opt"])
Packit Service 76cb02
        else:
Packit Service 76cb02
            btsect = BibNull(self.doc, bibaux)
Packit Service 76cb02
        self.btsects.append(btsect)
Packit Service 76cb02
Packit Service 76cb02
    def pre_compile(self):
Packit Service 76cb02
        rc = 0
Packit Service 76cb02
        for bib in self.btsects:
Packit Service 76cb02
            rc += bib.pre_compile()
Packit Service 76cb02
        return rc
Packit Service 76cb02
Packit Service 76cb02
    def post_compile(self):
Packit Service 76cb02
        rc = 0
Packit Service 76cb02
        for bib in self.btsects:
Packit Service 76cb02
            rc += bib.post_compile()
Packit Service 76cb02
        return rc
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
class Module(Bibtopic):
Packit Service 76cb02
    """
Packit Service 76cb02
    Module to load to handle bibtopic
Packit Service 76cb02
    """
Packit Service 76cb02