<commit_before># Type

When you deserialize your data or when you configure your metadata mapping, you can specify a type. This type is not 
mandatory except for deserializing but it is highly recommended to configure it in order to make the library faster.

A type is a generic structure which follow the pattern `type` or `type<option1=value, option2=value, option3=value>`.

## Built-in

The library is shipped with some built-in types:

 | Type                                       |
 |--------------------------------------------|
 | bool                                       |
 | boolean (alias of bool)                    |
 | double (alias of float)                    |
 | float                                      |
 | numeric (alias of float)                   |
 | int                                        |
 | integer (alias of int)                     |
 | string                                     |
 | array                                      |
 | array<value=type>                          |
 | array<key=type, value=type>                |
 | DateTime                                   |
 | DateTime<format='Y-m-d H:i:d'>             |
 | DateTime<timezone='Europe/Paris'>          |
 | DateTimeImmutable                          |
 | DateTimeImmutable<format='Y-m-d H:i:d'>    |
 | DateTimeImmutable<timezone='Europe/Paris'> |
 | Fully\Qualified\Class\Name                 |

## Custom

If you want to create your own type for a specific class, you can implement the `Ivory\Serializer\Type\TypeInterface`<commit_msg>[Doc] Fix types table<commit_after># Type

When you deserialize your data or when you configure your metadata mapping, you can specify a type. This type is not 
mandatory except for deserializing but it is highly recommended to configure it in order to make the library faster.

A type is a generic structure which follow the pattern `type` or `type<option1=value, option2=value, option3=value>`.

## Built-in

The library is shipped with some built-in types:

| Type                                       |
| ------------------------------------------ |
| bool                                       |
| boolean (alias of bool)                    |
| double (alias of float)                    |
| float                                      |
| numeric (alias of float)                   |
| int                                        |
| integer (alias of int)                     |
| string                                     |
| array                                      |
| array<value=type>                          |
| array<key=type, value=type>                |
| DateTime                                   |
| DateTime<format='Y-m-d H:i:d'>             |
| DateTime<timezone='Europe/Paris'>          |
| DateTimeImmutable                          |
| DateTimeImmutable<format='Y-m-d H:i:d'>    |
| DateTimeImmutable<timezone='Europe/Paris'> |
| Fully\Qualified\Class\Name                 |

## Custom

If you want to create your own type for a specific class, you can implement the `Ivory\Serializer\Type\TypeInterface`
{'fraction_non_alphanumeric': 0.107421875, 'fraction_numerical': 0.001953125, 'mean_word_length': 1.2628865979381443, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 20, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3454489', 'n_tokens_mistral': 730, 'n_tokens_neox': 699, 'n_words': 238}