Beispiel #1
0
export default function cleanNode(node: Node): Node {
  if (!isNode(node)) {
    throw new Error(`node must be a valid node type, got: ${inspect(node)}`);
  }

  let result = Object.create(null);
  let fields = NODE_FIELDS[node.type];

  result.type = node.type;

  Object.keys(fields).forEach(field => {
    if (field in node) {
      let value = node[field];

      if (isNode(value)) {
        result[field] = cleanNode(value);
      } else if (Array.isArray(value)) {
        result[field] = value.map(element => isNode(element) ? cleanNode(element) : element);
      } else {
        result[field] = value;
      }
    } else {
      result[field] = fields[field].default;
    }
  });

  return result;
}
Beispiel #2
0
 return mapValue(obj, (value, key) => {
   if (build.isNode(value.component)) {
     return value.component;
   } else if (typeof value === 'string') {
     return build.stringLiteral(value.component);
   } else {
     return build.identifier(key);
   }
 });
Beispiel #3
0
 function check(child) {
   if (result) {
     // Do nothing.
   } else if (Array.isArray(child)) {
     child.some(check);
   } else if (t.isNode(child)) {
     assert.strictEqual(result, false);
     result = predicate(child);
   }
   return result;
 }
Beispiel #4
0
  Object.keys(fields).forEach(field => {
    if (field in node) {
      let value = node[field];

      if (isNode(value)) {
        result[field] = cleanNode(value);
      } else if (Array.isArray(value)) {
        result[field] = value.map(element => isNode(element) ? cleanNode(element) : element);
      } else {
        result[field] = value;
      }
    } else {
      result[field] = fields[field].default;
    }
  });
Beispiel #5
0
 result[field] = value.map(element => isNode(element) ? cleanNode(element) : element);