[commit] r2380 - trunk/GME/Parser

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Thu Oct 3 11:16:02 CDT 2013


Author: ksmyth
Date: Thu Oct  3 11:16:02 2013
New Revision: 2380

Log:
xme scripts

Added:
   trunk/GME/Parser/xme_fix_dup_guids.py
   trunk/GME/Parser/xme_id2guid.py

Added: trunk/GME/Parser/xme_fix_dup_guids.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/GME/Parser/xme_fix_dup_guids.py	Thu Oct  3 11:16:02 2013	(r2380)
@@ -0,0 +1,24 @@
+import os
+import os.path
+import sys
+import uuid
+
+def fix_dups(filename, output_filename):
+    from xml.etree import ElementTree
+    xme = ElementTree.parse(filename)
+    guid_map = {}
+    for element in xme.iter():
+        guid = element.get('guid')
+        if guid:
+            if guid_map.get(guid):
+                guid = element.attrib['guid'] = '{' + str(uuid.uuid4()) + '}'
+            guid_map[guid] = 1
+    
+    with open(output_filename, 'wb') as output:
+        output.write('<!DOCTYPE project SYSTEM "mga.dtd">\n')
+        xme.write(output)
+
+if __name__ == '__main__':
+    input = sys.argv[1]
+    output = os.path.splitext(input)[0] + "_fixed.xme"
+    fix_dups(input, output)

Added: trunk/GME/Parser/xme_id2guid.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/GME/Parser/xme_id2guid.py	Thu Oct  3 11:16:02 2013	(r2380)
@@ -0,0 +1,32 @@
+import os
+import os.path
+import sys
+
+def id2guid(filename, output_filename):
+    from xml.etree import ElementTree
+    xme = ElementTree.parse(filename)
+    id_guid_map = {}
+    for element in xme.iter():
+        if element.get('id') and element.get('guid'):
+            id_guid_map[element.get('id')] = element.get('guid')
+            del element.attrib['id']
+        if element.get('derivedfrom'):
+            element.attrib['derivedfrom'] = id_guid_map[element.get('derivedfrom')]
+    for element in xme.iter('reference'):
+        if element.get('referred'):
+            element.attrib['referred'] = id_guid_map[element.get('referred')]
+    for element in xme.iter('set'):
+        if element.get('members'):
+            element.attrib['members'] = " ".join([id_guid_map[id] for id in element.get('members').split()])
+    for element in xme.iter('connpoint'):
+        if element.get('target'):
+            element.attrib['target'] = id_guid_map[element.get('target')]
+    
+    with open(output_filename, 'wb') as output:
+        output.write('<!DOCTYPE project SYSTEM "mga2.dtd">\n')
+        xme.write(output)
+
+if __name__ == '__main__':
+    input = sys.argv[1]
+    output = os.path.splitext(input)[0] + "_guids.xme"
+    id2guid(input, output)


More information about the gme-commit mailing list