Acme.BookStore.HttpApi.Host/node_modules/gulp-cli/lib/shared/log/copy-tree.js

(开头部分) 1KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

'use strict';

function copyNode(node) {
  var newNode = {};
  Object.keys(node).forEach(function(key) {
    newNode[key] = node[key];
  });
  return newNode;
}

var defaultNodeFactory = {
  topNode: copyNode,
  taskNode: copyNode,
  childNode: copyNode,
};

function copyTree(tree, opts, nodeFactory) {
  opts = opts || {};

  var depth = opts.tasksDepth;
  depth = typeof depth === 'number' ? ((depth < 1) ? 1 : depth) : null;

  nodeFactory = nodeFactory || defaultNodeFactory;

  var newTree = nodeFactory.topNode(tree);
  newTree.nodes = [];

  if (Array.isArray(tree.nodes)) {
    tree.nodes.forEach(visit);
  }

  function visit(node) {
    var newNode = nodeFactory.taskNode(node);
    newNode.nodes = [];
    newTree.nodes.push(newNode);

    if (opts.compactTasks) {
      forEach(node.nodes, copyNotRecursively, newNode);

    } else if (!depth || depth > 1) {
      forEach(node.nodes, copyRecursively, depth, 2, newNode);
    }
  }

  function copyNotRecursively(child, newParent) {
    var newChild = nodeFactory.childNode(child);
    newChild.nodes = [];
    newParent.nodes.push(newChild);

    if (child.branch) {
      forEach(child.nodes, copyNotRecursively, newChild);
    }
  }

  function copyRecursively(child, maxDepth, nowDepth, newParent) {
    var newChild = nodeFactory.childNode(child);
    newChild.nodes = [];
    newParent.nodes.push(newChild);

    if (!maxDepth || maxDepth > nowDepth) {
后面还有 21 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。