Page
Library
Module
Module type
Parameter
Class
Class type
Source
Conan_unixSourceConan_unix provides few functions to recognize the MIME type of a given file. It implements unix routines to execute a decision tree Conan.Tree.t into a file accessible via a given path.
The Conan.Tree.t can come from a database available into a specific directory (see conan-cli) or the user can build/unserialize it from somewhere else.
Let's play with Conan_unix such as "/home/conan/database" contains our database (see conan or man magic to understand the format of the database). You must unserialize it to get the decision tree via:
let tree = Conan_unix.tree ~directory:"/home/conan/database"From this tree, you can process it with a file accessible via a path. Let's say that, we want to recognize the type of "/home/conan/file", we just need:
let metadata =
match Conan_unix.run_with_tree tree "/home/conan/file" with
| Ok m -> m
| Error (`Msg err) -> failwith errAn equivalent of the code above is:
let metadata =
match Conan_unix.run ~database:"/home/conan/database"
"/home/conan/file" with
| Ok m -> m
| Error (`Msg err) -> failwith errFinally, you are able to generate a decision tree from a string instead of a directory (as before) with tree_of_string. Then, you are able to merge it with another decision tree via Conan.Tree.merge.
The returned metadata gives you two informations: 1) a possible output which describes the given file 2) a possible MIME type
You can get the output description Conan.Metadata.output and the MIME type via Conan.Metadata.mime. These informations are optional - the decision tree can finish without any information.
tree ~directory generates a Conan.Tree.t from the given directory. It will scan any files from the directory (but it does not do a recursive traverse) and it ignores any malformed files.
tree_of_string str tries to construct from the given str a Conan.Tree.t.
run_with_tree tree filename executes the given decision tree on the file accessible via the path filename.
run ~database filename executes the Conan.Tree.t which results from the given directory database on the file accessible via the path filename.