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() : '';