ecma-search
Version:
Search ECMAScript Structurally
49 lines (39 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.reducer = reducer;
exports.unique = unique;
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function reducer(_ref) {
var start = _ref.start,
end = _ref.end,
loc = _ref.loc,
range = _ref.range,
extra = _ref.extra,
closingElement = _ref.closingElement,
selfClosing = _ref.selfClosing,
rest = _objectWithoutProperties(_ref, ["start", "end", "loc", "range", "extra", "closingElement", "selfClosing"]);
return Object.keys(rest).reduce(function (acc, property) {
if (Array.isArray(acc[property])) {
acc[property] = acc[property].map(reducer);
} else if (acc[property] && _typeof(acc[property]) === 'object') {
acc[property] = reducer(acc[property]);
}
return acc;
}, rest);
}
function unique(nodes) {
var lineNumbers = {};
return nodes.reduce(function (acc, node) {
var lineNumber = "".concat(node.loc.start.line, ":").concat(node.loc.start.column, "-").concat(node.loc.end.line, ":").concat(node.loc.end.column);
if (!(lineNumber in lineNumbers)) {
acc.push(node);
lineNumbers[lineNumber] = true;
}
return acc;
}, []);
}
//# sourceMappingURL=utils.js.map