function processTree(node, ignoredTags, ignoredAttrs, parentTransforms, path) {
  var guaranteed = true;
  _.each(node.childNodes, function (item) {
    // If item not Node - skip node . Example: #text - text node, comments
    if (item.nodeType !== 1) {
      return;
    }
    // Quiet ignored tags
    if (quietTags[item.nodeName]) {
      return;
    }

    var transforms = (item.getAttribute('transform')) ? parentTransforms + ' ' + item.getAttribute('transform') :
                                                        parentTransforms;
    // Parse nested tags
    if (item.nodeName === 'g') {
      var result = processTree(item, ignoredTags, ignoredAttrs, transforms, path);
      path = result.path;
      guaranteed = guaranteed && result.guaranteed;
    }

    // Get d from supported tag, else return
    var d = '';
    switch (item.nodeName) {
      case 'path' :
        d = item.getAttribute('d');
        break;
      case 'g' :
        break;
      default :
        ignoredTags[item.nodeName] = true;
        return;
    }

    var transformedPath = new SvgPath(d).transform(transforms).toString();
    if (path !== '' && transformedPath !== '') {
      guaranteed = false;
    }
    path += transformedPath;

    // Check not supported attributes
    _.each(item.attributes, function (item) {
      if (notQuietAtts[item.nodeName]) {
        guaranteed = false;
        ignoredAttrs[item.nodeName] = true;
      }
    });
  });

  return { path, ignoredTags, ignoredAttrs, guaranteed };
}
Removing tags which can't be converted.

@param node
@param ignoredTags Hash with ignored tags
@param ignoredAttrs Hash with ignored attributes
@param parentTransforms Text with parent transforms
@param path
@returns {{path: String with contains merged path, ignoredTags: *, ignoredAttrs: *, guaranteed: boolean}}