UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

47 lines 2.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OriginQueryDefinition = void 0; const ansi_1 = require("../../../util/text/ansi"); const time_1 = require("../../../util/text/time"); const joi_1 = __importDefault(require("joi")); const origin_query_executor_1 = require("./origin-query-executor"); const slice_query_parser_1 = require("../../../cli/repl/parser/slice-query-parser"); function originQueryLineParser(output, line, _config) { const criterion = (0, slice_query_parser_1.sliceCriterionParser)(line[0]); if (!criterion) { output.stderr(output.formatter.format('Invalid origin query format, slicing criterion must be given in parentheses, e.g. (2@var), (1:5) or ($10)', { color: 1 /* Colors.Red */, effect: ansi_1.ColorEffect.Foreground, style: 1 /* FontStyles.Bold */ })); return { query: [] }; } return { query: { type: 'origin', criterion: criterion }, rCode: line[1] }; } exports.OriginQueryDefinition = { executor: origin_query_executor_1.executeResolveValueQuery, asciiSummarizer: (formatter, _analyzer, queryResults, result) => { const out = queryResults; result.push(`Query: ${(0, ansi_1.bold)('origin', formatter)} (${(0, time_1.printAsMs)(out['.meta'].timing, 0)})`); for (const [criteria, obj] of Object.entries(out.results)) { result.push(` ╰ Origins for {${criteria}}`); result.push(` ╰ ${obj?.map(o => JSON.stringify(o)).join(', ')}`); } return true; }, fromLine: originQueryLineParser, schema: joi_1.default.object({ type: joi_1.default.string().valid('origin').required().description('The type of the query.'), criterion: joi_1.default.string().required().description('The slicing criteria to use'), }).description('The resolve value query used to get definitions of an identifier'), flattenInvolvedNodes: (queryResults) => { const out = queryResults; return Object.entries(out.results).flatMap(([_, obj]) => obj?.map(origin => origin.id) ?? []); } }; //# sourceMappingURL=origin-query-format.js.map