Yeah. I see it’s supposed to wrap the elements. Weird. I don’t see that in the Ecma spec.
I see what I messed up. I’ll revert that bit. > On Nov 28, 2019, at 8:20 PM, Greg Dove <greg.d...@gmail.com> wrote: > > You mean this (hopefully the xml angle brackets won't be mangled in your > view of this)? > > var xml:XML = <root/>; > xml.appendChild("test1"); > xml.appendChild("test2"); > xml.appendChild(<element/>); > xml.appendChild("test3"); > xml.appendChild("test4"); > > > trace(xml.toXMLString()) > output in swf: > <root> > test1 > test2 > <element/> > <element>test3</element> > <element>test4</element> > </root> > > > > On Fri, Nov 29, 2019 at 7:12 AM Harbs <harbs.li...@gmail.com> wrote: > >> I can’t imagine where <element>test3</element> comes from when you append >> “test3”... >> >> It should be a text node. No? >> >>> On Nov 28, 2019, at 8:09 PM, Greg Dove <greg.d...@gmail.com> wrote: >>> >>> OK, I will check it now. >>> >>> On Fri, Nov 29, 2019 at 7:08 AM Harbs <harbs.li...@gmail.com> wrote: >>> >>>> I’m getting two test failures on the XML tests. >>>> >>>> testXMLNormalize is failing, but the test looks wrong to me. Could you >>>> take a look? >>>> >>>>> On Nov 28, 2019, at 7:32 PM, Greg Dove <greg.d...@gmail.com> wrote: >>>>> >>>>> Oh - just saw this. Thanks. >>>>> Please ignore my comments in the other thread :). >>>>> >>>>> >>>>> On Fri, Nov 29, 2019 at 6:12 AM Harbs <harbs.li...@gmail.com> wrote: >>>>> >>>>>> I finally got the nerve together to update my local environment. >>>>>> >>>>>> The changes look pretty good. >>>>>> >>>>>> I made a couple of small changes. >>>>>> >>>>>> One fixes hasAttribute which somehow broke with your changes. >>>>>> >>>>>> The second is a small tweak to the memory optimizations. The memory >>>>>> footprint seems to be a bit smaller than what it used to be. >>>>>> >>>>>> Good work. :-) >>>>>> >>>>>> Harbs >>>>>> >>>>>>> On Oct 2, 2019, at 11:29 AM, Greg Dove <greg.d...@gmail.com> wrote: >>>>>>> >>>>>>> @harbs >>>>>>> >>>>>>> FYI in addition to some other stuff, I am close to pushing my updates >>>> to >>>>>>> XML. This should be in the next hour or so. >>>>>>> >>>>>>> I kept the QName caching pretty close to how you had it, with only >> some >>>>>>> minor changes. >>>>>>> I tried to do some extra memory optimization, and in theory it should >>>>>>> provide better results, but to be honest I don't have a good way to >>>>>> measure >>>>>>> this in the browser. I tried the Chrome performance.memory extensions >>>>>> but I >>>>>>> don't have much confidence in that given how much it varies between >>>>>> reloads >>>>>>> without changing anything else. The extra code changes I made were to >>>>>> make >>>>>>> the '_nodeKind' strings into String object references, so they only >>>> refer >>>>>>> to a single reference to a string instead of multiple copies of >>>>>> primitives. >>>>>>> That change is isolated to a single commit so can easily be reversed >> if >>>>>>> there is something not good about it... but all my local tests >> continue >>>>>> to >>>>>>> pass. I will get the new tests into RoyaleUnit in the coming days. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Sep 5, 2019 at 7:39 AM Greg Dove <greg.d...@gmail.com> >> wrote: >>>>>>> >>>>>>>> Yeah, I saw that ;) Don't worry, I am aware of it. >>>>>>>> >>>>>>>> My first goal is to make sure it works like it should, because that >>>>>> comes >>>>>>>> first, and then to optimize. I'll check the memory side of things >> and >>>>>> make >>>>>>>> sure it's at least the same as before. If you can point me to some >>>>>>>> publicly accessible large test cases that would be really helpful. I >>>>>> will >>>>>>>> work through that before I push anything. >>>>>>>> >>>>>>>> On Thu, Sep 5, 2019 at 7:26 AM Harbs <harbs.li...@gmail.com> wrote: >>>>>>>> >>>>>>>>> Heads up: >>>>>>>>> >>>>>>>>> I did some (on first blush) odd things in XML related to QNames. >>>> QNames >>>>>>>>> are pooled and many XML properties are not initialized by default. >>>> The >>>>>>>>> reason I did this was it avoided many MB of memory waste for >> complex >>>>>> XML. >>>>>>>>> Please don’t mess that up. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Harbs >>>>>>>>> >>>>>>>>>> On Sep 4, 2019, at 1:02 PM, Greg Dove <greg.d...@gmail.com> >> wrote: >>>>>>>>>> >>>>>>>>>> This is particularly for Harbs and Yishay, as I think you are both >>>> (or >>>>>>>>> both >>>>>>>>>> have been) using XML quite a bit. I have quite a few fixes >> coming. >>>>>> All >>>>>>>>>> with tests that match on swf and js. >>>>>>>>>> >>>>>>>>>> I am currently working to demonstrate proof of concept to a >>>>>> prospective >>>>>>>>>> client for migration of a Flex app. The app makes extensive use of >>>> e4x >>>>>>>>> and >>>>>>>>>> uses a bunch of features that I expect had not received attention >>>>>>>>>> previously, because they were originally either not working with >> the >>>>>>>>>> codebase I am porting, or i think some even caused errors in the >>>>>>>>> javascript >>>>>>>>>> output. >>>>>>>>>> >>>>>>>>>> So I have spent the last several days almost full time figuring >>>> things >>>>>>>>> out >>>>>>>>>> and working on fixes, between the compiler and emulation classes. >>>>>>>>>> All the previous XML tests continue to pass, but I have many more >>>> unit >>>>>>>>>> tests and fixes lined up for the following: >>>>>>>>>> >>>>>>>>>> namespace directives >>>>>>>>>> default xml namespace >>>>>>>>>> use namespace (multiple) >>>>>>>>>> >>>>>>>>>> a number of fixes for xml filtering, including: >>>>>>>>>> -'this' resolves correctly in filters that include external >>>> references >>>>>>>>> from >>>>>>>>>> the fitler expression to the 'this' scope >>>>>>>>>> -handles alternate ordering of comparisons between XML 'getters' >> and >>>>>>>>>> literals >>>>>>>>>> e.g. something.(name() = "cat") or something.("cat" = name()) >>>> (these >>>>>>>>> are >>>>>>>>>> the same) >>>>>>>>>> -it (will) now handle XML e4x references in nested function calls >>>>>> inside >>>>>>>>>> the filter, e.g. things like: >>>>>>>>>> e.g. >>>>>>>>>> var people:XML = <people> >>>>>>>>>> <person> >>>>>>>>>> <name>Bob</name> >>>>>>>>>> <age>32</age> >>>>>>>>>> </person> >>>>>>>>>> <person> >>>>>>>>>> <name>Joe</name> >>>>>>>>>> <age>46</age> >>>>>>>>>> </person> >>>>>>>>>> </people>; >>>>>>>>>> var findJoeByAge:Function = function (i:int):Boolean { >>>>>>>>>> return i > 40; >>>>>>>>>> }; >>>>>>>>>> people.person.(findJoeByAge(parseInt(age))).name >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I have lots more granular tests in QName, Namespace, and XML with >>>>>>>>> tuning to >>>>>>>>>> improve reliability. >>>>>>>>>> toXMLString XML node output also matches flash more correctly in >>>> what >>>>>> I >>>>>>>>>> have coming. >>>>>>>>>> >>>>>>>>>> One thing that I am trying to figure out, which I would appreciate >>>>>>>>> input on >>>>>>>>>> if someone has an answer: >>>>>>>>>> For the example: >>>>>>>>>> >>>>>>>>>> var feed:XML = new XML( >>>>>>>>>> '<feed xmlns:atom="http://www.w3.org/2005/Atom" >>>>>>>>>> xmlns:m="nothing">\n' + >>>>>>>>>> ' <link rel="no_namespace" >>>>>>>>>> href="blah/12321/domain/"/>\n' + >>>>>>>>>> '</feed>\n'); >>>>>>>>>> var atomSpace:Namespace = new Namespace(' >>>> http://www.w3.org/2005/Atom' >>>>>> ); >>>>>>>>>> >>>>>>>>>> Can anyone explain why this (in SWF, as a reference >> implementation): >>>>>>>>>> trace(feed.atomSpace::link.length()) >>>>>>>>>> trace(feed.atomSpace::link.toXMLString()) >>>>>>>>>> //output: >>>>>>>>>> 0 >>>>>>>>>> {empty string} >>>>>>>>>> is different to: >>>>>>>>>> trace(feed.child(new QName(atomSpace,'link')).length()) >>>>>>>>>> trace(feed.child(new QName(atomSpace,'link')).toXMLString()) >>>>>>>>>> //output: >>>>>>>>>> 1 >>>>>>>>>> <link rel="no_namespace" href="blah/12321/domain/" xmlns:atom=" >>>>>>>>>> http://www.w3.org/2005/Atom" xmlns:m="nothing"/> >>>>>>>>>> >>>>>>>>>> I had assumed the above cases would be the same, but the second >> one >>>> is >>>>>>>>>> behaving as if it has the default namespace included with the >>>>>> specified >>>>>>>>>> namespace in the QName matching (it does correctly match the >>>> namespace >>>>>>>>>> specifically as well -with e.g. <atom:link nodes where the prefix >>>> atom >>>>>>>>> is >>>>>>>>>> bound to the uri, but also seems to include link nodes with the >>>>>> default >>>>>>>>>> namespace, whether or not it is declared). I can accommodate this >>>>>>>>>> difference to make them behave the same, I just would like to >>>>>> understand >>>>>>>>>> the basis for the actual rules if anyone knows.... >>>>>>>>>> >>>>>>>>>> I should be in a position to push the updates this coming weekend >> I >>>>>>>>> think. >>>>>>>>> >>>>>>>>> >>>>>> >>>>>> >>>> >>>> >> >>