@@ -89,6 +89,32 @@ class ExtendedAttributeParameters extends Base {
8989 }
9090 return null ;
9191 }
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+ }
92118}
93119
94120export class SimpleExtendedAttribute extends Base {
@@ -164,6 +190,20 @@ information.`;
164190 yield * arg . validate ( defs ) ;
165191 }
166192 }
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+ }
167207}
168208
169209/**
@@ -215,4 +255,14 @@ export class ExtendedAttributes extends ArrayBase {
215255 yield * extAttr . validate ( defs ) ;
216256 }
217257 }
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+ }
218268}
0 commit comments