package unstrctrd
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=1040bfcd411a345faaf4ce5aafea1201bfc43077bd252939579aed96ffb16979
sha512=245389add87e0995a3a82a9f189148bb6339370132c9160920c3de238a30351883dec8528ac8a4ff2a78ae467033f40666f92ebef7eea432806b377aca2a5bdb
README.md.html
Unstrctrd
An header of an email has a formal format described by RFC5322. After mrmime
, it reveals that the more general form for any values of fields (like a date, an email address, etc.) is the unstructured form.
This library wants to provide the first ground of how to parse an email header. From that, we want to post-process unstructured values to cast them to any expected values like email address.
The idea behind this library is to handle a common format which can be found into several standards, the folding-whitespace. For example, the *.deb*
file uses this kind of format where it's possible that one field can be associated to a multiline value.
Description: my superb Debian
package!
This library wants to fold the value and, by this way, delete insignificant folding-whitespace to be able to apply a post-process like: parse an email address (eg. emile
for more examples).
To: my.valid.mail
(comment) @x25519.net
API
unstrctrd
comes with several post-processes like:
val fold_fws : t -> t
val without_comments : t -> (t, [> error ]) result
val split_at : index:int -> t -> t * t
val split_on : on:[ WSP | FWS | Uchar of Uchar.t | Char of char | LF | CR ] -> t -> (t * t) option
Of course, it provides processes to manipulate a string
and to convert an unstructured value to an UTF-8 string
. With that, we can imply that unstrctrd
handles UTF-8 encoding (and only UTF-8 according RFC 6532).
The API gives you a way to craft an unstructured value and ensures that this value is correct (and invalid any unstructured values which produces CRLF terminating token)
Angstrom
unstrctrd.parser
provides an angstrom parser which can be safely composed with others angstrom
parsers. It requires the allocation of an internal buffer used by ocamllex
and ensure the safety.