module Jekyll_format: sig
.. end
Jekyll blog post parsing module
Types and accessors
type
t
t
is a single Jekyll-format post that has been parsed
type
fields
fields
represents the YAML front matter in the blog post
type
body = Astring.String.Sub.t
body
represents the blog post content, probably in Markdown format
val fields : t -> fields
fields t
retrieves the YAML front matter fields from the blog post
val body : t -> body
body t
retrieves the blog post content from the blog post
val find : string -> fields -> string option
find key t
retrieves the first key
from the YAML front matter, and
None
if the key is not present. Keys are case-sensitive as per the
YAML specification. Whitespace is trimmed around the field value.
val keys : fields -> string list
keys f
retrieves all of the key names in the YAML front matter.
val title : ?fname:string ->
fields -> (string, [> Rresult.R.msg ]) Result.result
title ?fname f
will query the title from the YAML metadata, and fallback
to parsing the optional fname
filename of the post if no explicit key
is found. If nothing works then None
is returned.
val title_exn : ?fname:string -> fields -> string
val date : ?fname:string ->
fields -> (Ptime.t, [> Rresult.R.msg ]) Result.result
date ?fname f
will query the post date from the YAML metadata, and
fallback to parsing the optional fname
filename of the post if no explicit
key is found.
val date_exn : ?fname:string -> fields -> Ptime.t
val slug : ?fname:string ->
fields -> (string, [> Rresult.R.msg ]) Result.result
slug ?fname f
will query the slug name from the YAML metadata, or calculate
it from the filename if no explicit slug field is set, and finally fallback to
parsing the
Jekyll_format.title
of the post if nothing else is found.
The slug is calculated using
Jekyll_format.slug_of_string
.
val slug_exn : ?fname:string -> fields -> string
Conversion functions
val of_string : string -> (t, [> Rresult.R.msg ]) Result.result
of_string t
parses a Jekyll-format blog post and either returns a
Jekyll_format.t
or signals an error in the result.
val of_string_exn : string -> t
val body_to_string : body -> string
body_to_string body
serialises the body to an OCaml string, maintaining
the original layout and whitespace.
val slug_of_string : string -> string
slug_of_string s
replaces all non-ascii characters (a..zA..Z0..9
) with
the -
hyphen character. The result is also lowercase.
val parse_filename : string -> (Ptime.t * string * string, [> Rresult.R.msg ]) Result.result
parse_filename f
parses a Jekyll format filename YEAR-MONTH-DAY-title.MARKUP
and returns the time, title and markup components respectively. If the
time could not be parsed, then the header is assumed to be the title and
None
is returned for the time.
val parse_filename_exn : string -> Ptime.t * string * string
val parse_date : ?and_time:bool -> string -> (Ptime.t, [> Rresult.R.msg ]) Result.result
parse_date ?and_time s
parses a Jekyll format date field in
YYYY-MM-DD HH:MM:SS +/-TT:TT
format, where the HMS and timezone
components are optional. and_time
defaults to true and causes
the non-date components to be parsed; setting it to false only
causes the YMD portions to be parsed.
val parse_date_exn : ?and_time:bool -> string -> Ptime.t
exception Parse_failure of string
Exception raised on parse failure by the _exn
functions in this module.
The argument is a human-readable error message.
Pretty printers
val pp : t Fmt.t
val pp_body : body Fmt.t
pp_body body
prints out the blog post body
in the original layout.
val pp_fields : fields Fmt.t
pp_fields f
prints out the YAML front matter in the original layout.
Error strings
module E: sig
.. end
These are error strings returned by the parser.