There is already code to round-trip XUI files through the param block mechanism such that invalid attributes and default values are dropped and formatting is normalized. That code hasn't been exercised in a few years, though, so it probably won't run correctly right away, but it does provide a mechanism for keeping XUI files in line with changing param block schema going forward.
R. On Fri, 03 Aug 2012 15:32:41 -0700, Kadah <kadah.c...@gmail.com> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > This weekend I was working on some XUI files and my OCD (I don't > actually have OCD) was getting very frustrated over the random > formatting, lack of consistent indentation, trailing whitespace, > random/missing newlines and wildly differently sorted arguments. > Usually I'd either completely retab the file or give up, but I was > lazy and tired of not doing anything. So needless to say I got nothing > done on in XUI and spent the few days writing a script to reformat XUI > files to some level of code standards. > > There is no XML code standards on > http://wiki.secondlife.com/wiki/Coding_standard > So I used my own, which were as such: > * Unix EOLs > * Child elements indented +4 spaces > * Each argument on onw line and indented +1 > * Arguments sorted by defined list then alpha order > (eg. 'name' and composting before random control specific args) > * Comments must be preserved > > Initially I looked for existing tools/libs that can do XML cleanup, > but I had the same results I found the last time I looked, that none > of them could cover all the requirements. Surprisingly comment support > was actually hardest to find support for, unsurprisingly argument > sorting is extremely uncommon and the ones that did were poor. > After that I attempted to find an XML lib for parsing, but found that > pretty much all of them did not support comments or the tabled output > was unstable. > > So I ended up writing the XML parser and reserializer myself. > Everything appears to output correctly, but I lack a diff tool that > supports XML to be able to do verification. The text diff tools I'm > familiar with can only do word/character comparisons and the reordered > args, and sometimes drastically improved whitespace, make manual > checking tedious. > > So does anyone know of a, preferably, open source XML diff tool? > > I'm guessing it could be possible to extract some of the XML/XUI file > parsing from the viewer and make one, but it would be a pain in the rear. > > > If this works out, I'll release the scripts (MIT licensed), and submit > the requisite jira/RB to push upstream XUI cleaned up, which would be > really nice. > > Samples: > Input: > http://hg.secondlife.com/viewer-release/raw/24c6da14256c/indra/newview/skins/default/xui/en/panel_preferences_general.xml > Output: http://pastebin.com/9K40N49w > > Input: > http://hg.secondlife.com/viewer-release/raw/24c6da14256c/indra/newview/skins/default/xui/en/menu_login.xml > Output: http://pastebin.com/i16De7xU > > - -Kadah > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.17 (MingW32) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iQEcBAEBAgAGBQJQHFGJAAoJEIdLfPRu7qE2jtwIAKFh7Xe7GJD97ar9kuaQAx13 > Iaj8ZaRB9HVfjdOiJJiT6aaTodEag0B23i19WH0fvq23kgZOGzXgiUppsw3TeiLr > eTX0bnct/CqmTDx+afYJY9QExhb0osC8FuFzjxVld6KtQk46Wn6a58ljNvyc459e > ySBCUgoivg+1oa5XqPP2UmUHE5OK0oqnhALKEfcLpW0AFpbv1yLzrJNEZYE3iIRn > 3/g0mAhcpMtC6Um8XjR3+l/lTi50iTz2T5APnxWX8LNepwOvT2muffHgwGDGRwCt > 6/e1SZjP9AI4hfVf4HM7Rn0JIc87Vp3zODf5KtCsw93er0Qmhi99OBZfn8DriXI= > =GHbm > -----END PGP SIGNATURE----- > _______________________________________________ > Policies and (un)subscribe information available here: > http://wiki.secondlife.com/wiki/OpenSource-Dev > Please read the policies before posting to keep unmoderated posting > privileges _______________________________________________ Policies and (un)subscribe information available here: http://wiki.secondlife.com/wiki/OpenSource-Dev Please read the policies before posting to keep unmoderated posting privileges