UNPKG

deep-iterator

Version:

Deep iteration of any object or iterable collection.

89 lines (67 loc) 6.08 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); exports.default = deepIterator; var _search = require('./search'); var search = _interopRequireWildcard(_search); var _rootNode = require('./root-node'); var _rootNode2 = _interopRequireDefault(_rootNode); var _seen = require('./seen'); var _seen2 = _interopRequireDefault(_seen); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _marked = [deepIterator].map(_regenerator2.default.mark); function deepIterator(rootElement) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var config, node, seen; return _regenerator2.default.wrap(function deepIterator$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: config = { onlyLeaves: false, circularReference: 'leaf', search: 'dfsPreOrder', iterateOverObject: true, skipIteration: function skipIteration() { return false; } }; if (options.onlyLeaves !== undefined) { config.onlyLeaves = options.onlyLeaves; } if (options.circularReference !== undefined) { config.circularReference = options.circularReference; } if (options.iterateOverObject !== undefined) { config.iterateOverObject = options.iterateOverObject; } if (options.skipIteration !== undefined) { config.skipIteration = options.skipIteration; } if (!(options.search !== undefined)) { _context.next = 9; break; } if (options.search in search) { _context.next = 8; break; } throw new Error('The search algorithm ' + options.search + ' is incorrect.'); case 8: config.search = options.search; case 9: node = new _rootNode2.default(rootElement, config); seen = (0, _seen2.default)(config.circularReference); return _context.delegateYield(search[config.search](node, config.onlyLeaves, seen), 't0', 12); case 12: case 'end': return _context.stop(); } } }, _marked[0], this); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWVwLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbImRlZXBJdGVyYXRvciIsInNlYXJjaCIsInJvb3RFbGVtZW50Iiwib3B0aW9ucyIsImNvbmZpZyIsIm9ubHlMZWF2ZXMiLCJjaXJjdWxhclJlZmVyZW5jZSIsIml0ZXJhdGVPdmVyT2JqZWN0Iiwic2tpcEl0ZXJhdGlvbiIsInVuZGVmaW5lZCIsIkVycm9yIiwibm9kZSIsInNlZW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7a0JBSXlCQSxZOztBQUp6Qjs7SUFBWUMsTTs7QUFDWjs7OztBQUNBOzs7Ozs7OztlQUV5QkQsWTs7QUFBVixTQUFVQSxZQUFWLENBQXVCRSxXQUF2QjtBQUFBLE1BQW9DQyxPQUFwQyx1RUFBOEMsRUFBOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ1BDLGdCQURPLEdBQ0U7QUFDYkMsd0JBQVksS0FEQztBQUViQywrQkFBbUIsTUFGTjtBQUdiTCxvQkFBUSxhQUhLO0FBSWJNLCtCQUFtQixJQUpOO0FBS2JDLDJCQUFlO0FBQUEscUJBQU0sS0FBTjtBQUFBO0FBTEYsV0FERjs7O0FBU2IsY0FBSUwsUUFBUUUsVUFBUixLQUF1QkksU0FBM0IsRUFBc0M7QUFDcENMLG1CQUFPQyxVQUFQLEdBQW9CRixRQUFRRSxVQUE1QjtBQUNEO0FBQ0QsY0FBSUYsUUFBUUcsaUJBQVIsS0FBOEJHLFNBQWxDLEVBQTZDO0FBQzNDTCxtQkFBT0UsaUJBQVAsR0FBMkJILFFBQVFHLGlCQUFuQztBQUNEO0FBQ0QsY0FBSUgsUUFBUUksaUJBQVIsS0FBOEJFLFNBQWxDLEVBQTZDO0FBQzNDTCxtQkFBT0csaUJBQVAsR0FBMkJKLFFBQVFJLGlCQUFuQztBQUNEO0FBQ0QsY0FBSUosUUFBUUssYUFBUixLQUEwQkMsU0FBOUIsRUFBeUM7QUFDdkNMLG1CQUFPSSxhQUFQLEdBQXVCTCxRQUFRSyxhQUEvQjtBQUNEOztBQXBCWSxnQkFxQlRMLFFBQVFGLE1BQVIsS0FBbUJRLFNBckJWO0FBQUE7QUFBQTtBQUFBOztBQUFBLGNBc0JMTixRQUFRRixNQUFSLElBQWtCQSxNQXRCYjtBQUFBO0FBQUE7QUFBQTs7QUFBQSxnQkF1QkgsSUFBSVMsS0FBSiwyQkFBa0NQLFFBQVFGLE1BQTFDLG9CQXZCRzs7QUFBQTtBQXlCWEcsaUJBQU9ILE1BQVAsR0FBZ0JFLFFBQVFGLE1BQXhCOztBQXpCVztBQTJCUFUsY0EzQk8sR0EyQkEsdUJBQWFULFdBQWIsRUFBMEJFLE1BQTFCLENBM0JBO0FBNEJQUSxjQTVCTyxHQTRCQSxvQkFBU1IsT0FBT0UsaUJBQWhCLENBNUJBO0FBQUEsd0NBNkJOTCxPQUFPRyxPQUFPSCxNQUFkLEVBQXNCVSxJQUF0QixFQUE0QlAsT0FBT0MsVUFBbkMsRUFBK0NPLElBQS9DLENBN0JNOztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBIiwiZmlsZSI6ImRlZXAtaXRlcmF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzZWFyY2ggZnJvbSAnLi9zZWFyY2gnO1xuaW1wb3J0IFJvb3ROb2RlIGZyb20gJy4vcm9vdC1ub2RlJztcbmltcG9ydCBtYWtlU2VlbiBmcm9tICcuL3NlZW4nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogZGVlcEl0ZXJhdG9yKHJvb3RFbGVtZW50LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgY29uZmlnID0ge1xuICAgIG9ubHlMZWF2ZXM6IGZhbHNlLFxuICAgIGNpcmN1bGFyUmVmZXJlbmNlOiAnbGVhZicsXG4gICAgc2VhcmNoOiAnZGZzUHJlT3JkZXInLFxuICAgIGl0ZXJhdGVPdmVyT2JqZWN0OiB0cnVlLFxuICAgIHNraXBJdGVyYXRpb246ICgpID0+IGZhbHNlXG4gIH07XG5cbiAgaWYgKG9wdGlvbnMub25seUxlYXZlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uZmlnLm9ubHlMZWF2ZXMgPSBvcHRpb25zLm9ubHlMZWF2ZXM7XG4gIH1cbiAgaWYgKG9wdGlvbnMuY2lyY3VsYXJSZWZlcmVuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbmZpZy5jaXJjdWxhclJlZmVyZW5jZSA9IG9wdGlvbnMuY2lyY3VsYXJSZWZlcmVuY2U7XG4gIH1cbiAgaWYgKG9wdGlvbnMuaXRlcmF0ZU92ZXJPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbmZpZy5pdGVyYXRlT3Zlck9iamVjdCA9IG9wdGlvbnMuaXRlcmF0ZU92ZXJPYmplY3Q7XG4gIH1cbiAgaWYgKG9wdGlvbnMuc2tpcEl0ZXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uZmlnLnNraXBJdGVyYXRpb24gPSBvcHRpb25zLnNraXBJdGVyYXRpb247XG4gIH1cbiAgaWYgKG9wdGlvbnMuc2VhcmNoICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIShvcHRpb25zLnNlYXJjaCBpbiBzZWFyY2gpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBzZWFyY2ggYWxnb3JpdGhtICR7b3B0aW9ucy5zZWFyY2h9IGlzIGluY29ycmVjdC5gKTtcbiAgICB9XG4gICAgY29uZmlnLnNlYXJjaCA9IG9wdGlvbnMuc2VhcmNoO1xuICB9XG4gIGNvbnN0IG5vZGUgPSBuZXcgUm9vdE5vZGUocm9vdEVsZW1lbnQsIGNvbmZpZyk7XG4gIGNvbnN0IHNlZW4gPSBtYWtlU2Vlbihjb25maWcuY2lyY3VsYXJSZWZlcmVuY2UpO1xuICB5aWVsZCogc2VhcmNoW2NvbmZpZy5zZWFyY2hdKG5vZGUsIGNvbmZpZy5vbmx5TGVhdmVzLCBzZWVuKTtcbn1cbiJdfQ==