vcard-generator
Version:
VCard v4.0 rfc6350 compliant generator from JSON.
121 lines (109 loc) • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var backslashRegex = exports.backslashRegex = /\\/g;
var newlineRegex = exports.newlineRegex = /\r?\n/g;
var commaRegex = exports.commaRegex = /,/g;
var semicolonRegex = exports.semicolonRegex = /;/g;
var doublequoteRegex = exports.doublequoteRegex = /"/g;
var encodeText = exports.encodeText = function encodeText(text) {
return text ? text.replace(backslashRegex, '\\\\').replace(newlineRegex, '\\n').replace(commaRegex, '\\,').replace(semicolonRegex, '\\;') : '';
};
var encodeTextList = exports.encodeTextList = function encodeTextList(text) {
var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
if (!text || !text.length) {
return '';
}
if (typeof text === 'string') {
return encodeText(text);
}
// array
return text.map(encodeText).join(delimiter);
};
var encodeQuotedText = exports.encodeQuotedText = function encodeQuotedText(text) {
return text.replace(newlineRegex, '\\n').replace(doublequoteRegex, '\\"');
};
var formatPref = exports.formatPref = function formatPref(pref) {
return pref > 0 ? ';PREF=' + pref : '';
};
var formatTypeValue = exports.formatTypeValue = function formatTypeValue(type) {
if (!type || !type.length) {
return '';
}
if (typeof type === 'string') {
return encodeText(type);
}
// array
return '"' + type.map(encodeText).join(',') + '"';
};
var formatType = exports.formatType = function formatType(type) {
var value = formatTypeValue(type);
return value && ';TYPE=' + value;
};
var padZero = function padZero(n) {
return '' + (n < 10 ? '0' : '') + n;
};
var formatDate = exports.formatDate = function formatDate(year, month, day) {
// 19850412
// 1985-04
// 1985
// --0412
// ---12
if (year) {
if (month) {
if (day) {
return '' + year + padZero(month) + padZero(day);
} else {
return year + '-' + padZero(month);
}
} else {
if (day) {
// invalid
return '';
} else {
return '' + year;
}
}
} else {
if (month) {
if (day) {
return '--' + padZero(month) + padZero(day);
} else {
// invalid
return '';
}
} else {
if (day) {
return '---' + padZero(day);
} else {
// invalid
return '';
}
}
}
};
var formatGender = exports.formatGender = function formatGender(gender) {
switch (gender.toUpperCase()) {
case 'M':
case 'MALE':
return 'M';
case 'F':
case 'FEMALE':
return 'F';
case 'O':
case 'OTHER':
return 'O';
case 'N':
case 'NONE':
return 'N';
case 'U':
case 'UNKNOWN':
return 'U';
default:
return 'O;' + encodeText(gender);
}
};
var isSet = exports.isSet = function isSet(x) {
return x;
};