Note:

You are viewing a development version of the library. Goto the latest version.

let oasissyslight_ml = 
  "module OASISGettext = struct\n# 22 \"src/oasis/OASISGettext.ml\"\n\n\n\  let ns_ str =\n\    str\n\n\n\  let s_ str =\n\    str\n\n\n\  let f_ (str: ('a, 'b, 'c, 'd) format4) =\n\    str\n\n\n\  let fn_ fmt1 fmt2 n =\n\    if n = 1 then\n\      fmt1^^\"\"\n\    else\n\      fmt2^^\"\"\n\n\n\  let init =\n\    []\n\n\nend\n\nmodule OASISExpr = struct\n# 22 \"src/oasis/OASISExpr.ml\"\n\n\n\n\n\n\  open OASISGettext\n\n\n\  type test = string\n\n\n\  type flag = string\n\n\n\  type t =\n\    | EBool of bool\n\    | ENot of t\n\    | EAnd of t * t\n\    | EOr of t * t\n\    | EFlag of flag\n\    | ETest of test * string\n\n\n\n\  type 'a choices = (t * 'a) list\n\n\n\  let eval var_get t =\n\    let rec eval' =\n\      function\n\        | EBool b ->\n\            b\n\n\        | ENot e ->\n\            not (eval' e)\n\n\        | EAnd (e1, e2) ->\n\            (eval' e1) && (eval' e2)\n\n\        | EOr (e1, e2) ->\n\            (eval' e1) || (eval' e2)\n\n\        | EFlag nm ->\n\            let v =\n\              var_get nm\n\            in\n\              assert(v = \"true\" || v = \"false\");\n\              (v = \"true\")\n\n\        | ETest (nm, vl) ->\n\            let v =\n\              var_get nm\n\            in\n\              (v = vl)\n\    in\n\      eval' t\n\n\n\  let choose ?printer ?name var_get lst =\n\    let rec choose_aux =\n\      function\n\        | (cond, vl) :: tl ->\n\            if eval var_get cond then\n\              vl\n\            else\n\              choose_aux tl\n\        | [] ->\n\            let str_lst =\n\              if lst = [] then\n\                s_ \"<empty>\"\n\              else\n\                String.concat\n\                  (s_ \", \")\n\                  (List.map\n\                     (fun (cond, vl) ->\n\                        match printer with\n\                          | Some p -> p vl\n\                          | None -> s_ \"<no printer>\")\n\                     lst)\n\            in\n\              match name with\n\                | Some nm ->\n\                    failwith\n\                      (Printf.sprintf\n\                         (f_ \"No result for the choice list '%s': %s\")\n\                         nm str_lst)\n\                | None ->\n\                    failwith\n\                      (Printf.sprintf\n\                         (f_ \"No result for a choice list: %s\")\n\                         str_lst)\n\    in\n\      choose_aux (List.rev lst)\n\n\nend\n\n"