@@ -181,6 +181,13 @@ proc newProcDef(name: string): NimNode {.compileTime.} =
181
181
newStmtList ()
182
182
)
183
183
184
+ proc addData * (p: var MultipartData , name: string , content: auto ) {.inline .} =
185
+ when content is InputFile :
186
+ p.addFiles ({name: content})
187
+ else :
188
+ p.add (name, $ content)
189
+
190
+
184
191
macro magic * (head, body: untyped ): untyped =
185
192
result = newStmtList ()
186
193
@@ -198,7 +205,7 @@ macro magic*(head, body: untyped): untyped =
198
205
objectTy.add (newEmptyNode (), newEmptyNode ())
199
206
200
207
var
201
- objRealName = $ objNameNode & " Config "
208
+ objName = $ objNameNode & " Object "
202
209
objParamList = newNimNode (nnkRecList)
203
210
objInitProc = newProcDef (" new" & $ objNameNode)
204
211
objSendProc = newProcDef (" send" )
@@ -210,12 +217,12 @@ macro magic*(head, body: untyped): untyped =
210
217
objSendProc[4 ] = newNimNode (nnkPragma).add (ident (" async" ), ident (" discardable" ))
211
218
212
219
objectTy.add (objParamList)
213
- objInitProcParams.add (ident (objRealName ))
220
+ objInitProcParams.add (ident (objName ))
214
221
215
222
objSendProcParams.add (newNimNode (nnkBracketExpr).add (
216
223
ident (" Future" ), ident (" Message" )) # return value
217
224
).add (newIdentDefs (ident (" b" ), ident (" TeleBot" ))
218
- ).add (newIdentDefs (ident (" m" ), ident (objRealName )))
225
+ ).add (newIdentDefs (ident (" m" ), ident (objName )))
219
226
220
227
objSendProcBody.add (newConstStmt (
221
228
ident (" endpoint" ),
@@ -227,6 +234,7 @@ macro magic*(head, body: untyped): untyped =
227
234
228
235
for node in body.items:
229
236
let fieldName = $ node[0 ]
237
+
230
238
case node[1 ][0 ].kind
231
239
of nnkIdent:
232
240
var identDefs = newIdentDefs (
@@ -240,12 +248,12 @@ macro magic*(head, body: untyped): untyped =
240
248
node[0 ]
241
249
))
242
250
243
- objSendProcBody.add (newAssignment (
244
- newNimNode (nnkBracketExpr).add (
251
+ objSendProcBody.add (
252
+ newCall (
253
+ ident (" addData" ),
245
254
ident (" data" ),
246
- newStrLitNode (formatName (fieldName))
247
- ),
248
- prefix (newDotExpr (ident (" m" ), node[0 ]), " $" )
255
+ newStrLitNode (formatName (fieldName)),
256
+ newDotExpr (ident (" m" ), node[0 ])
249
257
))
250
258
251
259
of nnkPragmaExpr:
@@ -264,10 +272,10 @@ macro magic*(head, body: untyped): untyped =
264
272
),
265
273
newStmtList (
266
274
newCall (
267
- ident (" add " ),
275
+ ident (" addData " ),
268
276
ident (" data" ),
269
277
newStrLitNode (formatName (fieldName)),
270
- prefix ( newDotExpr (ident (" m" ), node[0 ]), " $ " )
278
+ newDotExpr (ident (" m" ), node[0 ])
271
279
)
272
280
)
273
281
)
@@ -287,6 +295,6 @@ except:
287
295
objSendProcBody.add (epilogue[0 ])
288
296
289
297
result .add (newNimNode (nnkTypeSection).add (
290
- newNimNode (nnkTypeDef).add (postfix (ident (objRealName ), " *" ), newEmptyNode (), objectTy)
298
+ newNimNode (nnkTypeDef).add (postfix (ident (objName ), " *" ), newEmptyNode (), objectTy)
291
299
))
292
300
result .add (objInitProc, objSendProc)
0 commit comments