Don't ignore whitespace when sorting
Intl.Collator's ignorePunctuation ignores whitespace too, so stop using it, since it produces much weirder results than sorting on punctuation does.
This commit is contained in:
parent
3c2bcf012f
commit
c7fd46e6b4
2 changed files with 16 additions and 2 deletions
|
@ -1546,7 +1546,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
||||||
}
|
}
|
||||||
|
|
||||||
var collator = new Intl.Collator(locales, {
|
var collator = new Intl.Collator(locales, {
|
||||||
ignorePunctuation: true,
|
|
||||||
numeric: true,
|
numeric: true,
|
||||||
sensitivity: 'base'
|
sensitivity: 'base'
|
||||||
});
|
});
|
||||||
|
@ -1558,7 +1557,6 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
||||||
try {
|
try {
|
||||||
Zotero.logError("Falling back to en-US sorting");
|
Zotero.logError("Falling back to en-US sorting");
|
||||||
collator = new Intl.Collator(['en-US'], {
|
collator = new Intl.Collator(['en-US'], {
|
||||||
ignorePunctuation: true,
|
|
||||||
numeric: true,
|
numeric: true,
|
||||||
sensitivity: 'base'
|
sensitivity: 'base'
|
||||||
});
|
});
|
||||||
|
@ -1602,6 +1600,11 @@ Services.scriptloader.loadSubScript("resource://zotero/polyfill.js");
|
||||||
|
|
||||||
// If initial punctuation is equivalent, use collator comparison
|
// If initial punctuation is equivalent, use collator comparison
|
||||||
// that ignores all punctuation
|
// that ignores all punctuation
|
||||||
|
//
|
||||||
|
// Update: Intl.Collator's ignorePunctuation also ignores whitespace, so we're
|
||||||
|
// no longer using it, meaning we could take out most of the code to handle
|
||||||
|
// initial punctuation separately, unless we think we'll at some point switch to
|
||||||
|
// a collation function that ignores punctuation but not whitespace.
|
||||||
if (aInitP == bInitP || !aInitP && !bInitP) return collator.compare(a, b);
|
if (aInitP == bInitP || !aInitP && !bInitP) return collator.compare(a, b);
|
||||||
|
|
||||||
// Otherwise consider "attached" words as well, e.g. the order should be
|
// Otherwise consider "attached" words as well, e.g. the order should be
|
||||||
|
|
|
@ -16,4 +16,15 @@ describe("Zotero", function() {
|
||||||
assert.equal(str1, str2);
|
assert.equal(str1, str2);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe("#localeCompare", function () {
|
||||||
|
it("shouldn't ignore whitespace", function () {
|
||||||
|
assert.equal(Zotero.localeCompare("Chang", "Chan H"), 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("shouldn't ignore leading punctuation", function () {
|
||||||
|
assert.equal(Zotero.localeCompare("_Abcd", "Abcd"), -1);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue