File tree 1 file changed +17
-23
lines changed
1 file changed +17
-23
lines changed Original file line number Diff line number Diff line change 30
30
}
31
31
32
32
function get_value ( vars , key ) {
33
- var parts = key . split ( '.' ) ;
34
- while ( parts . length ) {
35
- if ( ! ( parts [ 0 ] in vars ) ) {
36
- return false ;
37
- }
38
- vars = vars [ parts . shift ( ) ] ;
39
- }
40
- return vars ;
33
+ return key
34
+ . split ( '.' )
35
+ . reduce (
36
+ ( out , part ) => ( out instanceof Map ? out . get ( part ) : out [ part ] ) ?? false ,
37
+ vars
38
+ ) ;
41
39
}
42
40
43
41
function render ( fragment , vars ) {
67
65
68
66
// process array/obj iteration
69
67
if ( meta == '@' ) {
70
- // store any previous vars
71
- // reuse existing vars
72
- _ = vars . _key ;
73
- __ = vars . _val ;
74
- for ( i in val ) {
75
- if ( val . hasOwnProperty ( i ) ) {
76
- vars . _key = i ;
77
- vars . _val = val [ i ] ;
78
- temp += render ( inner , vars ) ;
79
- }
80
- }
81
- vars . _key = _ ;
82
- vars . _val = __ ;
83
- return temp ;
68
+ return Array . from (
69
+ ! ! val ?. [ Symbol . iterator ] ? val . entries ( ) : Object . entries ( val ) ,
70
+ ( [ _key , _val ] ) => render (
71
+ inner ,
72
+ {
73
+ ...vars ,
74
+ _key,
75
+ _val,
76
+ }
77
+ )
78
+ ) . join ( '' ) ;
84
79
}
85
-
86
80
} )
87
81
. replace ( valregex , function ( _ , meta , key ) {
88
82
var val = get_value ( vars , key ) ;
You can’t perform that action at this time.
0 commit comments