Module Swhid_types

type object_type =
| Content of string(*

The string parameter is the hash function name used for the computation, defaults to "sha1_git" (in most cases, you don't care about it)

*)
| Directory
| Release
| Revision
| Snapshot

The kinds of objects represented by swhids, see the software heritage model documentation.

type object_id = string

Must be of length 40 and made only of hexadecimal characters.

type identifier_core = int * object_type * object_id

The scheme version, the object type and the object identifier.

type context_qualifier =
| Anchor of identifier_core(*

a designated node in the Merkle DAG relative to which a path to the object is specified, as the core identifier of a directory, a revision, a release or a snapshot

*)
| Origin of string(*

the software origin where an object has been found or observed in the wild, as an URI

*)
| Path of string(*

the absolute file path, from the root directory associated to the anchor node, to the object; when the anchor denotes a directory or a revision, and almost always when it’s a release, the root directory is uniquely determined; when the anchor denotes a snapshot, the root directory is the one pointed to by HEAD (possibly indirectly), and undefined if such a reference is missing

*)
| Visit of identifier_core(*

the core identifier of a snapshot corresponding to a specific visit of a repository containing the designated object

*)
type qualifier =
| Context of context_qualifier(*

either a context

*)
| Fragment of int * int option(*

or a fragment (a line number or two)

*)
type identifier = identifier_core * qualifier list

The type for full swhids.

val object_type_of_string : string -> object_type option

Helper to build an object_type from a string.

val object_id_invalid : object_id -> bool

Checks if an object_id is invalid, i.e. if it's not of length 40 or if it contains non-hexadecimal characters.

val object_id_from_string : string -> object_id option

Helper function to build an object_id from a string that will return None if the string isn't valid according to object_type_is_invalid

val content : ?hash_type:string -> object_id -> qualifier list -> identifier

Builds a swhid of kind content from it's core id and a list of qualifiers. The given hash defaults to "sha1_git" and you shouldn't care about it in most cases.

val directory : object_id -> qualifier list -> identifier

Builds a swhid of kind directory from it's core id and a list of qualifiers.

val snapshot : object_id -> qualifier list -> identifier

Builds a swhid of kind snapshot from it's core id and a list of qualifiers

val revision : object_id -> qualifier list -> identifier

Builds a swhid of kind revision from it's core id and a list of qualifiers

val release : object_id -> qualifier list -> identifier

Builds a swhid of kind release from it's core id and a list of qualifiers

val get_object_id : identifier -> object_id

Extract the core id from a given identifier.

val get_object_type : identifier -> object_type

Extract the object type from a given identifier.

exception Parser_error of string

Exception raised by the parser when e.g. the scheme version is unknown.