module Printer:sig
..end
Pretty printing and parsing from string. In the following, an "event" is either a date or a time or a calendar.
This module implements different printers: one for each kind of events.
The three printers have the same signature:
they mainly implement a fprint : string -> formatter -> t -> unit
function
and a from_fstring : string -> string -> t
function.
The first one prints an event according to a format string
(see below for a description of such a format).
The second one converts a string to an event according to a format string.
A format string follows the unix utility 'date' (with few modifications).
It is a string which contains two types of objects: plain characters and
conversion specifiers. Those specifiers are introduced by
a %
character and their meanings are:
%%
: a literal %
%a
: short day name (by using a short version of day_name
)%A
: day name (by using day_name
)%b
: short month name (by using a short version of month_name
)%B
: month name (by using month_name
)%c
: shortcut for %a %b %d %H:%M:%S %Y
%C
: century: as %Y without the two last digits (since version 2.01)%d
: day of month (01..31)%D
: shortcut for %m/%d/%y
%e
: same as %_d
%F
: shortcut for %Y-%m-%d
: ISO-8601 notation (since version 2.01)%h
: same as %b
%H
: hour (00..23)%I
: hour (01..12)%i
: same as %F
; deprecated since 2.01%j
: day of year (001..366)%k
: same as %_H
%l
: same as %_I
%m
: month (01..12)%M
: minute (00..59)%n
: a newline (same as \n
)%p
: AM or PM%P
: am or pm (same as %p in lowercase) (since version 2.01)%r
: shortcut for %I:%M:%S %p
%R
: shortcut for %H:%M
(since version 2.01)%s
: number of seconds since 1970/1/1 (since version 2.01)%S
: second (00..60)%t
: a horizontal tab (same as \t
)%T
: shortcut for %H:%M:%S
%V
: week number of year (01..53)%w
: day of week (1..7)%W
: same as %V
%y
: last two digits of year (00..99)%Y
: year (four digits)%z
: time zone in the form +hhmm (e.g. -0400) (since version 2.01)%:z
: time zone in the form +hh:mm (e.g. -04:00) (since version 2.01)%::z
: time zone in the form +hh:mm:ss (e.g. -04:00:00)
(since version 2.01)%:::z
: time zone in the form +hh (e.g. -04) (since version 2.01)By default, date pads numeric fields with zeroes. Two special modifiers
between `%'
and a numeric directive are recognized:
'-' (hyphen)
: do not pad the field'_' (underscore)
: pad the field with spaces'0' (zero)
: pad the field with zeroes (default) (since version 2.01)'^'
: use uppercase if possible (since version 2.01)
Padding is only available for printers, not for parsers.%c
is Thu Sep 18 14:10:51 2003
.the date is %B, the %-dth
is
the date is January, the 6th
is matched by ;%D
is 01/06/03
You can manage the string representations of days and months.
By default, the English names are used but you can change their by
setting the references day_name
and month_name
.
val day_name : (Date.day -> string) Stdlib.ref
String representation of a day.
val name_of_day : Date.day -> string
name_of_day d
is equivalent to !day_name d
.
Used by the specifier %A
.
val short_name_of_day : Date.day -> string
short_name_of_day d
returns the 3 first characters of name_of_day d
.
Used by the specifier %a
.
val month_name : (Date.month -> string) Stdlib.ref
String representation of a month.
val name_of_month : Date.month -> string
name_of_month m
is equivalent to !day_month m
.
Used by the specifier %B
.
val short_name_of_month : Date.month -> string
short_name_of_month d
returns the 3 first characters of
name_of_month d
.
Used by the specifier %b
.
val set_word_regexp : Str.regexp -> unit
Set the regular expression used to recognize words in
from_fstring
. Default is [a-zA-Z]*
.
Printers also contain parsers which allow to build events from strings.
module type S =sig
..end
Generic signature of a printer-parser.
module Date:S
with type t = Date.t
Date printer.
module DatePrinter:S
with type t = Date.t
module Time:S
with type t = Time.t
Time printer.
module TimePrinter:S
with type t = Time.t
module Ftime:S
with type t = Ftime.t
Ftime printer.
module Precise_Calendar:S
with type t = Calendar.Precise.t
Precise Calendar printer.
module Calendar:S
with type t = Calendar.t
Calendar printer.
module CalendarPrinter:S
with type t = Calendar.t
module Precise_Fcalendar:S
with type t = Fcalendar.Precise.t
Precise Fcalendar printer.
module Fcalendar:S
with type t = Fcalendar.t
Fcalendar printer.