aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/translation/js/reference.jvm.lux
blob: 33cf3ed7d2259be94bedc3efbd74210ecfa94746 (plain)
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
(.module:
  lux
  (lux [macro]
       (data [text]
             text/format))
  (luxc ["&" lang])
  [//]
  (// [".T" runtime]))

(do-template [<register> <translation> <prefix>]
  [(def: #export (<register> register)
     (-> Nat //.Expression)
     (format <prefix> (%n register)))
   
   (def: #export (<translation> register)
     (-> Nat (Meta //.Expression))
     (:: macro.Monad<Meta> wrap (<register> register)))]

  [closure  translate-local    "c"]
  [variable translate-captured "v"])

(def: #export (global [module name])
  (-> Ident //.Expression)
  (format (text.replace-all "/" "_" module) "$" (&.normalize-name name)))

(def: #export (translate-definition name)
  (-> Ident (Meta //.Expression))
  (:: macro.Monad<Meta> wrap (global name)))