mte/unikernel/duniverse/dune_/vendor/opam-file-format/opamPrinter.mli

198 lines
7.6 KiB
OCaml
Raw Normal View History

2025-11-11 02:07:51 +01:00
(**************************************************************************)
(* *)
(* Copyright 2012-2020 OCamlPro *)
(* Copyright 2012 INRIA *)
(* *)
(* All rights reserved. This file is distributed under the terms of the *)
(* GNU Lesser General Public License version 2.1, with the special *)
(* exception on linking described in the file LICENSE. *)
(* *)
(**************************************************************************)
(** Functions for converting parsed opam files back to strings *)
(** [OpamPrinter] transitional module with full position types *)
module FullPos : sig
open OpamParserTypes.FullPos
(** {2 Printers for the [value] and [opamfile] formats} *)
val relop_kind: [< relop_kind ] -> string
(** Converts {!OpamParserTypes.FullPos.relop_kind} to its string representation
([=], [!=], ..., [~]). *)
val logop_kind: [< logop_kind ] -> string
(** Converts {!OpamParserTypes.FullPos.logop_kind} to its string representation
([&] and [|]). *)
val pfxop_kind: [< pfxop_kind ] -> string
(** Converts {!OpamParserTypes.FullPos.logop_kind} to its string representation
([&] and [|]). *)
val env_update_op_kind: env_update_op_kind -> string
(** Converts {!OpamParserTypes.FullPos.env_update_op_kind} to its string representation
([=], [+=], ..., [=:]). *)
val relop: relop -> string
(** Converts {!OpamParserTypes.FullPos.relop} to its string representation
([=], [!=], ..., [~]). *)
val logop: logop -> string
(** Converts {!OpamParserTypes.FullPos.logop} to its string representation
([&] and [|]). *)
val pfxop: pfxop -> string
(** Converts {!OpamParserTypes.FullPos.pfxop} to its string representation
([!] and [?]). *)
val env_update_op: env_update_op -> string
(** Converts {!OpamParserTypes.FullPos.env_update_op} to its string representation
([=], [+=], ..., [=:]). *)
val value : value -> string
(** Converts {!value} to a string {b always using LF-encoding of newlines}. *)
val value_list: value list with_pos -> string
(** Converts a list of {!value}s to a string {b always using LF-encoding of
newlines}. *)
val items: opamfile_item list -> string
(** Converts a list of opam field/sections to a string.
@raise Invalid_argument if ["opam-version"] is greater than "2.0"
and not solely the first item. *)
val opamfile: opamfile -> string
(** Converts an {!opamfile} to a string.
@raise Invalid_argument if ["opam-version"] is greater than "2.0"
and not solely the first item. *)
val format_opamfile: Format.formatter -> opamfile -> unit
(** Writes an {!opamfile} to a [Format.formatter]. The function ensures that all
newlines are sent using [Format]'s break instructions (and so ultimately are
processed with the [out_newline] function of the formatter) but it is the
responsibility of the caller to ensure that the formatter is configured for
the required output, if necessary.
@raise Invalid_argument if ["opam-version"] is greater than "2.0"
and not solely the first item. *)
(** {2 Normalised output for opam syntax files} *)
(** opam normalised file format, for signatures.
- each top-level field on a single line
- newlines are LF-encoded (including on Windows)
- file ends with a newline
- spaces only after [fieldname:], between elements in lists, before braced
options, between operators and their operands
- fields are sorted lexicographically by field name
(using [String.compare])
- newlines in strings turned to ['\n'], backslashes and double quotes
escaped
- no comments (they don't appear in the internal file format anyway)
- fields containing an empty list, or a singleton list containing an empty
list, are not printed at all
*)
module Normalise : sig
val escape_string : string -> string
val value : value -> string
val item : opamfile_item -> string
val item_order : opamfile_item -> opamfile_item -> int
val items : opamfile_item list -> string
val opamfile : opamfile -> string
end
(** {2 Format-preserving reprinter} *)
module Preserved : sig
val items: string -> opamfile_item list -> opamfile_item list -> string
(** [items str orig_its its] converts [its] to string, while attempting to
preserve the layout and comments of the original [str] for unmodified
elements. The function assumes that [str] parses to the items
[orig_its].
@raise Invalid_argument if ["opam-version"] is greater than "2.0"
and not solely the first item in either list. *)
val opamfile: ?format_from:file_name -> opamfile -> string
(** [opamfile f] converts [f] to string, respecting the layout and comments in
the corresponding on-disk file for unmodified items. [format_from] can be
specified instead of using the filename specified in [f].
@raise Invalid_argument if ["opam-version"] is greater than "2.0"
and not solely the first item in the list. Note that
any errors in the file raise {!OpamLexer.Error} as
normal. *)
end
(** {2 Random utility functions} *)
val value_equals: value -> value -> bool
(** Compares structurally, without considering file positions *)
val opamfile_item_equals: opamfile_item -> opamfile_item -> bool
(** Compares structurally, without considering file positions *)
end
open OpamParserTypes
val relop: [< relop ] -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.relop instead."]
val logop: [< logop ] -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.logop instead."]
val pfxop: [< pfxop ] -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.pfxop instead."]
val env_update_op: env_update_op -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.env_update_op instead."]
val value : value -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.value instead."]
val value_list: value list -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.value_list instead."]
val items: opamfile_item list -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.items instead."]
val opamfile: opamfile -> string
[@@ocaml.deprecated "Use OpamPrinter.FullPos.opamfile instead."]
val format_opamfile: Format.formatter -> opamfile -> unit
[@@ocaml.deprecated "Use OpamPrinter.FullPos.format_opamfile instead."]
module Normalise : sig
val escape_string : string -> string
val value : value -> string
val item : opamfile_item -> string
val item_order : opamfile_item -> opamfile_item -> int
val items : opamfile_item list -> string
val opamfile : opamfile -> string
end
[@@ocaml.deprecated "Use OpamPrinter.FullPos.Normalise instead."]
module Preserved : sig
val items: string -> opamfile_item list -> opamfile_item list -> string
val opamfile: ?format_from:file_name -> opamfile -> string
end
[@@ocaml.deprecated "Use OpamPrinter.FullPos.Preserved instead."]
val value_equals: value -> value -> bool
[@@ocaml.deprecated "Use OpamPrinter.FullPos.value_equals instead."]
val opamfile_item_equals: opamfile_item -> opamfile_item -> bool
[@@ocaml.deprecated "Use OpamPrinter.FullPos.opamfile_item_equals instead."]