UNPKG

@equantic/linq

Version:
31 lines (30 loc) 991 B
import { splitArguments } from '../funcs/index.js'; export const funcRegex = /(\b[^()]+)\((.*)\)$/; export function parseExpression(exp) { const arr = exp.split(':'); const [prop, ...rest] = arr; const propertyName = prop.trim(); let operator = 'eq'; let value = ''; if (rest.length > 0) { const v = rest.join(':'); const match = v.match(funcRegex); if (match) { operator = match[1]; value = match[2]; } else value = v; } return { column: propertyName, value, operator }; } export function parseComposite(exp, result) { const compositeMatch = exp.match(funcRegex); if (compositeMatch == null || compositeMatch.length <= 1 || compositeMatch[1].indexOf(':') >= 0) return null; const operator = compositeMatch[1]; if (!operator) return null; const args = splitArguments(compositeMatch[2]); return { values: args, compositeOperator: operator }; }