in src/Foundation/Theming/code/scripts/autoNumeric.js [309:354]
function autoGroup(iv, settings) {
iv = autoStrip(iv, settings);
var testNeg = iv.replace(',', '.'),
empty = checkEmpty(iv, settings, true);
if (empty !== null) {
return empty;
}
var digitalGroup = '';
if (settings.dGroup === 2) {
digitalGroup = /(\d)((\d)(\d{2}?)+)$/;
} else if (settings.dGroup === 4) {
digitalGroup = /(\d)((\d{4}?)+)$/;
} else {
digitalGroup = /(\d)((\d{3}?)+)$/;
} /** splits the string at the decimal string */
var ivSplit = iv.split(settings.aDec);
if (settings.altDec && ivSplit.length === 1) {
ivSplit = iv.split(settings.altDec);
} /** assigns the whole number to the a varibale (s) */
var s = ivSplit[0];
if (settings.aSep) {
while (digitalGroup.test(s)) { /** re-inserts the thousand sepparator via a regualer expression */
s = s.replace(digitalGroup, '$1' + settings.aSep + '$2');
}
}
if (settings.mDec !== 0 && ivSplit.length > 1) {
if (ivSplit[1].length > settings.mDec) {
ivSplit[1] = ivSplit[1].substring(0, settings.mDec);
} /** joins the whole number with the deciaml value */
iv = s + settings.aDec + ivSplit[1];
} else { /** if whole numbers only */
iv = s;
}
if (settings.aSign) {
var has_aNeg = iv.indexOf(settings.aNeg) !== -1;
iv = iv.replace(settings.aNeg, '');
iv = settings.pSign === 'p' ? settings.aSign + iv : iv + settings.aSign;
if (has_aNeg) {
iv = settings.aNeg + iv;
}
}
if (settings.oEvent === 'set' && testNeg < 0 && settings.nBracket !== null) { /** removes the negative sign and places brackets */
iv = negativeBracket(iv, settings.nBracket, settings.oEvent);
}
return iv;
}