9e5a8ca333820ec0312b0910f468ab5b42bf0493 kent Mon Apr 1 22:07:27 2013 -0700 Implementing heavy tag option. diff --git src/meta/metaHoist/metaHoist.c src/meta/metaHoist/metaHoist.c index aa5ec02..3a08e8d 100644 --- src/meta/metaHoist/metaHoist.c +++ src/meta/metaHoist/metaHoist.c @@ -120,36 +120,39 @@ /* Do depth first recursion, but get early return if we're a leaf. */ struct meta *child; if (meta->children == NULL) return; for (child = meta->children; child != NULL; child = child->next) metaTreeHoist(child); /* Build up list of tags used in any child. */ struct slName *tag, *tagList = tagsInAny(meta->children); /* Go through list and figure out ones that are same in all children. */ for (tag = tagList; tag != NULL; tag = tag->next) { if (!sameString(tag->name, keyTag)) { + if (heavy == NULL || !sameString(tag->name, heavy)) + { char *val; val = allSameVal(tag->name, meta->children); if (val != NULL) hoistOne(meta, tag->name, val); } } + } slFreeList(&tagList); } void metaHoist(char *inFile, char *outFile) /* metaHoist - Move tags that are shared by all siblings up a level.. */ { struct meta *metaList = metaLoadAll(inFile, keyTag, parentTag, FALSE, FALSE); struct meta *meta; for (meta = metaList; meta != NULL; meta = meta->next) metaTreeHoist(meta); metaWriteAll(metaList, outFile, indent, withParent); }