Logo Search packages:      
Sourcecode: zope-cmfbibliographyat version File versions  Download package

endnote.py

############################################################################
#                                                                          #
#             copyright (c) 2004 ITB, Humboldt-University Berlin           #
#             written by: Raphael Ritz, r.ritz@biologie.hu-berlin.de       #
#                                                                          #
############################################################################

"""EndNoteParser class"""

# Python stuff
import os

# Zope stuff
from Globals import InitializeClass
from App.Dialogs import MessageDialog

# Bibliography stuff
from Products.CMFBibliographyAT.tool.parsers.base \
     import IBibliographyParser, BibliographyParser

try:
    import _bibtex
    from Products.CMFBibliographyAT.tool.parsers.pyblbibtex \
         import PyBlBibtexParser as BaseParser
except ImportError:
    from Products.CMFBibliographyAT.tool.parsers.bibtex \
         import BibtexParser as BaseParser


00030 class EndNoteParser(BaseParser):
    """
    specific parser to process input in EndNote's text format
    """

    __implements__ = (IBibliographyParser ,)

    meta_type = "EndNote Parser"

    format = {'name':'EndNote',
              'extension':'end'}

00042     def __init__(self,
                 id = 'endnote',
                 title = "EndNote's text format parser"
                 ):
        """
        initializes including the regular expression patterns
        """
        BaseParser.__init__(self, id=id, title=title)   

    # Here we need to provide 'checkFormat' and 'preprocess'

00053     def checkFormat(self, source):
        """
        is this my format?
        """
        teststring = source[:200].lower()
        ai = teststring.find('%T')
        ei = teststring.find('%A')
        di = teststring.find('%D')
        if ai + ei + di > -2:
            return 1
        else:
            return 0

00066     def preprocess(self, source):
        """
        convert EndNote to BibTeX
        """
        # open a pipe
        (fi, fo, fe) = os.popen3('end2xml | xml2bib ', 't')
        # provide the input
        fi.write(source)
        fi.close()
        # get the output
        bibtex = fo.read()
        fo.close()
        # get the staus/error message
        # (this isn't used but we don't want it in the output)
        error = fe.read()
        fe.close()
        # done
        return bibtex

    # all the rest we inherit from our parent BibTeX(!) parser

 # Class instanciation
InitializeClass(EndNoteParser)

   
def manage_addEndNoteParser(self, REQUEST=None):
    """ """
    try:
        self._setObject('endnote', EndNoteParser())
    except:
        return MessageDialog(
            title='Bibliography tool warning message',
            message='The parser you attempted to add already exists.',
            action='manage_main')    
    return self.manage_main(self, REQUEST)

Generated by  Doxygen 1.6.0   Back to index