UNPKG

gauge-ts

Version:
55 lines (54 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const typescript_1 = require("typescript"); const CodeHelper_1 = require("../helpers/CodeHelper"); const Position_1 = require("../models/Position"); const Range_1 = require("../models/Range"); const StepRegistry_1 = require("../models/StepRegistry"); const StepRegistryEntry_1 = require("../models/StepRegistryEntry"); const Util_1 = require("../utils/Util"); class StaticLoader extends CodeHelper_1.CodeHelper { loadImplementations() { this.loadFiles(); } loadStepsFromText(file, text) { const source = (0, typescript_1.createSourceFile)(file, text, typescript_1.ScriptTarget.Latest); (0, typescript_1.forEachChild)(source, (childNode) => { if ((0, typescript_1.isClassDeclaration)(childNode)) { (0, typescript_1.forEachChild)(childNode, (node) => { if ((0, typescript_1.isMethodDeclaration)(node) && this.hasStepDecorator(node)) { this.processNode(node, file, source); } }); } }); } reloadSteps(content, filePath) { StepRegistry_1.default.removeSteps(filePath); this.loadStepsFromText(filePath, content); } removeSteps(filePath) { StepRegistry_1.default.removeSteps(filePath); } loadFiles() { for (const file of Util_1.Util.getListOfFiles()) { const text = Util_1.Util.readFile(file); this.loadStepsFromText(file, text); } } processNode(node, file, source) { const stepTexts = this.getStepTexts(node); for (const stepText of stepTexts) { const stepValue = stepText.replace(/(<.*?>)/g, "{}"); StepRegistry_1.default.add(stepValue, new StepRegistryEntry_1.StepRegistryEntry(stepText, stepValue, file, undefined, StaticLoader.getRange(node, source), stepTexts.length > 1)); } } static getRange(node, source) { // eslint-disable-next-line @typescript-eslint/no-unsafe-call const dec = (0, typescript_1.getDecorators)(node); const start = source.getLineAndCharacterOfPosition(dec[0].expression.pos); const end = source.getLineAndCharacterOfPosition(node.end); return new Range_1.Range(new Position_1.Position(start.line + 1, start.character), new Position_1.Position(end.line + 1, end.character)); } } exports.default = StaticLoader;