@@ -42,29 +42,37 @@ when defined(js):
42
42
macro importByNodeOrDeno* (node, deno: static [string ]; def) =
43
43
# # pragma
44
44
importByNodeOrDenoImpl(def, nodeExpr= node, denoExpr= deno)
45
- proc importDenoOrImpl(def: NimNode; objInNode: string ; attr: NimNode): NimNode =
46
- var
47
- sAttr =
48
- if attr.kind in {nnkStrLit, nnkRStrLit, nnkTripleStrLit}:
49
- # allow using some expr that cannot be written as Nim expr
50
- attr.strVal
51
- else :
52
- # allow nnkCall, ident and more complex expr
53
- repr(attr)
45
+ proc importDenoOrImpl(def: NimNode; objInNode: string ; denoAttr, nodeAttr: NimNode): NimNode =
46
+ let
47
+ denoAttr = repr denoAttr
48
+ nodeAttr = repr nodeAttr
54
49
importByNodeOrDenoImpl(def,
55
- nodeExpr= objInNode& '.' & sAttr ,
56
- denoExpr= " Deno." & sAttr
50
+ nodeExpr= objInNode& '.' & nodeAttr ,
51
+ denoExpr= " Deno." & denoAttr
57
52
)
53
+ macro importDenoOr* (objInNode, attr; def) =
54
+ importDenoOrImpl(def, $ objInNode, attr, attr)
55
+
56
+ func requireExpr(module: string ): string = " require('" & module & " ')"
57
+ macro importDenoOrNodeMod* (modInNode, attr; def) =
58
+ importDenoOrImpl(def, requireExpr $ modInNode, attr)
58
59
macro importDenoOr* (objInNode, attr; def) =
59
60
importDenoOrImpl(def, $ objInNode, attr)
60
- macro importDenoOrProcess* (attr; def) =
61
- importDenoOrImpl(def, " process" , attr)
62
61
63
62
proc importNodeImpl(def: NimNode, module, symExpr: string ): NimNode =
64
63
importByNodeOrDenoImpl(def,
65
- " require(' " & module & " '). " & symExpr,
64
+ requireExpr( module) & '.' & symExpr,
66
65
" (await import('" & module & " '))." & symExpr
67
66
)
67
+
68
+ proc importDenoOrProcessAux(denoAttr, nodeAttr, def: NimNode): NimNode =
69
+ importDenoOrImpl(def, " process" , denoAttr, nodeAttr)
70
+
71
+ macro importDenoOrProcess* (denoAttr, nodeAttr; def) =
72
+ importDenoOrProcessAux(denoAttr, nodeAttr, def)
73
+ macro importDenoOrProcess* (attr; def) =
74
+ importDenoOrProcessAux(attr, attr, def)
75
+
68
76
macro importNode* (module, symExpr; def) =
69
77
let ssym = case symExpr.kind
70
78
of nnkStrLit, nnkRStrLit, nnkTripleStrLit, nnkIdent: symExpr.strVal # also allows dotExpr
0 commit comments