diff --git a/frontend/src/routes/contact/Address.svelte b/frontend/src/routes/contact/Address.svelte new file mode 100644 index 0000000..19a86ea --- /dev/null +++ b/frontend/src/routes/contact/Address.svelte @@ -0,0 +1,31 @@ + + +
+{#if address.box} +{address.box} +{/if} +{#if address.ext} +{address.ext} +{/if} +{#if address.street} +{address.street} +{/if} +{#if address.code} +{address.code} +{/if} +{#if address.loc} +{address.loc} +{/if} +{#if address.region} +{address.region} +{/if} +{#if address.country} +{address.country} +{/if} +
\ No newline at end of file diff --git a/frontend/src/routes/contact/Card.svelte b/frontend/src/routes/contact/Card.svelte index c62e7fb..be45718 100644 --- a/frontend/src/routes/contact/Card.svelte +++ b/frontend/src/routes/contact/Card.svelte @@ -1,4 +1,5 @@
-
-
+ + +

{contact.vcard}
\ No newline at end of file diff --git a/frontend/src/routes/contact/Name.svelte b/frontend/src/routes/contact/Name.svelte index b6655e4..f5e2663 100644 --- a/frontend/src/routes/contact/Name.svelte +++ b/frontend/src/routes/contact/Name.svelte @@ -6,18 +6,20 @@ let n = $derived(name(vcard)); +
{#if n.prefix} -{n.prefix} +{n.prefix} {/if} {#if n.given} -{n.given} -{/if} -{#if n.family} -{n.family} +{n.given} {/if} {#if n.additional} -{n.additional} +{n.additional} +{/if} +{#if n.family} +{n.family} {/if} {#if n.suffix} -{n.suffix} +{n.suffix} {/if} +
\ No newline at end of file diff --git a/frontend/src/vcard.js b/frontend/src/vcard.js index ec20322..49e7ab1 100644 --- a/frontend/src/vcard.js +++ b/frontend/src/vcard.js @@ -1,51 +1,28 @@ -export function parse(data){ - var code = data.vcard; - const lines = code.split("\n"); - let unprocessed = null; - var o = {}; - for (var line of lines){ - if (unprocessed = null) unprocessed = line; - if (line.startsWith(' ')) { // extend line - unprocessed += line.substring(1); - } else { - // process complete line - const parts = line.split(':'); - var prefix = parts[0]; - var val = parts.slice(1).join(':'); - var key = prefix.split(';')[0].toUpperCase(); - switch (key) { - case "ADR": o[key] = parseAdr(prefix,val); break; - default: - if (key) o[prefix]=val; - } - unprocessed = line; - } +export function addr(vcard){ + const match = vcard.match(/^ADR:(.+)$/m); + let adr = { + box: null, + ext: null, + street: null, + locality: null, + region: null, + code: null, + country: null } - console.log(o); -} - -function parseAdr(key,val){ - var parts = val.split(';'); - var adr = { - postbox : parts[0], - ext : parts[1], - street : parts[2], - locality : parts[3], - region : parts[4], - code : parts[5], - country : parts[6] - } - parts = key.split(';'); - for (let part of parts){ - let inner = part.split('='); - if (inner.length<2) continue; - const k = inner[0]; - const v = inner.slice(1).join('='); - adr[k] = v; + if (match){ + const parts = match[1].trim().split(';'); + adr.box = parts[0]; + adr.ext = parts[1]; + adr.street = parts[2]; + adr.loc = parts[3]; + adr.region = parts[4]; + adr.code = parts[5]; + adr.country = parts[6]; } return adr; } + export function fn(vcard){ const match = vcard.match(/^FN:(.+)$/m); return match ? match[1].trim() : '';