Skip to content

Commit 5f3cfb4

Browse files
committed
initial
1 parent 1170e93 commit 5f3cfb4

4 files changed

+31
-0
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
# awsome_nim_macros
2+
3+
Bunch of macros. Trying to see what the language is capible of.

declare_and_return.nim

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
template `:>`(ident_defs_name:untyped,ident_defs_type:typed):untyped {.dirty.} =
3+
var ident_defs_name {.inject.}: ident_defs_type
4+
ident_defs_name
5+
template `:=`(ident_defs_name:untyped,ident_defs_type:typed):untyped {.dirty.} =
6+
var ident_defs_name {.inject.} = ident_defs_type
7+
ident_defs_name
8+
9+
template `^`(xpr:typed,middle:untyped):untyped=
10+
{.push.}
11+
{.this: self.}
12+
proc exe[T](self: T):T=
13+
# bind self
14+
middle
15+
self
16+
{.pop.}
17+
exe(xpr)
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
template `_`():untyped=
3+
locals()[0]
4+

ternary_question_sign.nim

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
template `?`(condition: typed, on_valid: untyped, otherwise:untyped) {.dirty.} =
3+
if condition:
4+
on_valid
5+
else:
6+
otherwise
7+
template `?`(condition: typed, on_valid: untyped) {.dirty.} =
8+
condition?on_valid:discard

0 commit comments

Comments
 (0)