@@ -80,7 +80,7 @@ exports.publish = function publish(taffy, opts) {
80
80
while ( queuedInterfaces . length ) {
81
81
var element = queuedInterfaces . shift ( ) ;
82
82
begin ( element ) ;
83
- writeVirtualInterface ( element ) ;
83
+ writeInterface ( element ) ;
84
84
writeln ( ";" ) ;
85
85
}
86
86
@@ -120,7 +120,11 @@ function write() {
120
120
121
121
// writes one or multiple strings, followed by a new line
122
122
function writeln ( ) {
123
- write ( Array . prototype . slice . call ( arguments ) . join ( "" ) , "\n" ) ;
123
+ var s = Array . prototype . slice . call ( arguments ) . join ( "" ) ;
124
+ if ( s )
125
+ write ( s , "\n" ) ;
126
+ else
127
+ out . write ( "\n" ) ;
124
128
indentWritten = false ;
125
129
}
126
130
@@ -268,11 +272,22 @@ function writeFunctionSignature(element, isConstructor, isTypeDef) {
268
272
}
269
273
}
270
274
275
+ // writes (a typedef as) an interface
276
+ function writeInterface ( element ) {
277
+ writeln ( "interface " , element . name , " {" ) ;
278
+ ++ indent ;
279
+ element . properties . forEach ( function ( property ) {
280
+ writeln ( property . name , ": " , getTypeOf ( property ) , ";" ) ;
281
+ } ) ;
282
+ -- indent ;
283
+ writeln ( "}" ) ;
284
+ }
285
+
271
286
//
272
287
// Handlers
273
288
//
274
289
275
- // handles a single element / any
290
+ // handles a single element of any understood type
276
291
function handleElement ( element , parent ) {
277
292
if ( seen [ element . longname ] )
278
293
return ;
@@ -305,6 +320,12 @@ function handleNamespace(element, parent) {
305
320
writeln ( "}" ) ;
306
321
}
307
322
323
+ // a filter function to remove any module references
324
+ function notAModuleReference ( ref ) {
325
+ return ref . indexOf ( "module:" ) === - 1 ;
326
+ }
327
+
328
+
308
329
// handles a class or class-like
309
330
function handleClass ( element , parent ) {
310
331
begin ( element ) ;
@@ -319,9 +340,7 @@ function handleClass(element, parent) {
319
340
320
341
// extended classes
321
342
if ( element . augments ) {
322
- var augments = element . augments . filter ( function ( aug ) {
323
- return aug . indexOf ( "module:" ) === - 1 ;
324
- } ) ;
343
+ var augments = element . augments . filter ( notAModuleReference ) ;
325
344
if ( augments . length )
326
345
write ( "extends " , augments [ 0 ] , " " ) ;
327
346
}
@@ -332,9 +351,7 @@ function handleClass(element, parent) {
332
351
Array . prototype . push . apply ( impls , element . implements ) ;
333
352
if ( element . mixes )
334
353
Array . prototype . push . apply ( impls , element . mixes ) ;
335
- impls = impls . filter ( function ( imp ) {
336
- return imp . indexOf ( "module:" ) === - 1 ;
337
- } ) ;
354
+ impls = impls . filter ( notAModuleReference ) ;
338
355
if ( impls . length )
339
356
write ( "implements " , impls . join ( ", " ) , " " ) ;
340
357
@@ -359,7 +376,7 @@ function handleClass(element, parent) {
359
376
360
377
if ( innerClasses . length ) {
361
378
writeln ( "" ) ;
362
- writeln ( "module " , element . name , "{" ) ;
379
+ writeln ( "module " , element . name , " {" ) ;
363
380
++ indent ;
364
381
innerClasses . forEach ( function ( inner ) {
365
382
handleClass ( inner , element ) ;
@@ -424,24 +441,14 @@ function handleFunction(element, parent, isConstructor) {
424
441
writeln ( ";" ) ;
425
442
}
426
443
427
- function writeVirtualInterface ( element ) {
428
- writeln ( "interface " , element . name , " {" ) ;
429
- ++ indent ;
430
- element . properties . forEach ( function ( property ) {
431
- writeln ( property . name , ": " , getTypeOf ( property ) , ";" ) ;
432
- } ) ;
433
- -- indent ;
434
- writeln ( "}" ) ;
435
- }
436
-
437
444
// handles a type definition (not a real type)
438
445
function handleTypeDef ( element , parent ) {
439
446
if ( isInterface ( element ) ) {
440
447
if ( isClass ( parent ) )
441
448
queuedInterfaces . push ( element ) ;
442
449
else {
443
450
begin ( element ) ;
444
- writeVirtualInterface ( element ) ;
451
+ writeInterface ( element ) ;
445
452
}
446
453
} else {
447
454
begin ( element ) ;
0 commit comments