@@ -366,7 +366,7 @@ class DomkitViewer extends h2d.Object {
366
366
function loadComponents ( res : hxd.res. Resource ) {
367
367
var fullText = res .entry .getText ();
368
368
var data = DomkitFile .parse (fullText );
369
- var inf = { comps : [], params : null };
369
+ var inf = { comps : [], params : ( null : Dynamic ) };
370
370
handleErrors (res , function () {
371
371
var parser = new domkit. MarkupParser ();
372
372
parser .allowRawText = true ;
@@ -384,13 +384,44 @@ class DomkitViewer extends h2d.Object {
384
384
}
385
385
}
386
386
}
387
- var vparams : Dynamic = evalCode (interp ,eparams );
388
- if ( vparams != null ) {
389
- for ( f in Reflect .fields (vparams ) ) {
390
- var forceNull = res == resource && definedClasses .indexOf (f ) >= 0 ;
391
- interp .variables .set (f , forceNull ? null : Reflect .field (vparams ,f ));
387
+ var mainComp = null ;
388
+ for ( i in 0 ... expr .children .length ) {
389
+ var m = expr .children [expr .children .length - i - 1 ];
390
+ switch ( m .kind ) {
391
+ case Node (name ):
392
+ var parts = name .split (" :" );
393
+ var name = parts [0 ];
394
+ mainComp = domkit. Component .get (name , true );
395
+ break ;
396
+ default :
392
397
}
393
398
}
399
+
400
+ var prev = interp .variables .copy ();
401
+ var mainInst : Dynamic = null ;
402
+ if ( mainComp != null ) {
403
+ var cl = @:privateAccess mainComp .classValue ;
404
+ if ( cl != null ) {
405
+ mainInst = Type .createEmptyInstance (cl );
406
+ interp .setContext (mainInst );
407
+ }
408
+ }
409
+ var vparams = switch ( eparams .e ) {
410
+ case EObject (fl ):
411
+ [for ( f in fl ) {
412
+ var val : Dynamic = evalCode (interp ,f .e );
413
+ var forceNull = res == resource && definedClasses .indexOf (f .name ) >= 0 ;
414
+ if ( forceNull ) val = null ;
415
+ interp .variables .set (f .name , val );
416
+ if ( mainInst != null ) try Reflect .setProperty (mainInst ,f .name , val ) catch ( e : Dynamic ) {};
417
+ { name : f .name , value : val };
418
+ }];
419
+ default : throw " assert" ;
420
+ }
421
+ interp .variables = prev ;
422
+ for ( f in vparams )
423
+ interp .variables .set (f .name , f .value );
424
+
394
425
for ( m in expr .children ) {
395
426
switch ( m .kind ) {
396
427
case Node (name ):
@@ -411,8 +442,8 @@ class DomkitViewer extends h2d.Object {
411
442
if ( compClass != null ) {
412
443
inst = Type .createEmptyInstance (compClass );
413
444
interp .setContext (inst );
414
- for ( f in Reflect . fields ( vparams ) )
415
- try Reflect .setProperty (inst , f , Reflect . field ( vparams , f ) ) catch ( e : Dynamic ) {}
445
+ for ( f in vparams )
446
+ try Reflect .setProperty (inst , f . name , f . value ) catch ( e : Dynamic ) {}
416
447
}
417
448
}
418
449
var args = [];
@@ -438,7 +469,9 @@ class DomkitViewer extends h2d.Object {
438
469
default :
439
470
}
440
471
}
441
- inf .params = vparams ;
472
+ inf .params = {};
473
+ for ( v in vparams )
474
+ Reflect .setField (inf .params , v .name , v .value );
442
475
});
443
476
return inf ;
444
477
}
0 commit comments