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.
>>>
>>
>