@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
49 lines • 2.13 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResolveValueQueryDefinition = void 0;
const ansi_1 = require("../../../util/ansi");
const time_1 = require("../../../util/time");
const joi_1 = __importDefault(require("joi"));
const resolve_value_query_executor_1 = require("./resolve-value-query-executor");
function rValueToAscii(value) {
if (value === null || value === undefined) {
return 'undefined';
}
else if (typeof value === 'string') {
return value;
}
else if (typeof value === 'object') {
if ('num' in value) {
return value.num.toString();
}
else if ('str' in value) {
return `${value.quotes}${value.str}${value.quotes}`;
}
else {
console.warn('omega lul');
return JSON.stringify(value);
}
}
return value;
}
exports.ResolveValueQueryDefinition = {
executor: resolve_value_query_executor_1.executeResolveValueQuery,
asciiSummarizer: (formatter, _processed, queryResults, result) => {
const out = queryResults;
result.push(`Query: ${(0, ansi_1.bold)('resolve-value', formatter)} (${(0, time_1.printAsMs)(out['.meta'].timing, 0)})`);
for (const [fingerprint, obj] of Object.entries(out.results)) {
const { criteria } = JSON.parse(fingerprint);
result.push(` ╰ Values for {${criteria.join(', ')}}`);
result.push(` ╰ ${obj.values.map(v => rValueToAscii(v)).join(', ')}`);
}
return true;
},
schema: joi_1.default.object({
type: joi_1.default.string().valid('resolve-value').required().description('The type of the query.'),
criteria: joi_1.default.array().items(joi_1.default.string()).min(1).required().description('The slicing criteria to use.'),
}).description('The resolve value query used to get definitions of an identifier')
};
//# sourceMappingURL=resolve-value-query-format.js.map