@cucumber/cucumber
Version:
The official JavaScript implementation of Cucumber.
65 lines • 2.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getGherkinStepMap = getGherkinStepMap;
exports.getGherkinScenarioMap = getGherkinScenarioMap;
exports.getGherkinExampleRuleMap = getGherkinExampleRuleMap;
exports.getGherkinScenarioLocationMap = getGherkinScenarioLocationMap;
const value_checker_1 = require("../../value_checker");
function getGherkinStepMap(gherkinDocument) {
const result = {};
gherkinDocument.feature.children
.map(extractStepContainers)
.flat()
.forEach((x) => x.steps.forEach((step) => (result[step.id] = step)));
return result;
}
function extractStepContainers(child) {
if ((0, value_checker_1.doesHaveValue)(child.background)) {
return [child.background];
}
else if ((0, value_checker_1.doesHaveValue)(child.rule)) {
return child.rule.children.map((ruleChild) => (0, value_checker_1.doesHaveValue)(ruleChild.background)
? ruleChild.background
: ruleChild.scenario);
}
return [child.scenario];
}
function getGherkinScenarioMap(gherkinDocument) {
const result = {};
gherkinDocument.feature.children
.map((child) => {
if ((0, value_checker_1.doesHaveValue)(child.rule)) {
return child.rule.children;
}
return [child];
})
.flat()
.forEach((x) => {
if (x.scenario != null) {
result[x.scenario.id] = x.scenario;
}
});
return result;
}
function getGherkinExampleRuleMap(gherkinDocument) {
const result = {};
gherkinDocument.feature.children
.filter((x) => x.rule != null)
.forEach((x) => x.rule.children
.filter((child) => (0, value_checker_1.doesHaveValue)(child.scenario))
.forEach((child) => (result[child.scenario.id] = x.rule)));
return result;
}
function getGherkinScenarioLocationMap(gherkinDocument) {
const locationMap = {};
const scenarioMap = getGherkinScenarioMap(gherkinDocument);
Object.keys(scenarioMap).forEach((id) => {
const scenario = scenarioMap[id];
locationMap[id] = scenario.location;
if ((0, value_checker_1.doesHaveValue)(scenario.examples)) {
scenario.examples.forEach((x) => x.tableBody.forEach((tableRow) => (locationMap[tableRow.id] = tableRow.location)));
}
});
return locationMap;
}
//# sourceMappingURL=gherkin_document_parser.js.map
;