You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Harbs <ha...@gmail.com> on 2017/07/23 13:16:55 UTC

[FlexJS]E4X filter functions

I found a case where Flacon is not producing useable output for E4X filters:

var folderFolders:XMLList = assetXML.folder.(key.indexOf(folder.key) == 0);
var folderImages:XMLList = assetXML.image.(key.indexOf(folder.key) == 0);

Outputs:
var /** @type {XMLList} */ folderFolders = this.assetXML.child('folder').filter(function(node){return (node.key.indexOf(folder.key) == 0)});
var /** @type {XMLList} */ folderImages = this.assetXML.child('image').filter(function(node){return (node.key.indexOf(folder.key) == 0)});


It needs to output this instead:
var /** @type {XMLList} */ folderFolders = this.assetXML.child('folder').filter(function(node){return (node.child("key").indexOf(folder.key) == 0)});
var /** @type {XMLList} */ folderImages = this.assetXML.child('image').filter(function(node){return (node.child("key").indexOf(folder.key) == 0)});

This seems kind of difficult. For example, the following is correct, so both situations would need to be handled:

if(name && runtimeQualifiers.(text().toString().indexOf("image_name") == 0).length()){
	qs.appendChild(<qualifier><key>image_name</key><value>{name}</value></qualifier>);
}
if(keywords && runtimeQualifiers.(text().toString().indexOf("image_keywords") == 0).length()){
	qs.appendChild(<qualifier><key>image_keywords</key><value>{keywords}</value></qualifier>);
}

Correctly outputs:

if (name && this.runtimeQualifiers.filter(function(node){return (node.text().toString().indexOf("image_name") == 0)}).length()) {
qs.appendChild(new XML( '<qualifier><key>image_name</key><value>' + name + '</value></qualifier>'));
}
if (keywords && this.runtimeQualifiers.filter(function(node){return (node.text().toString().indexOf("image_keywords") == 0)}).length()) {
qs.appendChild(new XML( '<qualifier><key>image_keywords</key><value>' + keywords + '</value></qualifier>'));
}

The work-around is to use “child(‘key)” instead of “key” in the filter, but if this valid use of E4X could be worked out, that would be great.

Harbs