[commit] r2676 - trunk/GME/Parser

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Tue May 16 15:56:55 CDT 2017


Author: ksmyth
Date: Tue May 16 15:56:55 2017
New Revision: 2676

Log:
xme_id2guid: add --omit-default-attributes option

Modified:
   trunk/GME/Parser/xme_id2guid.py

Modified: trunk/GME/Parser/xme_id2guid.py
==============================================================================
--- trunk/GME/Parser/xme_id2guid.py	Tue May 16 15:56:51 2017	(r2675)
+++ trunk/GME/Parser/xme_id2guid.py	Tue May 16 15:56:55 2017	(r2676)
@@ -2,9 +2,9 @@
 import os.path
 import sys
 
-def id2guid(filename, output_filename, sort_elements=False):
+def id2guid(input, output, sort_elements=False, omit_default_attributes=False):
     from xml.etree import ElementTree
-    xme = ElementTree.parse(filename)
+    xme = ElementTree.parse(input)
     id_guid_map = {}
     for element in xme.iter():
         if element.get('id') and element.get('guid'):
@@ -25,6 +25,11 @@
         if element.get('refs'):
             element.attrib['refs'] = " ".join([id_guid_map[id] for id in element.get('refs').split()])
 
+    if omit_default_attributes:
+        parent_map = dict((c, p) for p in xme.getiterator() for c in p)
+        for element in xme.findall('.//attribute[@status=\'meta\']'):
+            parent_map[element].remove(element)
+
     if sort_elements:
         def sortchildrenby(parent, attr):
             parent[:] = sorted(parent, key=lambda child: child.get(attr))
@@ -33,19 +38,28 @@
             sortchildrenby(element, 'name')
             sortchildrenby(element, 'guid')
 
-    with open(output_filename, 'wb') as output:
-        output.write('<!DOCTYPE project SYSTEM "mga2.dtd">\n')
-        xme.write(output)
+    output.write('<!DOCTYPE project SYSTEM "mga2.dtd">\n')
+    xme.write(output)
 
 if __name__ == '__main__':
     import argparse
 
     parser = argparse.ArgumentParser(description='Convert GME id-style .xme (mga.dtd) to GUID-style .xme (mga2.dtd).')
     parser.add_argument('--sort', action='store_true')
+    parser.add_argument('--omit-default-attributes', action='store_true')
     parser.add_argument('input-xme-file')
     # parser.add_argument('--output-file')
 
     args = parser.parse_args()
     input = vars(args)['input-xme-file']
-    output = os.path.splitext(input)[0] + "_guids.xme"
-    id2guid(input, output, sort_elements=args.sort)
+    options = {
+        "sort_elements": args.sort,
+        "omit_default_attributes": 'omit-default-attributes' in vars(args)
+    }
+    if input != '-':
+        output_filename = os.path.splitext(input)[0] + "_guids.xme"
+        with open(output_filename, 'wb') as output:
+            id2guid(input, output, **options)
+    else:
+        id2guid(sys.stdin, sys.stdout, **options)
+


More information about the gme-commit mailing list