diff --git a/src/current/compiler/js.xsl b/src/current/compiler/js.xsl index bd4991df..aa4f5b02 100644 --- a/src/current/compiler/js.xsl +++ b/src/current/compiler/js.xsl @@ -705,8 +705,20 @@ ',', compiler:match-value( $symtable-map, $m1 ), ',', compiler:match-value( $symtable-map, $v1 ), ');' )" /> + - + + + @@ -1499,6 +1511,32 @@ return [result, any]; } + function vu(vs, cmps) + { + const longest = Math.max.apply(null, vs.map(v => v.length)); + const base = new Array(longest).fill(1); + + const result = vs.reduce( + (final, v, vi) => final.map((x, i) => +(x && ((v[i]||0) === cmps[vi]))), + base + ); + + return [result, result.some(s => s === 1)]; + } + + function ve(vs, cmps) + { + const longest = Math.max.apply(null, vs.map(v => v.length)); + const base = new Array(longest).fill(0); + + const result = vs.reduce( + (final, v, vi) => final.map((x, i) => +(x || ((v[i]||0) === cmps[vi]))), + base + ); + + return [result, result.some(s => s === 1)]; + } + /** * Checks for matches against values for any param value