How to use vega-expression - 10 common examples

To help you get started, we’ve selected a few vega-expression examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github apache-superset / superset-ui / packages / superset-ui-encodable / src / parsers / parseDateTime.ts View on Github external
export default function parseDateTime(dateTime: string | number | DateTime) {
  if (typeof dateTime === 'number' || typeof dateTime === 'string') {
    return new Date(dateTime);
  }

  const expression = dateTimeExpr(dateTime, true) as string;
  const code = codegen({ globalvar: 'window' })(parse(expression)).code as string;
  // Technically the "code" here is safe to eval(),
  // but we will use more conservative approach and manually parse at the moment.
  const isUtc = code.startsWith('Date.UTC');

  const dateParts = code
    .replace(/^(Date[.]UTC|new[ ]Date)\(/, '')
    .replace(/\)$/, '')
    .split(',')
    .map((chunk: string) => Number(chunk.trim())) as [
    number, // year
    number, // month
    number, // date
    number, // hours
    number, // minutes
    number, // seconds
    number, // milliseconds
github vega / vega / packages / vega-parser / src / parsers / expression.js View on Github external
export default function(expr, scope, preamble) {
  var params = {}, ast, gen;

  // parse the expression to an abstract syntax tree (ast)
  try {
    expr = isString(expr) ? expr : (stringValue(expr) + '');
    ast = parse(expr);
  } catch (err) {
    error('Expression parse error: ' + expr);
  }

  // analyze ast function calls for dependencies
  ast.visit(function visitor(node) {
    if (node.type !== CallExpression) return;
    var name = node.callee.name,
        visit = codegenParams.visitors[name];
    if (visit) visit(name, node.arguments, scope, params);
  });

  // perform code generation
  gen = codeGenerator(ast);

  // collect signal dependencies
github vega / voyager / src / models / shelf / filter.ts View on Github external
export function toPredicateFunction(filters: ShelfFilter[]) {
  const expr = '(' +
    filters.map(f => {
      return fieldFilterExpression(f, false); // Do not use inrange as it is not included in the main Vega Expression
    }).join(')&&(') +
  ')';
  const ast = vegaExpression.parse(expr);
  const codegen = vegaExpression.codegen({
    whitelist: ['datum'],
    globalvar: 'global'
  });
  const value = codegen(ast);

  return new Function('datum', `return ${value.code};`) as (d: object) => boolean;
}
github vega / voyager / src / models / shelf / filter.ts View on Github external
export function toPredicateFunction(filters: ShelfFilter[]) {
  const expr = '(' +
    filters.map(f => {
      return fieldFilterExpression(f, false); // Do not use inrange as it is not included in the main Vega Expression
    }).join(')&&(') +
  ')';
  const ast = vegaExpression.parse(expr);
  const codegen = vegaExpression.codegen({
    whitelist: ['datum'],
    globalvar: 'global'
  });
  const value = codegen(ast);

  return new Function('datum', `return ${value.code};`) as (d: object) => boolean;
}
github vega / vega / packages / vega-parser / src / parsers / expression / codegen.js View on Github external
for (var name in functionContext) { fn[name] = thisPrefix + name; }
  return fn;
}

// Export code generator and parameters
export var codegenParams = {
  blacklist:  ['_'],
  whitelist:  ['datum', 'event', 'item'],
  fieldvar:   'datum',
  globalvar:  function(id) { return '_[' + stringValue('$' + id) + ']'; },
  functions:  buildFunctions,
  constants:  constants,
  visitors:   astVisitors
};

export var codeGenerator = codegen(codegenParams);
github vega / vega / packages / vega-functions / src / codegen.js View on Github external
// register Vega-Lite selection functions
expressionFunction('vlSelectionTest', selectionTest, selectionVisitor);
expressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);

// Export code generator and parameters
export const codegenParams = {
  blacklist:  ['_'],
  whitelist:  ['datum', 'event', 'item'],
  fieldvar:   'datum',
  globalvar:  function(id) { return '_[' + stringValue(SignalPrefix + id) + ']'; },
  functions:  buildFunctions,
  constants:  constants,
  visitors:   astVisitors
};

export var codeGenerator = codegen(codegenParams);
github vega / vega / packages / vega-parser / src / parsers / expression / codegen-params.js View on Github external
if (args[0].type === Literal) { // scale dependency
    name = args[0].value;
    var scaleName = scalePrefix + name;

    if (!params.hasOwnProperty(scaleName)) {
      try {
        params[scaleName] = scope.scaleRef(name);
      } catch (err) {
        // TODO: error handling? warning?
      }
    }
  }

  else if (args[0].type === Identifier) { // forward reference to signal
    name = args[0].name;
    args[0] = new ASTNode(Literal);
    args[0].raw = '{signal:"' + name + '"}';
  }
}
github vega / vega / packages / vega-parser / src / parsers / codegen.js View on Github external
if (args[0].type === Literal) { // scale dependency
    name = args[0].value;
    var scaleName = scalePrefix + name;

    if (!params.hasOwnProperty(scaleName)) {
      try {
        params[scaleName] = scope.scaleRef(name);
      } catch (err) {
        // TODO: error handling? warning?
      }
    }
  }

  else if (args[0].type === Identifier) { // forward reference to signal
    name = args[0].name;
    args[0] = new ASTNode(Literal);
    args[0].raw = '{signal:"' + name + '"}';
  }
}
github vega / vega-lite / src / compile / data / expressions.ts View on Github external
export function getDependentFields(expression: string) {
  const ast = parse(expression);
  const dependents = new Set();
  ast.visit((node: any) => {
    if (node.type === 'MemberExpression' && startsWithDatum(node)) {
      dependents.add(
        getName(node)
          .slice(1)
          .join('.')
      );
    }
  });

  return dependents;
}
github vega / vega-lite / build / src / compile / data / expressions.js View on Github external
export function getDependentFields(expression) {
    const ast = parse(expression);
    const dependents = new Set();
    ast.visit((node) => {
        if (node.type === 'MemberExpression' && startsWithDatum(node)) {
            dependents.add(getName(node)
                .slice(1)
                .join('.'));
        }
    });
    return dependents;
}
//# sourceMappingURL=expressions.js.map

vega-expression

Vega expression parser and code generator.

BSD-3-Clause
Latest version published 5 months ago

Package Health Score

91 / 100
Full package analysis