@@ -89,6 +89,32 @@ class ExtendedAttributeParameters extends Base {
89
89
}
90
90
return null ;
91
91
}
92
+
93
+ /** @param {import("../writer.js").Writer) } w */
94
+ write ( w ) {
95
+ function extended_attribute_listitem ( item ) {
96
+ return w . ts . wrap ( [
97
+ w . token ( item . tokens . value ) ,
98
+ w . token ( item . tokens . separator ) ,
99
+ ] ) ;
100
+ }
101
+ const { rhsType } = this ;
102
+ return w . ts . wrap ( [
103
+ w . token ( this . tokens . assign ) ,
104
+ w . reference_token ( this . tokens . secondaryName , this . parent ) ,
105
+ w . token ( this . tokens . open ) ,
106
+ ...( ! this . list
107
+ ? [ ]
108
+ : this . list . map ( ( p ) => {
109
+ return rhsType === "identifier-list"
110
+ ? w . identifier ( p , this )
111
+ : rhsType && rhsType . endsWith ( "-list" )
112
+ ? extended_attribute_listitem ( p )
113
+ : p . write ( w ) ;
114
+ } ) ) ,
115
+ w . token ( this . tokens . close ) ,
116
+ ] ) ;
117
+ }
92
118
}
93
119
94
120
export class SimpleExtendedAttribute extends Base {
@@ -164,6 +190,20 @@ information.`;
164
190
yield * arg . validate ( defs ) ;
165
191
}
166
192
}
193
+
194
+ /** @param {import("../writer.js").Writer) } w */
195
+ write ( w ) {
196
+ return w . ts . wrap ( [
197
+ w . ts . trivia ( this . tokens . name . trivia ) ,
198
+ w . ts . extendedAttribute (
199
+ w . ts . wrap ( [
200
+ w . ts . extendedAttributeReference ( this . name ) ,
201
+ this . params . write ( w ) ,
202
+ ] )
203
+ ) ,
204
+ w . token ( this . tokens . separator ) ,
205
+ ] ) ;
206
+ }
167
207
}
168
208
169
209
/**
@@ -215,4 +255,14 @@ export class ExtendedAttributes extends ArrayBase {
215
255
yield * extAttr . validate ( defs ) ;
216
256
}
217
257
}
258
+
259
+ /** @param {import("../writer.js").Writer) } w */
260
+ write ( w ) {
261
+ if ( ! this . length ) return "" ;
262
+ return w . ts . wrap ( [
263
+ w . token ( this . tokens . open ) ,
264
+ ...this . map ( ( ea ) => ea . write ( w ) ) ,
265
+ w . token ( this . tokens . close ) ,
266
+ ] ) ;
267
+ }
218
268
}
0 commit comments