@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
49 lines • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizedAstToJson = normalizedAstToJson;
exports.normalizedAstToQuads = normalizedAstToQuads;
exports.printNormalizedAstToMermaid = printNormalizedAstToMermaid;
exports.printNormalizedAstToMermaidUrl = printNormalizedAstToMermaidUrl;
const json_1 = require("../../util/json");
const quads_1 = require("../../util/quads");
const ast_1 = require("../../util/mermaid/ast");
/** Should work with larger things as well */
function normalizedAstToJson(ast) {
// we never serialize the idmap, as it just duplicates the ast, additionally we now miss the full-lexeme to further safe memory
return JSON.stringify({ ...ast.ast, idMap: undefined }, (k, v) => {
if (k === 'fullLexeme') {
return undefined;
}
return (0, json_1.jsonReplacer)(k, v);
});
}
/**
* Normalized AST to quads serialization this does not have multi-file support
* @see {@link serialize2quads}
* @see {@link QuadSerializationConfiguration}
* @see {@link normalizedAstToMermaid}
* @see {@link normalizedAstToMermaidUrl}
* @see {@link printNormalizedAstToMermaidUrl}
*/
function normalizedAstToQuads(ast, config) {
return (0, quads_1.serialize2quads)(ast.ast.files[0].root, config);
}
/**
* Serialize the normalized AST to mermaid format
* @see {@link normalizedAstToMermaid}
* @see {@link normalizedAstToMermaidUrl}
* @see {@link printNormalizedAstToMermaidUrl}
*/
function printNormalizedAstToMermaid(ast) {
return (0, ast_1.normalizedAstToMermaid)(ast.ast);
}
/**
* Serialize the normalized AST to a mermaid URL
* @see {@link normalizedAstToMermaid}
* @see {@link normalizedAstToMermaidUrl}
* @see {@link printNormalizedAstToMermaid}
*/
function printNormalizedAstToMermaidUrl(ast) {
return (0, ast_1.normalizedAstToMermaidUrl)(ast.ast);
}
//# sourceMappingURL=normalize-printer.js.map