For literals, yes, we’d for the most part just pass the whole thing as a string
to the constructor. The only exception I can think of is bracket notation:
var foo:XML = <node><subnode attr={myAttr}>foo</subnode></node>;
would have to become:
var foo:XML = new XML('<node><subnode attr="‘+myAttr+’">foo</subnode></node>’);
Wrapping the xml in a dummy node is a good idea. I like that. Thanks!
On Jan 4, 2016, at 6:08 PM, Alex Harui <[email protected]> wrote:
> Looks like there currently isn't any XML Literal handling for AS -> JS.
>
> For AS code like:
>
> var foo:XML = <node><subnode attr="1">foo</subnode></node>;
>
> What do you want the output to be? Shouldn't we just pass the whole thing
> to the XML() function?
>
> var foo = new XML('<node><subnode attr="1">foo</subnode></node>');
>
> Or do you want something else?
>
> For XMLList literals, can you just wrap it in a dummy node and let JS
> parse it?
>
> var bar:XMLList = new XMLList("<node attr='1' /><node attr='2' />");
>
> Is that the same as:
>
> var bar:XMLList = new XML("<dummy><node attr='1' /><node attr='2'
> /></dummy>").children();
>
> -Alex
>
> On 1/4/16, 8:00 AM, "Harbs" <[email protected]> wrote:
>
>> Here’s an implementation question:
>>
>> Apparently, it’s possible to pass a string into an XMLList constructor to
>> create an XMLList of multiple XML objects. I’m not sure of the best way
>> to handle this.
>>
>> I can walk the contents of the string and split the string into multiple
>> XML strings and create separate XML objects from that, but I’m concerned
>> that it might be error-prone. Does anyone know of a cheap method of
>> parsing a string into multiple nodes in standard javascript?
>>
>> On Jan 4, 2016, at 5:06 PM, Harbs <[email protected]> wrote:
>>
>>> Another issue:
>>>
>>> XML literals and angle brackets.
>>>
>>> Is the compiler handling xml literals at all now? I think angle bracket
>>> notation need to be converted to string concatenation as well.
>>>
>>> On Dec 31, 2015, at 5:21 PM, Alex Harui <[email protected]> wrote:
>>>
>>>> Sounds reasonable. Do you want to try to make the changes to the
>>>> compiler
>>>> yourself?
>>>>
>>>> I think you can just copy the pattern in this commit:
>>>> 22fa6defa3ed2896de4eba1a5a1b316e1e3c2b0f
>>>> In these files: BinaryOperatorEmitter.java and
>>>> TestFlexJSGlobalClasses.java
>>>>
>>>> -Alex
>>>>
>>>> On 12/31/15, 1:02 AM, "Harbs" <[email protected]> wrote:
>>>>
>>>>> Another question:
>>>>>
>>>>> How should we handle equality? According to the E4X spec, if regular
>>>>> equality is used, it returns true if the structure of the XML matches
>>>>> even if the objects are different objects. So:
>>>>>
>>>>> var xml1 = <foo><baz /></foo>;
>>>>> var xml2 = <foo><baz/></foo>;
>>>>> xml1 == xml2 // true
>>>>> xml1 === xml2 // false
>>>>> xml1 === xml1 // true
>>>>> var xml1 = <foo><baz /></foo>;
>>>>> var xml2 = <foo><baz name="baz"/></foo>;
>>>>> xml1 == xml2 // false
>>>>> xml1 === xml2 // false
>>>>> xml1 === xml1 // true
>>>>>
>>>>> I’m thinking I should add an equals(xml) method which you’d map to the
>>>>> “==" operator.
>>>>
>>>
>>
>