closes #223, citing the same item multiple times should produce only one bibliography entry
This commit is contained in:
parent
bdebc8dffa
commit
d8171f775c
BIN
Zotero.dot.dmg
BIN
Zotero.dot.dmg
Binary file not shown.
|
@ -108,9 +108,19 @@ CSL = function(csl) {
|
||||||
* set items - convert to array and pre-process
|
* set items - convert to array and pre-process
|
||||||
*/
|
*/
|
||||||
CSL.prototype.setItems = function(items) {
|
CSL.prototype.setItems = function(items) {
|
||||||
|
// create a serialized string of all of the unique items
|
||||||
var serializedItemString = "";
|
var serializedItemString = "";
|
||||||
|
|
||||||
|
this._items = items;
|
||||||
|
this._uniqueItems = new Array();
|
||||||
|
var existingItems = new Object();
|
||||||
for each(var item in items) {
|
for each(var item in items) {
|
||||||
serializedItemString += item.getID()+",";
|
var itemID = item.getID();
|
||||||
|
if(!existingItems[itemID]) {
|
||||||
|
existingItems[itemID] = true;
|
||||||
|
this._uniqueItems.push(item);
|
||||||
|
serializedItemString += itemID+",";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Scholar.debug("CSL: items set to "+serializedItemString);
|
Scholar.debug("CSL: items set to "+serializedItemString);
|
||||||
|
@ -118,7 +128,6 @@ CSL.prototype.setItems = function(items) {
|
||||||
if(serializedItemString != this._serializedItemString) {
|
if(serializedItemString != this._serializedItemString) {
|
||||||
// only re-process if there are new items
|
// only re-process if there are new items
|
||||||
this._serializedItemString = serializedItemString;
|
this._serializedItemString = serializedItemString;
|
||||||
this._items = items;
|
|
||||||
this._preprocessItems();
|
this._preprocessItems();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -192,8 +201,8 @@ CSL.prototype.createBibliography = function(format) {
|
||||||
output += "\r\n";
|
output += "\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var i in this._items) {
|
for(var i in this._uniqueItems) {
|
||||||
var item = this._items[i];
|
var item = this._uniqueItems[i];
|
||||||
|
|
||||||
var string = this._getCitation(item, format, this._bib);
|
var string = this._getCitation(item, format, this._bib);
|
||||||
|
|
||||||
|
@ -991,8 +1000,8 @@ CSL.prototype._lpad = function(string, pad, length) {
|
||||||
*/
|
*/
|
||||||
CSL.prototype._preprocessItems = function() {
|
CSL.prototype._preprocessItems = function() {
|
||||||
// get data necessary to generate citations before sorting
|
// get data necessary to generate citations before sorting
|
||||||
for(var i in this._items) {
|
for(var i in this._uniqueItems) {
|
||||||
var item = this._items[i];
|
var item = this._uniqueItems[i];
|
||||||
|
|
||||||
if(!item._csl) {
|
if(!item._csl) {
|
||||||
// namespace everything in item._csl so there's no chance of overlap
|
// namespace everything in item._csl so there's no chance of overlap
|
||||||
|
@ -1016,9 +1025,9 @@ CSL.prototype._preprocessItems = function() {
|
||||||
|
|
||||||
// sort by sort order
|
// sort by sort order
|
||||||
if(this._bib.sortOrder) {
|
if(this._bib.sortOrder) {
|
||||||
Scholar.debug("CSL: sorting this._items");
|
Scholar.debug("CSL: sorting items");
|
||||||
var me = this;
|
var me = this;
|
||||||
this._items.sort(function(a, b) {
|
this._uniqueItems.sort(function(a, b) {
|
||||||
return me._compareItem(a, b);
|
return me._compareItem(a, b);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1027,8 +1036,8 @@ CSL.prototype._preprocessItems = function() {
|
||||||
var usedCitations = new Array();
|
var usedCitations = new Array();
|
||||||
var lastAuthor;
|
var lastAuthor;
|
||||||
|
|
||||||
for(var i in this._items) {
|
for(var i in this._uniqueItems) {
|
||||||
var item = this._items[i];
|
var item = this._uniqueItems[i];
|
||||||
|
|
||||||
var author = this._getFieldValue("author",
|
var author = this._getFieldValue("author",
|
||||||
this._getFieldDefaults("author"),
|
this._getFieldDefaults("author"),
|
||||||
|
|
10
scrapers.sql
10
scrapers.sql
|
@ -5930,15 +5930,19 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '200
|
||||||
<name>Simon Kornblith</name>
|
<name>Simon Kornblith</name>
|
||||||
<email>simon@simonster.com</email>
|
<email>simon@simonster.com</email>
|
||||||
</contributor>
|
</contributor>
|
||||||
<updated>2006-08-19T17:12:00-05:00</updated>
|
<contributor>
|
||||||
|
<name>Johan Kool</name>
|
||||||
|
<email>johankool@users.sourceforge.net</email>
|
||||||
|
</contributor>
|
||||||
|
<updated>2006-08-24T16:30:00+01:00</updated>
|
||||||
</info>
|
</info>
|
||||||
<defaults>
|
<defaults>
|
||||||
<contributor name-as-sort-order="no">
|
<contributor name-as-sort-order="no">
|
||||||
<name and="symbol" initialize-with="."/>
|
<name and="symbol" initialize-with="." delimiter=", "/>
|
||||||
<label term-set="roles-short" prefix=", " text-transform="capitalize" suffix="."/>
|
<label term-set="roles-short" prefix=", " text-transform="capitalize" suffix="."/>
|
||||||
</contributor>
|
</contributor>
|
||||||
<author name-as-sort-order="all">
|
<author name-as-sort-order="all">
|
||||||
<name and="symbol" sort-separator=", " initialize-with="."/>
|
<name and="symbol" sort-separator=", " initialize-with="." delimiter=", "/>
|
||||||
<label term-set="roles-short" prefix=" (" suffix=".)" text-transform="capitalize"/>
|
<label term-set="roles-short" prefix=" (" suffix=".)" text-transform="capitalize"/>
|
||||||
<substitute>
|
<substitute>
|
||||||
<choose>
|
<choose>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user