UNPKG

json-q

Version:

Retrieves values from JSON objects (and JavaScript objects) by css-selector-like query (includes attribute filters and array flattening).

52 lines (49 loc) 1.58 kB
const { true_if_one_is_true } = require('./helper'); const _eq = true_if_one_is_true; // //remember that // 1. complexFieldValue is always array // 2. value is always string // 3. operator should return boolean // const operator = { //for filter [atrt=value] "=" : function(complexFieldValue, value){ return _eq(complexFieldValue, value, (a,b)=>{return a==b;}); }, //for filter [atrt*=value] "*=": function(complexFieldValue, value){ return _eq(complexFieldValue, value, (a,b)=>{return (typeof a === 'string' && a.indexOf(b) != -1)}); }, //for filter [atrt^=value] "^=": function(complexFieldValue, value){ return _eq(complexFieldValue, value, (a,b)=>{return (typeof a === 'string' && a.startsWith(b))}); }, //for filter [atrt$=value] "$=": function(complexFieldValue, value){ return _eq(complexFieldValue, value, (a,b)=>{return (typeof a === 'string' && a.endsWith(b))}); }, //for filter [attr~=value] "~=": function(complexFieldValue, value){ return _eq(complexFieldValue, value, (a,b)=>{ if (typeof a === 'string') { let a_splited = a.split(' '); return a_splited.indexOf(b) != -1; } }); }, //for filter [attr|=value] "|=": function(complexFieldValue, value){ return _eq(complexFieldValue, value, (a,b)=>{ if (typeof a === 'string') { let a_splited = a.split('-'); return (a_splited[0] == value); } }); }, //for filter [attr] undefined: function(complexFieldValue, value){ return complexFieldValue.length > 0; } } module.exports = { operator };