mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
wip: use Stag in Format
This commit is contained in:
parent
40189757ca
commit
e397d90279
2 changed files with 26 additions and 2 deletions
|
|
@ -336,15 +336,23 @@ module ANSI_codes = struct
|
||||||
| _ -> raise No_such_style
|
| _ -> raise No_such_style
|
||||||
end
|
end
|
||||||
|
|
||||||
|
type stag +=
|
||||||
|
| Style of ANSI_codes.style list
|
||||||
|
|
||||||
let color_enabled = ref false
|
let color_enabled = ref false
|
||||||
|
|
||||||
|
let mark_open_style st style =
|
||||||
|
Stack.push style st;
|
||||||
|
if !color_enabled then string_of_style_list style else ""
|
||||||
|
|
||||||
|
let mark_close_style st style =
|
||||||
|
|
||||||
(* either prints the tag of [s] or delegate to [or_else] *)
|
(* either prints the tag of [s] or delegate to [or_else] *)
|
||||||
let mark_open_tag st ~or_else s =
|
let mark_open_tag st ~or_else s =
|
||||||
let open ANSI_codes in
|
let open ANSI_codes in
|
||||||
try
|
try
|
||||||
let style = style_of_tag_ s in
|
let style = style_of_tag_ s in
|
||||||
Stack.push style st;
|
mark_open_style st style
|
||||||
if !color_enabled then string_of_style_list style else ""
|
|
||||||
with No_such_style -> or_else s
|
with No_such_style -> or_else s
|
||||||
|
|
||||||
let mark_close_tag st ~or_else s =
|
let mark_close_tag st ~or_else s =
|
||||||
|
|
@ -378,6 +386,11 @@ let update_tag_funs_ funs f1 f2 =
|
||||||
mark_close_tag = f2 ~or_else:funs.mark_close_tag;
|
mark_close_tag = f2 ~or_else:funs.mark_close_tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let styling stl pp out x =
|
||||||
|
pp_open_stag out (Style stl);
|
||||||
|
try pp out x; pp_close_stag out ()
|
||||||
|
with e -> pp_close_stag out (); raise e
|
||||||
|
|
||||||
[@@@ocaml.warning "+3"]
|
[@@@ocaml.warning "+3"]
|
||||||
|
|
||||||
[@@@else_]
|
[@@@else_]
|
||||||
|
|
|
||||||
|
|
@ -324,6 +324,17 @@ module ANSI_codes : sig
|
||||||
is a very shiny style. *)
|
is a very shiny style. *)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
[@@@ifge 4.8]
|
||||||
|
|
||||||
|
val styling : ANSI_codes.style list -> 'a printer -> 'a printer
|
||||||
|
(** [styling st p] is the same printer as [p], except it locally sets
|
||||||
|
the style [st].
|
||||||
|
|
||||||
|
Available only on OCaml >= 4.08.
|
||||||
|
@since NEXT_RELEASE *)
|
||||||
|
|
||||||
|
[@@@endif]
|
||||||
|
|
||||||
(** {2 IO} *)
|
(** {2 IO} *)
|
||||||
|
|
||||||
val output : t -> 'a printer -> 'a -> unit
|
val output : t -> 'a printer -> 'a -> unit
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue