1
- import generator_helpers
1
+ import compiler/internal/generator as internal
2
+ import compiler/python
2
3
import gleam/int
3
4
import gleam/list
4
5
import gleam/option
5
6
import gleam/string_builder . { type StringBuilder }
6
- import pprint
7
- import python
8
7
import python_prelude
9
8
10
9
fn generate_import ( import_ : python . Import ) -> StringBuilder {
@@ -100,7 +99,7 @@ fn generate_expression(expression: python.Expression) {
100
99
101
100
python . List ( elements ) ->
102
101
string_builder . from_string ( "to_gleam_list([" )
103
- |> string_builder . append_builder ( generator_helpers . generate_plural (
102
+ |> string_builder . append_builder ( internal . generate_plural (
104
103
elements ,
105
104
generate_expression ,
106
105
", " ,
@@ -109,7 +108,7 @@ fn generate_expression(expression: python.Expression) {
109
108
110
109
python . ListWithRest ( elements , rest ) ->
111
110
string_builder . from_string ( "to_gleam_list([" )
112
- |> string_builder . append_builder ( generator_helpers . generate_plural (
111
+ |> string_builder . append_builder ( internal . generate_plural (
113
112
elements ,
114
113
generate_expression ,
115
114
", " ,
@@ -123,7 +122,7 @@ fn generate_expression(expression: python.Expression) {
123
122
|> string_builder . append ( "(" )
124
123
|> string_builder . append_builder (
125
124
expressions
126
- |> generator_helpers . generate_plural ( generate_expression , ", " ) ,
125
+ |> internal . generate_plural ( generate_expression , ", " ) ,
127
126
)
128
127
|> string_builder . append ( ")" )
129
128
@@ -143,7 +142,7 @@ fn generate_expression(expression: python.Expression) {
143
142
|> string_builder . append ( "dataclasses.replace(" )
144
143
|> string_builder . append_builder ( generate_expression ( record ) )
145
144
|> string_builder . append ( ", " )
146
- |> string_builder . append_builder ( generator_helpers . generate_plural (
145
+ |> string_builder . append_builder ( internal . generate_plural (
147
146
fields ,
148
147
generate_record_update_fields ,
149
148
", " ,
@@ -152,7 +151,7 @@ fn generate_expression(expression: python.Expression) {
152
151
153
152
python . Lambda ( arguments , body ) -> {
154
153
string_builder . from_string ( "(lambda " )
155
- |> string_builder . append_builder ( generator_helpers . generate_plural (
154
+ |> string_builder . append_builder ( internal . generate_plural (
156
155
arguments ,
157
156
generate_expression ,
158
157
", " ,
@@ -182,7 +181,7 @@ fn generate_statement(statement: python.Statement) -> StringBuilder {
182
181
case statement {
183
182
python . Expression ( expression ) ->
184
183
generate_expression ( expression )
185
- |> generator_helpers . append_if_not_empty ( "\n " )
184
+ |> internal . append_if_not_empty ( "\n " )
186
185
python . Return ( expression ) ->
187
186
string_builder . from_string ( "return " )
188
187
|> string_builder . append_builder ( generate_expression ( expression ) )
@@ -205,11 +204,7 @@ fn generate_function_body(statements: List(python.Statement)) -> StringBuilder {
205
204
case statements {
206
205
[ ] -> string_builder . from_string ( "pass" )
207
206
multiple_lines ->
208
- generator_helpers . generate_plural (
209
- multiple_lines ,
210
- generate_statement ,
211
- "\n " ,
212
- )
207
+ internal . generate_plural ( multiple_lines , generate_statement , "\n " )
213
208
}
214
209
}
215
210
@@ -219,14 +214,14 @@ fn generate_function(function: python.Function) -> StringBuilder {
219
214
|> string_builder . append ( "def " )
220
215
|> string_builder . append ( function . name )
221
216
|> string_builder . append ( "(" )
222
- |> string_builder . append_builder ( generator_helpers . generate_plural (
217
+ |> string_builder . append_builder ( internal . generate_plural (
223
218
function . parameters ,
224
219
generate_parameter ,
225
220
", " ,
226
221
) )
227
222
|> string_builder . append ( "):\n " )
228
223
|> string_builder . append_builder (
229
- generate_function_body ( function . body ) |> generator_helpers . indent ( 4 ) ,
224
+ generate_function_body ( function . body ) |> internal . indent ( 4 ) ,
230
225
)
231
226
}
232
227
@@ -246,7 +241,7 @@ fn generate_type(type_: python.Type) -> StringBuilder {
246
241
[ ] -> string_builder . new ( )
247
242
params_exist ->
248
243
params_exist
249
- |> generator_helpers . generate_plural ( generate_type , "," )
244
+ |> internal . generate_plural ( generate_type , "," )
250
245
|> string_builder . prepend ( "[" )
251
246
|> string_builder . append ( "]" )
252
247
}
@@ -259,7 +254,7 @@ fn generate_type(type_: python.Type) -> StringBuilder {
259
254
260
255
python . TupleType ( elements ) ->
261
256
elements
262
- |> generator_helpers . generate_plural ( generate_type , ", " )
257
+ |> internal . generate_plural ( generate_type , ", " )
263
258
|> string_builder . prepend ( "typing.Tuple[" )
264
259
|> string_builder . append ( "]" )
265
260
@@ -299,10 +294,9 @@ fn generate_type_variant(variant: python.Variant) -> StringBuilder {
299
294
|> string_builder . append_builder (
300
295
case variant . fields {
301
296
[ ] -> string_builder . from_string ( "pass" )
302
- fields ->
303
- generator_helpers . generate_plural ( fields , generate_type_field , "\n " )
297
+ fields -> internal . generate_plural ( fields , generate_type_field , "\n " )
304
298
}
305
- |> generator_helpers . indent ( 4 ) ,
299
+ |> internal . indent ( 4 ) ,
306
300
)
307
301
}
308
302
@@ -326,7 +320,7 @@ fn generate_custom_type(custom_type: python.CustomType) -> StringBuilder {
326
320
327
321
// we just discard the outer class if there is only one variant
328
322
[ one_variant ] -> {
329
- generator_helpers . generate_plural (
323
+ internal . generate_plural (
330
324
custom_type . parameters ,
331
325
generate_generic_var ,
332
326
"\n " ,
@@ -336,7 +330,7 @@ fn generate_custom_type(custom_type: python.CustomType) -> StringBuilder {
336
330
}
337
331
338
332
variants -> {
339
- generator_helpers . generate_plural (
333
+ internal . generate_plural (
340
334
custom_type . parameters ,
341
335
generate_generic_var ,
342
336
"\n " ,
@@ -345,15 +339,11 @@ fn generate_custom_type(custom_type: python.CustomType) -> StringBuilder {
345
339
|> string_builder . append ( custom_type . name )
346
340
|> string_builder . append ( ":\n " )
347
341
|> string_builder . append_builder (
348
- generator_helpers . generate_plural (
349
- variants ,
350
- generate_type_variant ,
351
- "\n \n " ,
352
- )
353
- |> generator_helpers . indent ( 4 )
354
- |> generator_helpers . append_if_not_empty ( "\n \n " ) ,
342
+ internal . generate_plural ( variants , generate_type_variant , "\n \n " )
343
+ |> internal . indent ( 4 )
344
+ |> internal . append_if_not_empty ( "\n \n " ) ,
355
345
)
356
- |> string_builder . append_builder ( generator_helpers . generate_plural (
346
+ |> string_builder . append_builder ( internal . generate_plural (
357
347
custom_type . variants ,
358
348
generate_variant_reassign ( custom_type . name ) ,
359
349
"\n " ,
@@ -364,20 +354,20 @@ fn generate_custom_type(custom_type: python.CustomType) -> StringBuilder {
364
354
}
365
355
366
356
fn generate_imports ( imports : List ( python . Import ) ) -> StringBuilder {
367
- generator_helpers . generate_plural ( imports , generate_import , "\n " )
368
- |> generator_helpers . append_if_not_empty ( "\n \n \n " )
357
+ internal . generate_plural ( imports , generate_import , "\n " )
358
+ |> internal . append_if_not_empty ( "\n \n \n " )
369
359
}
370
360
371
361
pub fn generate ( module : python . Module ) -> Result ( String , String ) {
372
362
string_builder . new ( )
373
363
|> string_builder . append ( python_prelude . prelude )
374
364
|> string_builder . append_builder ( generate_imports ( module . imports ) )
375
- |> string_builder . append_builder ( generator_helpers . generate_plural (
365
+ |> string_builder . append_builder ( internal . generate_plural (
376
366
module . custom_types ,
377
367
generate_custom_type ,
378
368
"\n \n \n " ,
379
369
) )
380
- |> string_builder . append_builder ( generator_helpers . generate_plural (
370
+ |> string_builder . append_builder ( internal . generate_plural (
381
371
module . functions ,
382
372
generate_function ,
383
373
"\n \n \n " ,
0 commit comments