Beispiel #1
0
    def checkunfiltered(filename, strict=1):
        def expand(file, entry):
            if entry[0] in ('preamble', 'string'):
                return entry

            bibkind, (bibkey, bibtype, a, b, items) = entry

            results = [(k, _bibtex.expand(file, items[k], -1))
                       for k in sorted(items)]
            return (bibkind, (bibkey, bibtype, a, b, results))

        file = _bibtex.open_file(filename, strict)
        result = open(filename + '-ok', 'r')

        line = 1
        failures = 0
        checks = 0

        while 1:

            try:
                entry = _bibtex.next_unfiltered(file)

                if entry is None: break

                obtained = ` expand(file, entry) `

            except IOError, msg:
                obtained = 'ParserError'

            if _debug: print obtained

            valid = result.readline().strip()

            if not expected_result(obtained, valid):
                sys.stderr.write('error: %s: line %d: unexpected result:\n' %
                                 (filename, line))
                sys.stderr.write('error: %s: line %d:    obtained %s\n' %
                                 (filename, line, obtained))
                sys.stderr.write('error: %s: line %d:    expected %s\n' %
                                 (filename, line, valid))
                failures = failures + 1
            checks = checks + 1
Beispiel #2
0
    def checkunfiltered(filename, strict=1):
        def expand(file, entry):
            if entry[0] in ("preamble", "string"):
                return entry

            bibkind, (bibkey, bibtype, a, b, items) = entry

            results = [(k, _bibtex.expand(file, items[k], -1)) for k in sorted(items)]
            return (bibkind, (bibkey, bibtype, a, b, results))

        file = _bibtex.open_file(filename, strict)
        result = open(filename + "-ok", "r")

        line = 1
        failures = 0
        checks = 0

        while 1:

            try:
                entry = _bibtex.next_unfiltered(file)

                if entry is None:
                    break

                obtained = ` expand(file, entry) `

            except IOError, msg:
                obtained = "ParserError"

            if _debug:
                print obtained

            valid = result.readline().strip()

            if not expected_result(obtained, valid):
                sys.stderr.write("error: %s: line %d: unexpected result:\n" % (filename, line))
                sys.stderr.write("error: %s: line %d:    obtained %s\n" % (filename, line, obtained))
                sys.stderr.write("error: %s: line %d:    expected %s\n" % (filename, line, valid))
                failures = failures + 1
            checks = checks + 1
Beispiel #3
0
    def next(self):
	while True:
	    try:
		retval = _bibtex.next_unfiltered(self.parser)
	    except IOError, error:
		raise Exceptions.ParserError((str(error),))
	    if retval == None:
		self.db.set_metadata('bibtex-preamble', self.preamble)
		return None
	    elif retval[0] == 'entry':
		retval = retval[1]
		name, fieldtype, offset, line, object = retval
		if name:
		    key = Key.Key(self.db, name)
		else:
		    key = None
		fieldtype  = Types.get_entry(fieldtype)
		return Entry(key, fieldtype, object, self.parser, line)
	    elif retval[0] == 'preamble':
		self.preamble.append(retval[1])
		continue
	    else:
		continue
Beispiel #4
0
 def next(self):
     while True:
         try:
             retval = _bibtex.next_unfiltered(self.parser)
         except IOError, error:
             raise Exceptions.ParserError((str(error), ))
         if retval == None:
             self.db.set_metadata('bibtex-preamble', self.preamble)
             return None
         elif retval[0] == 'entry':
             retval = retval[1]
             name, fieldtype, offset, line, object = retval
             if name:
                 key = Key.Key(self.db, name)
             else:
                 key = None
             fieldtype = Types.get_entry(fieldtype)
             return Entry(key, fieldtype, object, self.parser, line)
         elif retval[0] == 'preamble':
             self.preamble.append(retval[1])
             continue
         else:
             continue