package ecaml

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

Source file browse_url.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
open! Core
open! Async_kernel
open! Import

module Url = struct
  include String

  let type_ = Value.Type.string
  let t = type_
end

let actually_browse_in_test = ref false
let browser_function = Customization.Wrap.("browse-url-browser-function" <: Symbol.t)

let browse_url =
  let browse_url = Funcall.Wrap.("browse-url" <: Url.t @-> return nil) in
  fun url ->
    if am_running_test && not !actually_browse_in_test
    then (
      message_s [%sexp "Would browse url", (url : Url.t)];
      return ())
    else
      (* browser function may be implemented in Async Ecaml *)
      Async_ecaml.Private.run_outside_async1 [%here] browse_url url
;;

let browse_url_chrome = Funcall.Wrap.("browse-url-chrome" <: Url.t @-> return nil)

module Private = struct
  let actually_browse_in_test = actually_browse_in_test
end