@@ -6,12 +6,16 @@ import {
6
6
Function_ ,
7
7
} from "../mod.ts"
8
8
import * as cg from "./codegen.ts"
9
- import {
9
+ import type {
10
10
Expression ,
11
11
} from "./codegen.ts"
12
12
13
13
import JSON5 from "https://esm.sh/[email protected] "
14
14
15
+ const stringExpr =
16
+ ( str : string ) =>
17
+ `"` + str . replaceAll ( `"` , `\\"` ) + `"` as Expression
18
+
15
19
export class Visitor {
16
20
visitProject ( project : Project ) {
17
21
return [
@@ -76,7 +80,7 @@ export class Visitor {
76
80
[
77
81
...this . paramsToExpressions ( event . params ) ,
78
82
this . blockGroupToArrow ( rest ) ,
79
- ` "$obj$"` as Expression ,
83
+ stringExpr ( "$obj$" ) ,
80
84
]
81
85
)
82
86
}
@@ -140,16 +144,17 @@ export class Visitor {
140
144
return block . toString ( ) as Expression
141
145
142
146
if ( typeof block == "string" )
143
- return `" ${ block } "` as Expression
147
+ return stringExpr ( block )
144
148
145
149
if ( ! block )
146
150
return "" as Expression
147
151
148
152
if ( block . type == "number" )
149
153
return block . params [ 0 ] ! . toString ( ) as Expression
150
154
151
- if ( block . type == "text" )
152
- return `"${ block . params [ 0 ] } "` as Expression
155
+ if ( block . type == "text" ) {
156
+ return stringExpr ( String ( block . params [ 0 ] as string | number ) )
157
+ }
153
158
154
159
if (
155
160
block . type . startsWith ( "stringParam_" )
@@ -176,7 +181,7 @@ export class Visitor {
176
181
...this . paramsToExpressions ( block . params ) ,
177
182
...block . statements
178
183
. map ( blockGroup => this . blockGroupToArrow . bind ( this ) ( blockGroup ) ) ,
179
- ` "$obj$"` as Expression ,
184
+ stringExpr ( "$obj$" ) ,
180
185
]
181
186
)
182
187
}
0 commit comments