package mustache

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Variant of the t mustache datatype which includes source-file locations, and associated functions.

type loc = {
  1. loc_start : Lexing.position;
  2. loc_end : Lexing.position;
}
type desc =
  1. | String of string
  2. | Escaped of string
  3. | Section of section
  4. | Unescaped of string
  5. | Partial of string
  6. | Inverted_section of section
  7. | Concat of t list
  8. | Comment of string
and section = {
  1. name : string;
  2. contents : t;
}
and t = {
  1. loc : loc;
  2. desc : desc;
}
val dummy_loc : loc

A value of type loc, guaranteed to be different from any valid location.

val parse_lx : Lexing.lexbuf -> t

Read

val of_string : string -> t
val pp : Format.formatter -> t -> unit

pp fmt template print a template as raw mustache to the formatter fmt.

val to_formatter : Format.formatter -> t -> unit

Alias for compatibility

val to_string : t -> string

to_string template uses to_formatter in order to return a string representing the template as raw mustache.

val render_fmt : ?strict:bool -> Format.formatter -> t -> Json.t -> unit

render_fmt fmt template json render template, filling it with data from json, printing it to formatter fmt.

val render : ?strict:bool -> t -> Json.t -> string

render template json use render_fmt to render template with data from json and returns the resulting string.

val fold : string:(loc:loc -> string -> 'a) -> section:(loc:loc -> inverted:bool -> string -> 'a -> 'a) -> escaped:(loc:loc -> string -> 'a) -> unescaped:(loc:loc -> string -> 'a) -> partial:(loc:loc -> string -> 'a) -> comment:(loc:loc -> string -> 'a) -> concat:(loc:loc -> 'a list -> 'a) -> t -> 'a

fold template is the composition of f over parts of template, called in order of occurrence, where each f is one of the labelled arguments applied to the corresponding part. The default for f is the identity function.

  • parameter string

    Applied to each literal part of the template.

  • parameter escaped

    Applied to "name" for occurrences of {{name}}.

  • parameter unescaped

    Applied to "name" for occurrences of {{{name}}}.

  • parameter partial

    Applied to "box" for occurrences of {{> box}}.

  • parameter comment

    Applied to "comment" for occurrences of {{! comment}}.

val expand_partials : (loc:loc -> string -> t) -> t -> t

expand_partials f template is template with f p substituted for each partial p.

module Infix : sig ... end

Shortcut for concatening two templates pieces.

val raw : loc:loc -> string -> t

<p>This is raw text.</p>

val escaped : loc:loc -> string -> t

{{name}}

val unescaped : loc:loc -> string -> t

{{{name}}}

val inverted_section : loc:loc -> string -> t -> t

{{^person}} {{/person}}

val section : loc:loc -> string -> t -> t

{{#person}} {{/person}}

val partial : loc:loc -> string -> t

{{> box}}

val comment : loc:loc -> string -> t

{{! this is a comment}}

val concat : loc:loc -> t list -> t

Group a t list as a single t.