babel-plugin-transform-adana
Version:
84 lines (71 loc) • 7.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.applyRules = applyRules;
exports.extract = extract;
exports.addRules = addRules;
var _meta = _interopRequireDefault(require("./meta"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var COMMENT_PATTERN = /^\s*@?(adana|coverage|test|istanbul):?\s*(.*)\s*/;
function within(a, b) {
return a.start.line >= b.start.line && a.start.column >= b.start.column && a.end.line <= b.end.line && a.end.column <= b.end.column;
}
function applyRules(state) {
var coverage = (0, _meta.default)(state);
coverage.entries.forEach(function (entry) {
var result = {};
var output = [];
entry.tags.forEach(function (tag) {
result[tag] = true;
});
coverage.rules.forEach(function (rule) {
if (within(rule.loc, entry.loc)) {
result[rule.tag] = rule.value;
}
});
Object.keys(result).forEach(function (tag) {
var value = result[tag];
if (value) {
output.push(tag);
}
});
entry.tags = output;
});
}
function extract(comment) {
var output = {};
var result = COMMENT_PATTERN.exec(comment);
if (result) {
var entries = result[2].split(/\s+/);
entries.forEach(function (entry) {
switch (entry.charAt(0)) {
case '+':
output[entry.substr(1)] = true;
break;
case '-':
output[entry.substr(1)] = false;
break;
default:
break;
}
});
}
return output;
}
function addRules(state, loc, comments) {
if (comments) {
var coverage = (0, _meta.default)(state);
comments.forEach(function (comment) {
var values = extract(comment.value);
Object.keys(values).forEach(function (tag) {
coverage.rules.push({
tag,
value: values[tag],
loc
});
});
});
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90YWdzLmpzIl0sIm5hbWVzIjpbIkNPTU1FTlRfUEFUVEVSTiIsIndpdGhpbiIsImEiLCJiIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwiZW5kIiwiYXBwbHlSdWxlcyIsInN0YXRlIiwiY292ZXJhZ2UiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImVudHJ5IiwicmVzdWx0Iiwib3V0cHV0IiwidGFncyIsInRhZyIsInJ1bGVzIiwicnVsZSIsImxvYyIsInZhbHVlIiwiT2JqZWN0Iiwia2V5cyIsInB1c2giLCJleHRyYWN0IiwiY29tbWVudCIsImV4ZWMiLCJzcGxpdCIsImNoYXJBdCIsInN1YnN0ciIsImFkZFJ1bGVzIiwiY29tbWVudHMiLCJ2YWx1ZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOzs7O0FBRUEsSUFBTUEsa0JBQWtCLGtEQUF4Qjs7QUFFQSxTQUFTQyxNQUFULENBQWdCQyxDQUFoQixFQUFtQkMsQ0FBbkIsRUFBc0I7QUFDcEIsU0FBT0QsRUFBRUUsS0FBRixDQUFRQyxJQUFSLElBQWdCRixFQUFFQyxLQUFGLENBQVFDLElBQXhCLElBQ0xILEVBQUVFLEtBQUYsQ0FBUUUsTUFBUixJQUFrQkgsRUFBRUMsS0FBRixDQUFRRSxNQURyQixJQUVMSixFQUFFSyxHQUFGLENBQU1GLElBQU4sSUFBY0YsRUFBRUksR0FBRixDQUFNRixJQUZmLElBR0xILEVBQUVLLEdBQUYsQ0FBTUQsTUFBTixJQUFnQkgsRUFBRUksR0FBRixDQUFNRCxNQUh4QjtBQUlEOztBQUVNLFNBQVNFLFVBQVQsQ0FBb0JDLEtBQXBCLEVBQTJCO0FBQ2hDLE1BQU1DLFdBQVcsbUJBQUtELEtBQUwsQ0FBakI7QUFDQUMsV0FBU0MsT0FBVCxDQUFpQkMsT0FBakIsQ0FBeUIsVUFBQ0MsS0FBRCxFQUFXO0FBQ2xDLFFBQU1DLFNBQVMsRUFBZjtBQUNBLFFBQU1DLFNBQVMsRUFBZjtBQUNBRixVQUFNRyxJQUFOLENBQVdKLE9BQVgsQ0FBbUIsVUFBQ0ssR0FBRCxFQUFTO0FBQzFCSCxhQUFPRyxHQUFQLElBQWMsSUFBZDtBQUNELEtBRkQ7QUFHQVAsYUFBU1EsS0FBVCxDQUFlTixPQUFmLENBQXVCLFVBQUNPLElBQUQsRUFBVTtBQUMvQixVQUFJbEIsT0FBT2tCLEtBQUtDLEdBQVosRUFBaUJQLE1BQU1PLEdBQXZCLENBQUosRUFBaUM7QUFDL0JOLGVBQU9LLEtBQUtGLEdBQVosSUFBbUJFLEtBQUtFLEtBQXhCO0FBQ0Q7QUFDRixLQUpEO0FBS0FDLFdBQU9DLElBQVAsQ0FBWVQsTUFBWixFQUFvQkYsT0FBcEIsQ0FBNEIsVUFBQ0ssR0FBRCxFQUFTO0FBQ25DLFVBQU1JLFFBQVFQLE9BQU9HLEdBQVAsQ0FBZDs7QUFDQSxVQUFJSSxLQUFKLEVBQVc7QUFDVE4sZUFBT1MsSUFBUCxDQUFZUCxHQUFaO0FBQ0Q7QUFDRixLQUxEO0FBTUFKLFVBQU1HLElBQU4sR0FBYUQsTUFBYjtBQUNELEdBbEJEO0FBbUJEOztBQUVNLFNBQVNVLE9BQVQsQ0FBaUJDLE9BQWpCLEVBQTBCO0FBQy9CLE1BQU1YLFNBQVMsRUFBZjtBQUNBLE1BQU1ELFNBQVNkLGdCQUFnQjJCLElBQWhCLENBQXFCRCxPQUFyQixDQUFmOztBQUNBLE1BQUlaLE1BQUosRUFBWTtBQUNWLFFBQU1ILFVBQVVHLE9BQU8sQ0FBUCxFQUFVYyxLQUFWLENBQWdCLEtBQWhCLENBQWhCO0FBQ0FqQixZQUFRQyxPQUFSLENBQWdCLFVBQUNDLEtBQUQsRUFBVztBQUN6QixjQUFRQSxNQUFNZ0IsTUFBTixDQUFhLENBQWIsQ0FBUjtBQUNBLGFBQUssR0FBTDtBQUNFZCxpQkFBT0YsTUFBTWlCLE1BQU4sQ0FBYSxDQUFiLENBQVAsSUFBMEIsSUFBMUI7QUFDQTs7QUFDRixhQUFLLEdBQUw7QUFDRWYsaUJBQU9GLE1BQU1pQixNQUFOLENBQWEsQ0FBYixDQUFQLElBQTBCLEtBQTFCO0FBQ0E7O0FBQ0Y7QUFDRTtBQVJGO0FBVUQsS0FYRDtBQVlEOztBQUNELFNBQU9mLE1BQVA7QUFDRDs7QUFFTSxTQUFTZ0IsUUFBVCxDQUFrQnRCLEtBQWxCLEVBQXlCVyxHQUF6QixFQUE4QlksUUFBOUIsRUFBd0M7QUFDN0MsTUFBSUEsUUFBSixFQUFjO0FBQ1osUUFBTXRCLFdBQVcsbUJBQUtELEtBQUwsQ0FBakI7QUFDQXVCLGFBQVNwQixPQUFULENBQWlCLFVBQUNjLE9BQUQsRUFBYTtBQUM1QixVQUFNTyxTQUFTUixRQUFRQyxRQUFRTCxLQUFoQixDQUFmO0FBQ0FDLGFBQU9DLElBQVAsQ0FBWVUsTUFBWixFQUFvQnJCLE9BQXBCLENBQTRCLFVBQUNLLEdBQUQsRUFBUztBQUNuQ1AsaUJBQVNRLEtBQVQsQ0FBZU0sSUFBZixDQUFvQjtBQUNsQlAsYUFEa0I7QUFFbEJJLGlCQUFPWSxPQUFPaEIsR0FBUCxDQUZXO0FBR2xCRztBQUhrQixTQUFwQjtBQUtELE9BTkQ7QUFPRCxLQVREO0FBVUQ7QUFDRiIsImZpbGUiOiJ0YWdzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1ldGEgZnJvbSAnLi9tZXRhJztcblxuY29uc3QgQ09NTUVOVF9QQVRURVJOID0gL15cXHMqQD8oYWRhbmF8Y292ZXJhZ2V8dGVzdHxpc3RhbmJ1bCk6P1xccyooLiopXFxzKi87XG5cbmZ1bmN0aW9uIHdpdGhpbihhLCBiKSB7XG4gIHJldHVybiBhLnN0YXJ0LmxpbmUgPj0gYi5zdGFydC5saW5lICYmXG4gICAgYS5zdGFydC5jb2x1bW4gPj0gYi5zdGFydC5jb2x1bW4gJiZcbiAgICBhLmVuZC5saW5lIDw9IGIuZW5kLmxpbmUgJiZcbiAgICBhLmVuZC5jb2x1bW4gPD0gYi5lbmQuY29sdW1uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSdWxlcyhzdGF0ZSkge1xuICBjb25zdCBjb3ZlcmFnZSA9IG1ldGEoc3RhdGUpO1xuICBjb3ZlcmFnZS5lbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0geyB9O1xuICAgIGNvbnN0IG91dHB1dCA9IFtdO1xuICAgIGVudHJ5LnRhZ3MuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICByZXN1bHRbdGFnXSA9IHRydWU7XG4gICAgfSk7XG4gICAgY292ZXJhZ2UucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgaWYgKHdpdGhpbihydWxlLmxvYywgZW50cnkubG9jKSkge1xuICAgICAgICByZXN1bHRbcnVsZS50YWddID0gcnVsZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSByZXN1bHRbdGFnXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBvdXRwdXQucHVzaCh0YWcpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVudHJ5LnRhZ3MgPSBvdXRwdXQ7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdChjb21tZW50KSB7XG4gIGNvbnN0IG91dHB1dCA9IHsgfTtcbiAgY29uc3QgcmVzdWx0ID0gQ09NTUVOVF9QQVRURVJOLmV4ZWMoY29tbWVudCk7XG4gIGlmIChyZXN1bHQpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gcmVzdWx0WzJdLnNwbGl0KC9cXHMrLyk7XG4gICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgc3dpdGNoIChlbnRyeS5jaGFyQXQoMCkpIHtcbiAgICAgIGNhc2UgJysnOlxuICAgICAgICBvdXRwdXRbZW50cnkuc3Vic3RyKDEpXSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLSc6XG4gICAgICAgIG91dHB1dFtlbnRyeS5zdWJzdHIoMSldID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJ1bGVzKHN0YXRlLCBsb2MsIGNvbW1lbnRzKSB7XG4gIGlmIChjb21tZW50cykge1xuICAgIGNvbnN0IGNvdmVyYWdlID0gbWV0YShzdGF0ZSk7XG4gICAgY29tbWVudHMuZm9yRWFjaCgoY29tbWVudCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gZXh0cmFjdChjb21tZW50LnZhbHVlKTtcbiAgICAgIE9iamVjdC5rZXlzKHZhbHVlcykuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICAgIGNvdmVyYWdlLnJ1bGVzLnB1c2goe1xuICAgICAgICAgIHRhZyxcbiAgICAgICAgICB2YWx1ZTogdmFsdWVzW3RhZ10sXG4gICAgICAgICAgbG9jLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=