package liquid_syntax

  1. Overview
  2. Docs

Source file settings.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
open Syntax

let forloop = "forloop"
let increment = "*increment"
let cycle = "*cycle"
let next = "*next"
let skip = "*skip"
let style_tag = "*style_tag"

type currency = Usd | Eur | Cad | Aud | Gbp
type currency_info = { symbol : string; abbr : string; name : string }

let currency_info_from_currency = function
  | Usd -> { symbol = "$"; abbr = "USD"; name = "US Dollar" }
  | Eur -> { symbol = "€"; abbr = "EUR"; name = "Euro" }
  | Cad -> { symbol = "$"; abbr = "CAD"; name = "Canadian Dollar" }
  | Aud -> { symbol = "$"; abbr = "AUD"; name = "Australian Dollar" }
  | Gbp -> { symbol = "£"; abbr = "GBP"; name = "Pound Sterling" }

type error_handler = string -> unit
type error_policy = Strict | Warn | Silent | Custom of error_handler
type log_policy = Verbose | Minimal | Never

let log_policy_key = "*log_policy"
let preferred_currency_key = "*preferred_currency"

type t = {
    log_policy : log_policy
  ; error_policy : error_policy
  ; preferred_currency : currency
  ; filters : liquid_filter_lookup
  ; context : variable_context
  ; template_directory : string
  ; log_directory : string option
  ; timezone : Date.Timezone.t
}

let default_filter_lookup _ = None
let default_custom_ctx = Ctx.empty

let make ?(log_policy = Never) ?(log_directory = "") ?(error_policy = Strict)
    ?(preferred_currency = Usd) ?(filters = default_filter_lookup)
    ?(context = default_custom_ctx) ?(template_directory = ".")
    ?(timezone = Date.Timezone.default) () =
  {
    log_policy
  ; log_directory = (if log_directory = "" then None else Some log_directory)
  ; error_policy
  ; preferred_currency
  ; filters
  ; context
  ; template_directory
  ; timezone
  }