split-sms
Version:
An SMS message splitter with support for both GSM and Unicode.
45 lines (36 loc) • 1.38 kB
JavaScript
var gsmValidator = require('./gsmvalidator'),
gsmSplitter = require('./gsmsplitter'),
unicodeSplitter = require('./unicodesplitter');
function calculateRemaining(parts, singleBytes, multiBytes, charBytes) {
var max = parts.length === 1 ? singleBytes : multiBytes;
return (max - parts[parts.length - 1].bytes) / charBytes;
}
var UNICODE = module.exports.UNICODE = 'Unicode';
var GSM = module.exports.GSM = 'GSM';
module.exports.split = function (message, options) {
var characterset = options && options.characterset;
options = {
summary: options && options.summary
};
var isGsm = (characterset === undefined && gsmValidator.validateMessage(message)) || characterset === GSM;
var splitResult, singleBytes, multiBytes, charBytes;
if (isGsm) {
splitResult = gsmSplitter.split(message, options);
singleBytes = 160;
multiBytes = 153;
charBytes = 1;
} else {
splitResult = unicodeSplitter.split(message, options);
singleBytes = 140;
multiBytes = 134;
charBytes = 2;
}
var remainingInPart = calculateRemaining(splitResult.parts, singleBytes, multiBytes, charBytes);
return {
characterSet: isGsm ? GSM : UNICODE,
parts: splitResult.parts,
bytes: splitResult.totalBytes,
length: splitResult.totalLength,
remainingInPart: remainingInPart
};
};