@@ -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