def _results2cites(self, pieces, cites=None, current_cite=None): if cites is None: cites = [None, CitationCluster([])] prefix = None for piece in pieces: if isinstance(piece, CiteParser.ShortCite): # actually 2 cites, first author-only, then suppress-author first = CitationInfo(citekey=piece.citekey, author_only=True) current_cite = CitationInfo(citekey=piece.citekey, suppress_author=True) cites[0] = CitationCluster([first]) cites[1].citations.append(current_cite) elif isinstance(piece, CiteParser.CiteKey): current_cite = CitationInfo(citekey=piece.citekey, suppress_author=piece.suppress_author, prefix=prefix) cites[1].citations.append(current_cite) elif isinstance(piece, CiteParser.Prefix): prefix = piece.content elif isinstance(piece, CiteParser.Locator): current_cite.locator = piece.content elif isinstance(piece, CiteParser.Suffix): current_cite.suffix = piece.content elif isinstance(piece, CiteParser.ShortCiteExtra): self._results2cites(piece.content, cites, current_cite) elif isinstance(piece, CiteParser.FullCite): self._results2cites(piece.content, cites) return cites
def setUp(self): self.encoder = ZoteroJSONEncoder() self.citation = CitationInfo(citekey="foo") self.citation.id = "foo" citation2 = CitationInfo(citekey="bar") citation2.id = "bar" self.citation_cluster = CitationCluster([self.citation, citation2])