UNPKG

ngx-vcard

Version:

Generate an RFC compliant vCard and download it.

42 lines 5.2 kB
/** * Encodes string */ export function e(value) { if (value) { if (typeof value !== 'string') { value = '' + value; } return (value // From https://datatracker.ietf.org/doc/html/rfc6350 // Some properties may contain one or more values delimited by a COMMA // character (U+002C). Therefore, a COMMA character in a value MUST be // escaped with a BACKSLASH character (U+005C), even for properties that // don't allow multiple instances (for consistency). .replace(/,/g, ',') // Some properties (e.g., N and ADR) comprise multiple fields delimited // by a SEMICOLON character (U+003B). Therefore, a SEMICOLON in a field // of such a "compound" property MUST be escaped with a BACKSLASH // character. SEMICOLON characters in non-compound properties MAY be // escaped. On input, an escaped SEMICOLON character is never a field // separator. An unescaped SEMICOLON character may be a field // separator, depending on the property in which it appears. .replace(/;/g, ';') // Finally, BACKSLASH characters in values MUST be escaped with a // BACKSLASH character. .replace(/\\/g, '\\\\') // NEWLINE (U+000A) characters in values MUST be // encoded by two characters: a BACKSLASH followed by either an 'n' // (U+006E) or an 'N' (U+004E). .replace(/\n/g, '\\n') // In all other cases, escaping MUST NOT be used. ); } return ''; } /** * Return new line characters */ export function nl() { return '\n'; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Y2FyZC9zcmMvbGliL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsQ0FBQyxDQUFDLEtBQXlCO0lBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLEtBQUssR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLENBQ0wsS0FBSztZQUNILHFEQUFxRDtZQUNyRCx1RUFBdUU7WUFDdkUsd0VBQXdFO1lBQ3hFLHlFQUF5RTtZQUN6RSxxREFBcUQ7YUFDcEQsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7WUFFbkIsd0VBQXdFO1lBQ3hFLHlFQUF5RTtZQUN6RSxrRUFBa0U7WUFDbEUsc0VBQXNFO1lBQ3RFLHVFQUF1RTtZQUN2RSwrREFBK0Q7WUFDL0QsNkRBQTZEO2FBQzVELE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBRW5CLGtFQUFrRTtZQUNsRSx3QkFBd0I7YUFFdkIsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFFdkIsZ0RBQWdEO1lBQ2hELG9FQUFvRTtZQUNwRSxnQ0FBZ0M7YUFDL0IsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFFeEIsa0RBQWtEO1NBQ25ELENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsRUFBRTtJQUNoQixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVuY29kZXMgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSAnJyArIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICB2YWx1ZVxuICAgICAgICAvLyBGcm9tIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjM1MFxuICAgICAgICAvLyAgU29tZSBwcm9wZXJ0aWVzIG1heSBjb250YWluIG9uZSBvciBtb3JlIHZhbHVlcyBkZWxpbWl0ZWQgYnkgYSBDT01NQVxuICAgICAgICAvLyAgY2hhcmFjdGVyIChVKzAwMkMpLiAgVGhlcmVmb3JlLCBhIENPTU1BIGNoYXJhY3RlciBpbiBhIHZhbHVlIE1VU1QgYmVcbiAgICAgICAgLy8gIGVzY2FwZWQgd2l0aCBhIEJBQ0tTTEFTSCBjaGFyYWN0ZXIgKFUrMDA1QyksIGV2ZW4gZm9yIHByb3BlcnRpZXMgdGhhdFxuICAgICAgICAvLyAgZG9uJ3QgYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzIChmb3IgY29uc2lzdGVuY3kpLlxuICAgICAgICAucmVwbGFjZSgvLC9nLCAnLCcpXG5cbiAgICAgICAgLy8gIFNvbWUgcHJvcGVydGllcyAoZS5nLiwgTiBhbmQgQURSKSBjb21wcmlzZSBtdWx0aXBsZSBmaWVsZHMgZGVsaW1pdGVkXG4gICAgICAgIC8vICBieSBhIFNFTUlDT0xPTiBjaGFyYWN0ZXIgKFUrMDAzQikuICBUaGVyZWZvcmUsIGEgU0VNSUNPTE9OIGluIGEgZmllbGRcbiAgICAgICAgLy8gIG9mIHN1Y2ggYSBcImNvbXBvdW5kXCIgcHJvcGVydHkgTVVTVCBiZSBlc2NhcGVkIHdpdGggYSBCQUNLU0xBU0hcbiAgICAgICAgLy8gIGNoYXJhY3Rlci4gIFNFTUlDT0xPTiBjaGFyYWN0ZXJzIGluIG5vbi1jb21wb3VuZCBwcm9wZXJ0aWVzIE1BWSBiZVxuICAgICAgICAvLyAgZXNjYXBlZC4gIE9uIGlucHV0LCBhbiBlc2NhcGVkIFNFTUlDT0xPTiBjaGFyYWN0ZXIgaXMgbmV2ZXIgYSBmaWVsZFxuICAgICAgICAvLyAgc2VwYXJhdG9yLiAgQW4gdW5lc2NhcGVkIFNFTUlDT0xPTiBjaGFyYWN0ZXIgbWF5IGJlIGEgZmllbGRcbiAgICAgICAgLy8gIHNlcGFyYXRvciwgZGVwZW5kaW5nIG9uIHRoZSBwcm9wZXJ0eSBpbiB3aGljaCBpdCBhcHBlYXJzLlxuICAgICAgICAucmVwbGFjZSgvOy9nLCAnOycpXG5cbiAgICAgICAgLy8gIEZpbmFsbHksIEJBQ0tTTEFTSCBjaGFyYWN0ZXJzIGluIHZhbHVlcyBNVVNUIGJlIGVzY2FwZWQgd2l0aCBhXG4gICAgICAgIC8vICBCQUNLU0xBU0ggY2hhcmFjdGVyLlxuXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG5cbiAgICAgICAgLy8gTkVXTElORSAoVSswMDBBKSBjaGFyYWN0ZXJzIGluIHZhbHVlcyBNVVNUIGJlXG4gICAgICAgIC8vICBlbmNvZGVkIGJ5IHR3byBjaGFyYWN0ZXJzOiBhIEJBQ0tTTEFTSCBmb2xsb3dlZCBieSBlaXRoZXIgYW4gJ24nXG4gICAgICAgIC8vICAoVSswMDZFKSBvciBhbiAnTicgKFUrMDA0RSkuXG4gICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJylcblxuICAgICAgLy8gIEluIGFsbCBvdGhlciBjYXNlcywgZXNjYXBpbmcgTVVTVCBOT1QgYmUgdXNlZC5cbiAgICApO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBSZXR1cm4gbmV3IGxpbmUgY2hhcmFjdGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbmwoKTogc3RyaW5nIHtcbiAgcmV0dXJuICdcXG4nO1xufVxuIl19