UNPKG

vcard-generator

Version:

VCard v4.0 rfc6350 compliant generator from JSON.

121 lines (109 loc) 2.88 kB
'use strict'; 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; };