/
Resolve.purs
72 lines (65 loc) · 2.28 KB
/
Resolve.purs
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
module Mathbox.Class.Data.Resolve where
import Prelude (map, ($))
import Data.Maybe (Maybe(Nothing))
import Data.Nullable (Nullable, toNullable)
import Mathbox.Field
import Mathbox.Types as T
type ResolveG a b =
{ id :: b String
, classes :: a T.Classes
, data :: b T.Data
, expr :: b T.Emitter
, bind :: b T.Func
, live :: a T.Bool
, width :: b Int
, height :: b Int
, depth :: b Int
, bufferWidth :: a Int
, bufferHeight :: a Int
, bufferDepth :: a Int
}
type Resolve = ResolveG Field MaybeField
type JsResolve =
{ id :: Nullable (Field String)
, classes :: Field T.JsClasses
, data :: Nullable (Field T.Data)
, expr :: Nullable (Field T.Emitter)
, bind :: Nullable (Field T.Func)
, live :: Field T.Bool
, width :: Nullable (Field Int)
, height :: Nullable (Field Int)
, depth :: Nullable (Field Int)
, bufferWidth :: Field Int
, bufferHeight :: Field Int
, bufferDepth :: Field Int
}
mkResolve :: Resolve
mkResolve =
{ id : Nothing
, classes : Val $ T.mkClasses0
, data : Nothing
, expr : Nothing
, bind : Nothing
, live : Val $ true
, width : Nothing
, height : Nothing
, depth : Nothing
, bufferWidth : Val $ 1
, bufferHeight : Val $ 1
, bufferDepth : Val $ 1
}
resolveToJs :: Resolve -> JsResolve
resolveToJs r =
{ id : toNullable r.id
, classes : map T.classesToJs r.classes
, data : toNullable r.data
, expr : toNullable r.expr
, bind : toNullable r.bind
, live : r.live
, width : toNullable r.width
, height : toNullable r.height
, depth : toNullable r.depth
, bufferWidth : r.bufferWidth
, bufferHeight : r.bufferHeight
, bufferDepth : r.bufferDepth
}