@@ -119,6 +119,7 @@ export default class Logics {
119119 } ,
120120 upper : ( str ) => str . toString ( ) . toUpperCase ( ) ,
121121 values : ( val ) => Object . values ( val . toDict ( ) . valueOf ( ) ) ,
122+ // vars: (name) => ... is a special case handled inline!
122123 } ;
123124 }
124125
@@ -183,6 +184,11 @@ export default class Logics {
183184 return false ;
184185 }
185186
187+ // Use this function to access values
188+ function _values ( name ) {
189+ return name === undefined ? values : values [ name . toString ( ) ]
190+ }
191+
186192 // Flow operations
187193 if (
188194 ! action ( node . emit , {
@@ -207,6 +213,9 @@ export default class Logics {
207213 }
208214
209215 let fn = this . functions [ fname ] ;
216+ if ( fn === undefined && fname == "vars" ) {
217+ fn = _values ;
218+ }
210219
211220 if ( fn !== undefined ) {
212221 // Convert all args to Logics values
@@ -347,11 +356,10 @@ export default class Logics {
347356 pos : ( ) => stack . op1 ( ( a ) => a . __pos__ ( ) ) ,
348357 pow : ( ) => stack . op2 ( ( a , b ) => a . __pow__ ( b ) ) ,
349358 index : ( ) => stack . op2 ( ( value , idx ) => value . __getitem__ ( idx ) ) ,
350- load : ( ) => stack . op1 ( ( name ) => values [ name . toString ( ) ] ) ,
359+ load : ( ) => stack . op1 ( ( name ) => name == "vars" ? _values ( ) : _values ( name ) ) ,
351360 slice : ( ) => stack . op3 ( ( value , from , to ) => value . __getitem__ ( from , to ) ) ,
352361 strings : ( ) => stack . op0 ( stack . splice ( - node . children . length ) . join ( "" ) ) ,
353362 sub : ( ) => stack . op2 ( ( a , b ) => a . __sub__ ( b ) ) ,
354- vars : ( ) => stack . op0 ( values ) ,
355363 } ) ;
356364 }
357365}
0 commit comments