aboutsummaryrefslogtreecommitdiff
path: root/src/Lib/String.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/Lib/String.ml')
-rw-r--r--src/Lib/String.ml35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/Lib/String.ml b/src/Lib/String.ml
new file mode 100644
index 0000000..be16d0e
--- /dev/null
+++ b/src/Lib/String.ml
@@ -0,0 +1,35 @@
+let format_float precision f =
+ let str = Js.Float.toString f in
+ match Js.String.split "." str with
+ | [| a ; b |] -> a ^ "." ^ (Js.String.substring ~from:0 ~to_:precision b)
+ | _ -> str
+
+external btoa : string -> string = "btoa"
+ [@@bs.val] [@@bs.scope "window"]
+
+external atob : string -> string = "atob"
+ [@@bs.val] [@@bs.scope "window"]
+
+external unescape : string -> string = "unescape"
+ [@@bs.val]
+
+external escape : string -> string = "escape"
+ [@@bs.val]
+
+external encodeURIComponent : string -> string = "encodeURIComponent"
+ [@@bs.val]
+
+external decodeURIComponent : string -> string = "decodeURIComponent"
+ [@@bs.val]
+
+let encode str =
+ str
+ |> encodeURIComponent
+ |> unescape
+ |> btoa
+
+let decode str =
+ str
+ |> atob
+ |> escape
+ |> decodeURIComponent