- modifications to citation engine's handling of localized strings
- added the missing integrationDocPrefs.xul file
This commit is contained in:
parent
68c480b7b5
commit
1c21bddbfc
4 changed files with 167 additions and 138 deletions
20
chrome/chromeFiles/content/scholar/integrationDocPrefs.xul
Normal file
20
chrome/chromeFiles/content/scholar/integrationDocPrefs.xul
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
<!DOCTYPE window SYSTEM "chrome://scholar/locale/scholar.dtd">
|
||||
<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
title="&integration.docPrefs.title;" buttons="accept"
|
||||
ondialogaccept="Scholar_File_Interface_Bibliography.acceptSelection()"
|
||||
id="scholar-bibliography"
|
||||
onload="Scholar_File_Interface_Bibliography.init()">
|
||||
|
||||
<script src="include.js"/>
|
||||
<script src="bibliography.js"/>
|
||||
|
||||
<hbox>
|
||||
<label value="&bibliography.style.label;" control="style-menu"/>
|
||||
<menulist id="style-menu">
|
||||
<menupopup id="style-popup">
|
||||
</menupopup>
|
||||
</menulist>
|
||||
</hbox>
|
||||
</dialog>
|
|
@ -70,7 +70,7 @@ Scholar.Cite = new function() {
|
|||
* from the cache
|
||||
*/
|
||||
function _getCSL(cslID) {
|
||||
if(_lastStyle != cslID) {
|
||||
if(_lastStyle != cslID || Scholar.Prefs.get("cacheTranslatorData") == false) {
|
||||
// get style
|
||||
var sql = "SELECT csl FROM csl WHERE cslID = ?";
|
||||
var style = Scholar.DB.valueQuery(sql, [cslID]);
|
||||
|
@ -114,6 +114,14 @@ CSL = function(csl) {
|
|||
// parse bibliography options, since these will be necessary for
|
||||
// disambiguation purposes even for citations
|
||||
this._parseBibliographyOptions();
|
||||
// if no bibliography exists, parse citation element as bibliography
|
||||
if(!this._bib) {
|
||||
Scholar.debug("CSL: using citation element");
|
||||
if(!this._cit) {
|
||||
this._parseCitationOptions();
|
||||
}
|
||||
this._bib = this._cit;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -137,11 +145,11 @@ CSL.prototype.setItems = function(items) {
|
|||
|
||||
Scholar.debug("CSL: items set to "+serializedItemString);
|
||||
|
||||
if(serializedItemString != this._serializedItemString) {
|
||||
//if(serializedItemString != this._serializedItemString) {
|
||||
// only re-process if there are new items
|
||||
this._serializedItemString = serializedItemString;
|
||||
this._preprocessItems();
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -182,15 +190,6 @@ CSL.prototype.createCitation = function(items, format) {
|
|||
* (items is expected to be an array of items)
|
||||
*/
|
||||
CSL.prototype.createBibliography = function(format) {
|
||||
if(!this._bib) {
|
||||
// decide whether to parse bibliography, or, if none exists, citation
|
||||
Scholar.debug("CSL: using citation element");
|
||||
if(!this._cit) {
|
||||
this._parseCitationOptions();
|
||||
}
|
||||
this._bib = this._cit;
|
||||
}
|
||||
|
||||
// preprocess this._items
|
||||
Scholar.debug("CSL: preprocessing items");
|
||||
this._preprocessItems();
|
||||
|
@ -340,7 +339,7 @@ CSL.prototype._parseLocales = function(termXML) {
|
|||
// ugh. copy default array. javascript dumb.
|
||||
for(var i in CSL._defaultTerms) {
|
||||
termArray[i] = new Object();
|
||||
for(var j in CSL._defaulTerms[i]) {
|
||||
for(var j in CSL._defaultTerms[i]) {
|
||||
if(typeof(CSL._defaultTerms[i]) == "object") {
|
||||
termArray[i][j] = [CSL._defaultTerms[i][j][0],
|
||||
CSL._defaultTerms[i][j][1]];
|
||||
|
@ -352,50 +351,45 @@ CSL.prototype._parseLocales = function(termXML) {
|
|||
}
|
||||
|
||||
// loop through terms
|
||||
this._parseTerms(locale.term, termArray["default"]);
|
||||
// loop through term sets
|
||||
locale._termSets = new Object();
|
||||
for each(var termSet in locale["term-set"]) {
|
||||
var name = termSet.@name.toString();
|
||||
if(!termArray[name]) {
|
||||
termArray[name] = new Object();
|
||||
}
|
||||
|
||||
this._parseTerms(termSet.term, termArray[name]);
|
||||
}
|
||||
|
||||
return termArray;
|
||||
}
|
||||
|
||||
CSL.prototype._parseTerms = function(terms, termArray) {
|
||||
for each(var term in terms) {
|
||||
for each(var term in locale.term) {
|
||||
var name = term.@name.toString();
|
||||
if(!name) {
|
||||
throw("citations cannot be generated: no name defined on term in CSL");
|
||||
}
|
||||
// unless otherwise specified, assume "long" form
|
||||
var form = term.@form.toString();
|
||||
if(!form) {
|
||||
var form = "long";
|
||||
}
|
||||
if(!termArray[form]) {
|
||||
termArray[form] = new Object();
|
||||
}
|
||||
|
||||
var single = term.single.text().toString();
|
||||
var multiple = term.multiple.text().toString();
|
||||
if(single || multiple) {
|
||||
if((single && multiple) // if there's both elements or
|
||||
|| !termArray[name]) { // no previously defined value
|
||||
termArray[name] = [single, multiple];
|
||||
if((single && multiple) // if there's both elements or
|
||||
|| !termArray[form][name]) { // no previously defined value
|
||||
termArray[form][name] = [single, multiple];
|
||||
} else {
|
||||
if(typeof(termArray[name]) != "object") {
|
||||
termArray[name] = [termArray[name], termArray[name]];
|
||||
// if old object was just a single value, make it two copies
|
||||
termArray[form][name] = [termArray[form][name], termArray[form][name]];
|
||||
}
|
||||
|
||||
// redefine either single or multiple
|
||||
if(single) {
|
||||
termArray[name][0] = single;
|
||||
termArray[form][name][0] = single;
|
||||
} else {
|
||||
termArray[name][1] = multiple;
|
||||
termArray[form][name][1] = multiple;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
termArray[name] = term.text().toString();
|
||||
termArray[form][name] = term.text().toString();
|
||||
}
|
||||
}
|
||||
|
||||
return termArray;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -558,6 +552,10 @@ CSL.prototype._parseEtAl = function(etAl, bibCitElement) {
|
|||
* optional array of cs-format
|
||||
*/
|
||||
CSL.prototype._parseBibliographyOptions = function() {
|
||||
if(!this._csl.bibliography.length()) {
|
||||
return;
|
||||
}
|
||||
|
||||
var bibliography = this._csl.bibliography;
|
||||
this._bib = new Object();
|
||||
|
||||
|
@ -727,24 +725,24 @@ CSL.prototype._getFieldDefaults = function(elementName) {
|
|||
/*
|
||||
* gets a term, in singular or plural form
|
||||
*/
|
||||
CSL.prototype._getTerm = function(term, plural, termSet) {
|
||||
if(!termSet) {
|
||||
termSet = "default";
|
||||
CSL.prototype._getTerm = function(term, plural, form) {
|
||||
if(!form) {
|
||||
form = "long";
|
||||
}
|
||||
if(!this._terms[termSet][term]) {
|
||||
if(!this._terms[form][term]) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if(typeof(this._terms[termSet][term]) == "object") { // singular and plural forms
|
||||
// are available
|
||||
if(typeof(this._terms[form][term]) == "object") { // singular and plural forms
|
||||
// are available
|
||||
if(plural) {
|
||||
return this._terms[termSet][term][1];
|
||||
return this._terms[form][term][1];
|
||||
} else {
|
||||
return this._terms[termSet][term][0];
|
||||
return this._terms[form][term][0];
|
||||
}
|
||||
}
|
||||
|
||||
return this._terms[termSet][term];
|
||||
return this._terms[form][term];
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -915,10 +913,10 @@ CSL.prototype._formatLocator = function(identifier, element, number, format) {
|
|||
} else if(child.name == "text") {
|
||||
var plural = (identifier && (number.indexOf(",") != -1
|
||||
|| number.indexOf("-") != -1));
|
||||
string = this._getTerm(child["term-name"], plural);
|
||||
string = this._getTerm(child["term-name"], plural, child["form"]);
|
||||
} else if(identifier && child.name == "label") {
|
||||
var plural = (number.indexOf(",") != -1 || number.indexOf("-") != -1);
|
||||
string = this._getTerm(identifier, plural, child["term-set"]);
|
||||
string = this._getTerm(identifier, plural, child["form"]);
|
||||
}
|
||||
|
||||
if(string) {
|
||||
|
@ -1216,7 +1214,7 @@ CSL.prototype._processCreators = function(type, element, creators, format, bibCi
|
|||
}
|
||||
string = authorStrings.join(joinString);
|
||||
} else if(child.name == "label") {
|
||||
string = this._getTerm(type, (maxCreators != 1), child["term-set"]);
|
||||
string = this._getTerm(type, (maxCreators != 1), child["form"]);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -8,77 +8,81 @@
|
|||
<term name="references">References</term>
|
||||
<term name="and">and</term>
|
||||
<term name="et-al">et al.</term>
|
||||
<term-set name="locators">
|
||||
<term name="page">
|
||||
<single>page</single>
|
||||
<multiple>pages</multiple>
|
||||
</term>
|
||||
<term name="paragraph">
|
||||
<single>paragraph</single>
|
||||
<multiple>paragraph</multiple>
|
||||
</term>
|
||||
</term-set>
|
||||
<term-set name="locators-short">
|
||||
<term name="page">
|
||||
<single>p</single>
|
||||
<multiple>pp</multiple>
|
||||
</term>
|
||||
<term name="paragraph">
|
||||
<single>¶</single>
|
||||
<multiple>¶¶</multiple>
|
||||
</term>
|
||||
</term-set>
|
||||
<term-set name="roles">
|
||||
<term name="editor">
|
||||
<single>editor</single>
|
||||
<multiple>editors</multiple>
|
||||
</term>
|
||||
<term name="translator">
|
||||
<single>translator</single>
|
||||
<multiple>translators</multiple>
|
||||
</term>
|
||||
</term-set>
|
||||
<term-set name="roles-short">
|
||||
<term name="editor">
|
||||
<single>ed</single>
|
||||
<multiple>eds</multiple>
|
||||
</term>
|
||||
<term name="translator">
|
||||
<single>tran</single>
|
||||
<multiple>trans</multiple>
|
||||
</term>
|
||||
</term-set>
|
||||
<term-set name="roles-verb">
|
||||
<term name="editor">edited by</term>
|
||||
<term name="translator">translated by</term>
|
||||
</term-set>
|
||||
<term-set name="months">
|
||||
<term name="month-01">January</term>
|
||||
<term name="month-02">February</term>
|
||||
<term name="month-03">March</term>
|
||||
<term name="month-04">April</term>
|
||||
<term name="month-05">May</term>
|
||||
<term name="month-06">June</term>
|
||||
<term name="month-07">July</term>
|
||||
<term name="month-08">August</term>
|
||||
<term name="month-09">September</term>
|
||||
<term name="month-10">October</term>
|
||||
<term name="month-11">November</term>
|
||||
<term name="month-12">December</term>
|
||||
</term-set>
|
||||
<term-set name="months-short">
|
||||
<term name="month-01">Jan</term>
|
||||
<term name="month-02">Feb</term>
|
||||
<term name="month-03">Mar</term>
|
||||
<term name="month-04">Apr</term>
|
||||
<term name="month-05">May</term>
|
||||
<term name="month-06">Jun</term>
|
||||
<term name="month-07">Jul</term>
|
||||
<term name="month-08">Aug</term>
|
||||
<term name="month-09">Sep</term>
|
||||
<term name="month-10">Oct</term>
|
||||
<term name="month-11">Nov</term>
|
||||
<term name="month-12">Dec</term>
|
||||
</term-set>
|
||||
|
||||
<!-- LONG LOCATOR FORMS -->
|
||||
<term name="page">
|
||||
<single>page</single>
|
||||
<multiple>pages</multiple>
|
||||
</term>
|
||||
<term name="paragraph">
|
||||
<single>paragraph</single>
|
||||
<multiple>paragraph</multiple>
|
||||
</term>
|
||||
<term name="volume">volume</term>
|
||||
<term name="issue">issue</term>
|
||||
|
||||
<!-- SHORT LOCATOR FORMS -->
|
||||
<term name="page" form="short">
|
||||
<single>p</single>
|
||||
<multiple>pp</multiple>
|
||||
</term>
|
||||
<term name="paragraph" form="short">
|
||||
<single>¶</single>
|
||||
<multiple>¶¶</multiple>
|
||||
</term>
|
||||
<term name="volume" form="short">vol</term>
|
||||
<term name="issue" form="short">iss</term>
|
||||
|
||||
<!-- LONG ROLE FORMS -->
|
||||
<term name="editor">
|
||||
<single>editor</single>
|
||||
<multiple>editors</multiple>
|
||||
</term>
|
||||
<term name="translator">
|
||||
<single>translator</single>
|
||||
<multiple>translators</multiple>
|
||||
</term>
|
||||
|
||||
<!-- SHORT ROLE FORMS -->
|
||||
<term name="editor" form="short">
|
||||
<single>ed</single>
|
||||
<multiple>eds</multiple>
|
||||
</term>
|
||||
<term name="translator" form="short">
|
||||
<single>tran</single>
|
||||
<multiple>trans</multiple>
|
||||
</term>
|
||||
|
||||
<!-- VERB ROLE FORMS -->
|
||||
<term name="editor" form="verb">edited by</term>
|
||||
<term name="translator" form="verb">translated by</term>
|
||||
|
||||
<!-- LONG MONTH FORMS -->
|
||||
<term name="month-01">January</term>
|
||||
<term name="month-02">February</term>
|
||||
<term name="month-03">March</term>
|
||||
<term name="month-04">April</term>
|
||||
<term name="month-05">May</term>
|
||||
<term name="month-06">June</term>
|
||||
<term name="month-07">July</term>
|
||||
<term name="month-08">August</term>
|
||||
<term name="month-09">September</term>
|
||||
<term name="month-10">October</term>
|
||||
<term name="month-11">November</term>
|
||||
<term name="month-12">December</term>
|
||||
|
||||
<!-- SHORT MOTH FORMS -->
|
||||
<term name="month-01" form="short">Jan</term>
|
||||
<term name="month-02" form="short">Feb</term>
|
||||
<term name="month-03" form="short">Mar</term>
|
||||
<term name="month-04" form="short">Apr</term>
|
||||
<term name="month-05" form="short">May</term>
|
||||
<term name="month-06" form="short">Jun</term>
|
||||
<term name="month-07" form="short">Jul</term>
|
||||
<term name="month-08" form="short">Aug</term>
|
||||
<term name="month-09" form="short">Sep</term>
|
||||
<term name="month-10" form="short">Oct</term>
|
||||
<term name="month-11" form="short">Nov</term>
|
||||
<term name="month-12" form="short">Dec</term>
|
||||
</locale>
|
||||
</terms>
|
41
scrapers.sql
41
scrapers.sql
|
@ -1,4 +1,4 @@
|
|||
-- 62
|
||||
-- 63
|
||||
|
||||
-- Set the following timestamp to the most recent scraper update date
|
||||
REPLACE INTO "version" VALUES ('repository', STRFTIME('%s', '2006-08-15 15:42:00'));
|
||||
|
@ -5914,7 +5914,7 @@ function doImport() {
|
|||
}
|
||||
}');
|
||||
|
||||
REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2006-08-12 19:22:00', 'APA',
|
||||
REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '2006-08-29 23:05:00', 'American Psychological Association',
|
||||
'<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?oxygen RNGSchema="file:/Users/darcusb/xbiblio/csl/schema/trunk/csl-alt.rnc" type="compact"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="author-date" xml:lang="en">
|
||||
|
@ -5934,16 +5934,16 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '200
|
|||
<name>Johan Kool</name>
|
||||
<email>johankool@users.sourceforge.net</email>
|
||||
</contributor>
|
||||
<updated>2006-08-24T16:30:00+01:00</updated>
|
||||
<updated>2006-08-29T23:05:00+05:00</updated>
|
||||
</info>
|
||||
<defaults>
|
||||
<contributor name-as-sort-order="no">
|
||||
<name and="symbol" initialize-with="." delimiter=", "/>
|
||||
<label term-set="roles-short" prefix=", " text-transform="capitalize" suffix="."/>
|
||||
<name and="symbol" initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=", " text-transform="capitalize" suffix="."/>
|
||||
</contributor>
|
||||
<author name-as-sort-order="all">
|
||||
<name and="symbol" sort-separator=", " initialize-with="." delimiter=", "/>
|
||||
<label term-set="roles-short" prefix=" (" suffix=".)" text-transform="capitalize"/>
|
||||
<name and="symbol" sort-separator=", " initialize-with="." delimiter=", " delimiter-precedes-last="always"/>
|
||||
<label form="short" prefix=" (" suffix=".)" text-transform="capitalize"/>
|
||||
<substitute>
|
||||
<choose>
|
||||
<editor/>
|
||||
|
@ -5987,7 +5987,10 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '200
|
|||
<et-al min-authors="6" use-first="1" position="subsequent"/>
|
||||
<layout>
|
||||
<item>
|
||||
<author form="short"/>
|
||||
<author form="short">
|
||||
<name and="symbol" delimiter=", "/>
|
||||
<label form="short" prefix=", " text-transform="capitalize" suffix="."/>
|
||||
</author>
|
||||
<date prefix=", ">
|
||||
<year/>
|
||||
</date>
|
||||
|
@ -6031,17 +6034,17 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '200
|
|||
<text term-name="in" text-transform="capitalize"/>
|
||||
<editor prefix=" " suffix=",">
|
||||
<name and="symbol" sort-separator=", " initialize-with="."/>
|
||||
<label term-set="roles-short" prefix=" (" suffix=")" text-transform="capitalize"/>
|
||||
<label form="short" prefix=" (" suffix=")" text-transform="capitalize"/>
|
||||
</editor>
|
||||
<translator prefix=" " suffix=",">
|
||||
<name and="symbol" sort-separator=", " initialize-with="."/>
|
||||
<label term-set="roles-short" prefix=" (" suffix=")" text-transform="capitalize"/>
|
||||
<label form="short" prefix=" (" suffix=")" text-transform="capitalize"/>
|
||||
</translator>
|
||||
<titles relation="container" font-style="italic" prefix=" " suffix="."/>
|
||||
<titles relation="collection" prefix=" " suffix="."/>
|
||||
<publisher prefix=" "/>
|
||||
<pages prefix=" (" suffix=")">
|
||||
<label term-set="locators-short" text-transform="capitalize" suffix=". "/>
|
||||
<label form="short" text-transform="capitalize" suffix=". "/>
|
||||
<number/>
|
||||
</pages>
|
||||
</group>
|
||||
|
@ -6073,7 +6076,7 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/apa.csl', '200
|
|||
</bibliography>
|
||||
</style>');
|
||||
|
||||
REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/chicago-note.csl', '2006-08-12 19:22:00', 'Chicago (Footnote)',
|
||||
REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/chicago-note.csl', '2006-08-29 23:05:00', 'Chicago Manual of Style (Note)',
|
||||
'<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?oxygen RNGSchema="../schema/trunk/csl.rnc" type="compact"?>
|
||||
<style xmlns="http://purl.org/net/xbiblio/csl" class="note" xml:lang="en">
|
||||
|
@ -6088,17 +6091,21 @@ REPLACE INTO "csl" VALUES('http://purl.org/net/xbiblio/csl/styles/chicago-note.c
|
|||
<name>Simon Kornblith</name>
|
||||
<email>simon@simonster.com</email>
|
||||
</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>
|
||||
<summary>The note-without-bibliography variant of the Chicago style.</summary>
|
||||
</info>
|
||||
<defaults>
|
||||
<contributor>
|
||||
<label term-set="roles-short" suffix=". " text-transform="lowercase"/>
|
||||
<name and="text"/>
|
||||
<label form="short" suffix=". " text-transform="lowercase"/>
|
||||
<name and="text" delimiter=", "/>
|
||||
</contributor>
|
||||
<author>
|
||||
<name and="text"/>
|
||||
<label term-set="roles-short" prefix=", " suffix="." text-transform="lowercase"/>
|
||||
<name and="text" delimiter=", "/>
|
||||
<label form="short" prefix=", " suffix="." text-transform="lowercase"/>
|
||||
<substitute>
|
||||
<choose>
|
||||
<editor/>
|
||||
|
|
Loading…
Reference in a new issue