@@ -23,6 +23,26 @@ const nanoid = require('nanoid');
2323const format = require ( './format' ) ;
2424const safe = require ( './safe' ) ;
2525
26+ function every ( input , value ) {
27+ if ( ! input || ! input . every ) {
28+ return false ;
29+ }
30+ if ( ! value || ! value . includes ) {
31+ return false ;
32+ }
33+ return input . every ( one => value . includes ( one ) ) ;
34+ }
35+
36+ function some ( input , value ) {
37+ if ( ! input || ! input . some ) {
38+ return false ;
39+ }
40+ if ( ! value || ! value . includes ) {
41+ return false ;
42+ }
43+ return input . some ( one => value . includes ( one ) ) ;
44+ }
45+
2646Object . assign ( expressions . filters , {
2747 date : format . date ,
2848 time : format . time ,
@@ -31,7 +51,9 @@ Object.assign(expressions.filters, {
3151 timeSpan : format . timeSpan ,
3252 number : format . number ,
3353 currency : format . currency ,
34- percent : format . percent
54+ percent : format . percent ,
55+ every,
56+ some
3557} ) ;
3658
3759function normalizePath ( path ) {
@@ -67,7 +89,9 @@ module.exports = function parseTemplate(text = '', context = {}, opts = {}) {
6789 for ( let tpl of parsed ) {
6890 let [ type , value ] = tpl ;
6991 if ( type === 'name' ) {
70- value = normalizePath ( value ) ;
92+ if ( opts . normalizePaths ) {
93+ value = normalizePath ( value ) ;
94+ }
7195 try {
7296 const evaluate = expressions . compile ( value ) ;
7397 value = evaluate ( context ) ;
0 commit comments