From a0d57c0cecb0252b09100600944165c0bad914ce Mon Sep 17 00:00:00 2001 From: Allanis Date: Fri, 19 Apr 2013 19:05:41 +0100 Subject: [PATCH] [Add] Made save recursive. [Fix] Load bug. --- utils/resedit/data.py | 79 +++++++++++++++++++---------------------- utils/resedit/data.pyc | Bin 3504 -> 3533 bytes 2 files changed, 37 insertions(+), 42 deletions(-) diff --git a/utils/resedit/data.py b/utils/resedit/data.py index 6633417..a7d9c38 100644 --- a/utils/resedit/data.py +++ b/utils/resedit/data.py @@ -42,10 +42,8 @@ def load_Tag(node, do_array=None, do_special=None): for child in filter(lambda x: x.nodeType == x.ELEMENT_NODE, node.childNodes): n = 0 - if node.nodeName not in do_array and \ - do_special != None and \ - node.nodeName not in do_special.keys(): - children, n = load_Tag(child, do_array, do_special) + + children, n = load_Tag(child, do_array, do_special) # Just slap the children on. if n > 0: @@ -60,6 +58,9 @@ def load_Tag(node, do_array=None, do_special=None): section[child.firstChild.data] = \ child.attributes[do_special[node.nodeName]].value + elif n > 0: + section[child.nodeName] = children + # Normal way (but will overwrite lists). else: section[child.nodeName] = child.firstChild.data @@ -86,44 +87,7 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None, do_special=N if has_name: elem.setAttribute("name", key) - for key2, value2 in value.items(): - node = xml.createElement(key2) - - # Check if it needs to parse an array instead of a dictionary. - if do_array != None and key2 in do_array.keys(): - for text in value2: - node2 = xml.createElement(do_array[key2]) - txtnode = xml.createTextNode(str(text)) - node2.appendChild(txtnode) - node.appendChild(node2) - - # Check to see if we need to run the ULTRA_UBER_HACK. - elif do_special != None and key2 in do_special.keys(): - for key3, value3 in value2.items(): - node2 = xml.createElement(do_special[key2][0]) - node2.setAttribute(do_special[key2][1], value3) - txtnode = xml.createTextNode(str(key3)) - node2.appendChild(txtnode) - node.appendChild(node2) - - # Standard dictionary approach. - else: - for key3, value3 in value2.items(): - node2 = xml.createElement(key3) - - if isinstance(value3, dict): - for key4, value4 in value3.items(): - node3 = xml.createElement(key4) - txtnode = xml.createTextNode(str(value4)) - node3.appendChild(txtnode) - node2.appendChild(node3) - else: - txtnode = xml.createTextNode(str(value3)) - node2.appendChild(txtnode) - - node.appendChild(node2) - - elem.appendChild(node) + save_Tag(xml, elem, value, do_array, do_special) base.appendChild(elem) xml.appendChild(base) @@ -132,3 +96,34 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None, do_special=N xml.unlink() +def save_Tag(xml, parent, data, do_array=None, do_special=None): + for key, value in data.items(): + node = xml.createElement(key) + + # Check if it needs to parse an array instead of a dictionary. + if do_array != None and key in do_array.keys(): + for text in value: + node2 = xml.createElement(do_array[key]) + txtnode = xml.createTextNode(str(text)) + node2.appendChild(txtnode) + node.appendChild(node2) + + # Check see if we need to run the ULTRA UBER HACK! + elif do_special != None and key in do_special.keys(): + for key2, value2 in value.items(): + node2 = xml.createElement(do_special[key][0]) + node2.setAttribute(do_special[key][1], value2) + txtnode = xml.createTextNode(str(key2)) + node2.appendChild(txtnode) + node.appendChild(node2) + + elif isinstance(value, dict): + save_Tag(xml, node, value, do_array, do_special) + + # Standard dictionary approach. + else: + txtnode = xml.createTextNode(str(value)) + node.appendChild(txtnode) + + parent.appendChild(node) + diff --git a/utils/resedit/data.pyc b/utils/resedit/data.pyc index e853806fd0e5676ac8fca6675424769a4314d22d..8e00a9b7eaf02fb2a9f727b5ee3e74be1201da8b 100644 GIT binary patch delta 1394 zcmaiy&ubG=5Xa}e{gGsM)5fH~)~H}9HHU&wtF2Jf{y@}fp{W=YtA-|M(wer(S|e-- zn4;jRWe;9@^5Rv!diKY~n#58;c2YwWN)QQl1ee!l5`_M@E3FO*S@V=1`=jCX*$@^$J)Qh)A;okkxx|B zsUvB2=?k@DR1(yRlV^}0BVUj&siVN42!5Dv+9QaPFtu)Bii9+UDG%Wp z&>WG{Owp$ul|vG~o{?QRTXH#u{3IU!RVd%X@jy@T5Fp1SqynZ8Hp|Sfs`1;|rNUo^ zR+twYj(4@|YVpj|1 zq7$O|jyD#y-d?Jzo!e?7VFS8q0PFtS1nOauC@jgv&R7O}&8da|x492!?h;`yDDNpH z)$g>0hk>9R6aYNT9%`UAxNmmo3-S$T4+Ry?4&~xfESx<_1x&q|)3B%c3Jg`SD9W)w z@+aAhu{p*j2jg|Y1lR07D?h=pQ+)L8ffM<0c%fJ(;dv&^da({k<%i+sT{Z{VoMDrK z30!By8C98^#nlJp(O@BYc0zq<8Lt~$kAy3_wId=aGNKo@2fi!%#XxvsvFV7*oE7vY ihk8|?gSeK@u$f{r9$ZXbPdRW?!jTCx-P1ji?*9Xz6XtCI delta 1405 zcma)5&x;dD6n?L|)1A(AC!NV8Gchut>yMx!EHlSBh$D;aEQ;|Eg;7@QfJw$4C)4g` zp_&}Vn#G_wTPi7)|FmzSweO2|nSKoW@RpXyV z!}<^u?%morca^q(HvUgwY_8sET(-_P-G6US*##HKvPLhe2lnD9&xu8mpj$+esAtob zpi`ILQ|eO0l;#bJJ*K`(gZm@}MMQnetZ@Nbf_e^Z0W=2^mn1&c_?AVhf>KZO#5kGP zoPC=H|C97cIwVJ~rdWy-k~tc@CTUX-K7o4FE6^4b#}_7??qMC}q*I3m0C8bTAIo;@ z^`39&$2?1MWtUX@&D=^$J;{Zvif< zOKi(iFcBeqY(RB91tP7IoYEPAW>5=xVQ4rk3R&18AVc6&8jJ~iLr~OmMy|=zCz22& zmnCULeF*l6hL2eWh~PA(rSa9AK3LcOLj$>#AQdG|sKGMHP^U$fwaKz*jL;Yxe^EP* z7|L!tz02CEGp-EyyvxI7mZM-N_MWMYX-c!y;PJ={0zfg2gMdGK2ezm#D@F#Ly)3xt z?+We*ZpSZZ_>5#Q+HwE*EBA&BZ%>eo3MEt8*I-2qQ*Dk@_OrP*Luqv^+l*1CHX&Jc zBC6V?WFd{TfVE7sH{9NR310S1nRVNIq4Y!CLRo;On9+2pjmFXdB1U31ngC4U1J*!- zOb|t;wU4E_h+NkW$zSdof)Q|q$VbehCz)(L#zYn@eXLxGZ&%iCb{57BxVVcgCOK@!>rrPxJ@?MGS72@af{AQjltf+V)~tv+ zm#ldXxPrzEcn0e_&+=Sm+1SN7%*HN@Du<#h%3S6^