www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit c1c2f6b9decca4c97c5005954f36026b12766b80
parent ac3cf03922c7362bd6c566ec2d2907352abf1eb4
Author: Dan Stillman <dstillman@gmail.com>
Date:   Tue, 14 Jan 2014 11:22:21 -0800

Merge pull request #402 from adam3smith/transform-sentence

Change Transform text so that sentence case capitalizes after :, ?, ! Th...
Diffstat:
Mchrome/content/zotero/bindings/itembox.xml | 7++++++-
Mchrome/content/zotero/xpcom/utilities.js | 8++++++--
2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/chrome/content/zotero/bindings/itembox.xml b/chrome/content/zotero/bindings/itembox.xml @@ -1947,7 +1947,12 @@ var newVal = Zotero.Utilities.capitalizeTitle(val.toLowerCase(), true); break; case 'sentence': - var newVal = val.length ? val[0].toUpperCase()+val.substr(1).toLowerCase() : val; + // capitalize the first letter, including after beginning punctuation + // capitalize after :, ?, ! and remove space(s) before those analogous to capitalizeTitle function + // also deal with initial punctuation here - open quotes and Spanish beginning quotation marks + newVal = val.toLowerCase(); + newVal = newVal.replace(/(([:\?!]\s*|^)([\'\"¡¿“‘„«\s]+)?[^\s])/g, function (x) { + return x.replace(/\s+/m, " ").toUpperCase();}); break; default: throw ("Invalid transform mode '" + mode + "' in zoteroitembox.textTransform()"); diff --git a/chrome/content/zotero/xpcom/utilities.js b/chrome/content/zotero/xpcom/utilities.js @@ -757,13 +757,17 @@ Zotero.Utilities = { // not first or last word && i != 0 && i != lastWordIndex // does not follow a colon - && (previousWordIndex == -1 || words[previousWordIndex][words[previousWordIndex].length-1] != ":") + && (previousWordIndex == -1 || words[previousWordIndex][words[previousWordIndex].length-1].search(/[:\?!]/)==-1) ) { words[i] = lowerCaseVariant; } else { // this is not a skip word or comes after a colon; // we must capitalize - words[i] = upperCaseVariant.substr(0, 1) + lowerCaseVariant.substr(1); + // handle punctuation in the beginning, including multiple, as in "¿Qué pasa?" + var punct = words[i].match(/^[\'\"¡¿“‘„«\s]+/); + punct = punct ? punct[0].length+1 : 1; + words[i] = words[i].length ? words[i].substr(0, punct).toUpperCase() + + words[i].substr(punct).toLowerCase() : words[i]; } }