:mod:`khard.formatter`
======================

.. py:module:: khard.formatter

.. autoapi-nested-parse::

   Formatting and sorting of contacts



Module Contents
---------------


.. py:class:: Formatter(display: str, preferred_email: List[str], preferred_phone: List[str], show_nicknames: bool, parsable: bool)

   A formtter for CarddavObject.

   It recieves some settings on initialisation which influence the formatting
   of the contact.

   .. attribute:: FIRST
      :annotation: = first_name

      

   .. attribute:: LAST
      :annotation: = last_name

      

   .. attribute:: FORMAT
      :annotation: = formatted_name

      

   .. method:: format_labeled_field(field: Dict[str, List[str]], preferred: List[str])
      :staticmethod:


      Format a labeled field from a vcard for display, the first entry
      under the preferred label will be returned

      :param field: the labeled field, this must not be empty!
      :param preferred: the order of preferred labels
      :returns: the formatted field entry


   .. method:: get_special_field(self, vcard: CarddavObject, field: str)


      Returns certain fields with specific formatting options
      (for support of some list command options).


   .. method:: get_nested_field(vcard: CarddavObject, field: str)
      :staticmethod:


      Returns the value of a nested field from a string

      get_nested_field(vcard,'emails.home.1') is equivalent to
      vcard.emails['home'][1].

      :param vcard: the contact from which to get the field
      :param field: a field specification
      :returns: the nested field, or the empty string if it didn't exist



