forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmitters.ml
49 lines (41 loc) · 1.22 KB
/
Emitters.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
type t = {
requireEmitterEarly: string list;
exportEmitterEarly: string list;
requireEmitter: string list;
importEmitter: string list;
exportEmitter: string list;
}
let initial =
{
requireEmitterEarly = [];
exportEmitterEarly = [];
requireEmitter = [];
importEmitter = [];
exportEmitter = [];
}
let string ~emitter s = s :: emitter
let requireEarly ~emitters s =
{
emitters with
requireEmitterEarly = s |> string ~emitter:emitters.requireEmitterEarly;
}
let exportEarly ~emitters s =
{
emitters with
exportEmitterEarly = s |> string ~emitter:emitters.exportEmitterEarly;
}
let require ~emitters s =
{emitters with requireEmitter = s |> string ~emitter:emitters.requireEmitter}
let import ~emitters s =
{emitters with importEmitter = s |> string ~emitter:emitters.importEmitter}
let export ~emitters s =
{emitters with exportEmitter = s |> string ~emitter:emitters.exportEmitter}
let toString ~separator emitters =
[
emitters.requireEmitterEarly |> List.rev;
emitters.exportEmitterEarly |> List.rev;
emitters.requireEmitter |> List.rev;
emitters.importEmitter |> List.rev;
emitters.exportEmitter |> List.rev;
]
|> List.concat |> String.concat separator