MCPcopy Create free account
hub / github.com/microsoft/SandDance / parser

Function parser

docs/app/js/sanddance-app.js:143285–143313  ·  view source on GitHub ↗
(expr, scope)

Source from the content-addressed store, hash-verified

143283expressionFunction("vlSelectionResolve", (0, _vegaSelections.selectionResolve), (0, _vegaSelections.selectionVisitor));
143284expressionFunction("vlSelectionTuples", (0, _vegaSelections.selectionTuples));
143285function parser(expr, scope) {
143286 const params = {}; // parse the expression to an abstract syntax tree (ast)
143287 let ast;
143288 try {
143289 expr = (0, _vegaUtil.isString)(expr) ? expr : (0, _vegaUtil.stringValue)(expr) + "";
143290 ast = (0, _vegaExpression.parseExpression)(expr);
143291 } catch (err) {
143292 (0, _vegaUtil.error)("Expression parse error: " + expr);
143293 } // analyze ast function calls for dependencies
143294 ast.visit((node)=>{
143295 if (node.type !== (0, _vegaExpression.CallExpression)) return;
143296 const name = node.callee.name, visit = codegenParams.visitors[name];
143297 if (visit) visit(name, node.arguments, scope, params);
143298 }); // perform code generation
143299 const gen = codeGenerator(ast); // collect signal dependencies
143300 gen.globals.forEach((name)=>{
143301 const signalName = SignalPrefix + name;
143302 if (!(0, _vegaUtil.hasOwnProperty)(params, signalName) && scope.getSignal(name)) params[signalName] = scope.signalRef(name);
143303 }); // return generated expression code and dependencies
143304 return {
143305 $expr: (0, _vegaUtil.extend)({
143306 code: gen.code
143307 }, scope.options.ast ? {
143308 ast
143309 } : null),
143310 $fields: gen.fields,
143311 $params: params
143312 };
143313}
143314
143315},{"vega-util":"dPFAY","vega-expression":"ic0a8","d3-geo":"1UFrq","d3-color":"2I9cJ","vega-dataflow":"4kvYg","vega-scale":"evQIv","vega-scenegraph":"gIB0Z","vega-selections":"7uoGs","vega-statistics":"hZmG3","vega-time":"hDlOp","d3-array":"8JMcC","@parcel/transformer-js/src/esmodule-helpers.js":"jA2du"}],"ic0a8":[function(require,module,exports) {
143316var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js");

Callers 1

toDateFunction · 0.70

Calls 4

visitFunction · 0.70
peekFunction · 0.70
parseExpressionFunction · 0.70
forEachMethod · 0.45

Tested by

no test coverage detected