vcardjs

** Goals - complete vCard 4.0 (RFC 6350) support - jCard compatibility - hCard compatibility

Usage no npm install needed!

<script type="module">
  import vcardjs from 'https://cdn.skypack.dev/vcardjs';
</script>

README

+TITLE: vCardJS - a vCard 4.0 implementation in JavaScript.

** Goals

  • complete vCard 4.0 (RFC 6350) support
  • jCard compatibility
  • hCard compatibility

** Features

  • can parse vCards.
  • generates (roughly) jCards.

** TODOs

  • implement more attributes.
  • test with output from various software.
  • implement: generate vcards from jcards
  • implement: generate hcards (there's a start in [[vcard.js][https://github.com/mattt/vcard.js]]'s toHtml() method)
  • jCard <-> JSON-LD "http://json-ld.org/contexts/person" conversion

** Examples *** parse a vcard from a string:

+BEGIN_SRC javascript

VCF.parse(input, function(vcard) { // this function is called with a VCard instance. // If the input contains more than one vCard, it is called multiple times. console.log("Formatted name", vcard.fn); console.log("Names", JSON.stringify(vcard.n)); });

+END_SRC

*** load vcard from a file:

+BEGIN_SRC html

<script>
  function loadVCard() {
    var fileReader = new FileReader();

    fileReader.onloadend = function() {
      document.getElementById('input').innerText = fileReader.result;
      VCF.parse(fileReader.result, function(vc) {
        document.getElementById('output').innerText = JSON.stringify(vc);
      });
    };

    fileReader.readAsText(document.getElementById('upload').files[0]);
  }
</script>

<input type="file" id="upload">
<button onclick="loadVCard()">Load vCard</button>
<h1>IN:</h1>
<pre id="input"></pre>
<h1>OUT:</h1>
<pre id="output"></pre>
#+END_SRC

** References