asdoc/org/apache/royale/utils/MXMLDataInterpreter.js (253 lines of code) (raw):
/**
* Generated by Apache Royale Compiler from org/apache/royale/utils/MXMLDataInterpreter.as
* org.apache.royale.utils.MXMLDataInterpreter
*
* @fileoverview
*
* @suppress {missingRequire|checkTypes|accessControls}
*/
goog.provide('org.apache.royale.utils.MXMLDataInterpreter');
/* Royale Dependency List: org.apache.royale.core.IBead,org.apache.royale.core.IChild,org.apache.royale.core.IContainer,org.apache.royale.core.IDocument,org.apache.royale.core.IMXMLDocument,org.apache.royale.core.IParent,org.apache.royale.core.IStrand,org.apache.royale.utils.Language*/
/**
* Constructor. All methods are static so should not be instantiated.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.0
* @constructor
*/
org.apache.royale.utils.MXMLDataInterpreter = function() {
;
};
/**
* Generates an object based on the encoded data.
*
* @asparam document The MXML document. If the object has an id
* it will be assigned in this document in this method.
* @asparam data The encoded data.
* @asreturn The object.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.9
* @royaleignorecoercion Array
* @royaleignorecoercion String
* @nocollapse
* @param {Object} document
* @param {Array} data
* @return {Object}
*/
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject = function(document, data) {
var /** @type {number} */ j = 0;
var /** @type {number} */ m = 0;
var /** @type {number} */ i = 0;
var /** @type {Object} */ cls = data[i++];
var /** @type {Object} */ comp = new cls();
if (org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IStrand))
org.apache.royale.utils.MXMLDataInterpreter.initializeStrandBasedObject(document, null, comp, data, i); else {
//var /** @type {number} */ m = 0;
//var /** @type {number} */ j = 0;
var /** @type {string} */ name;
var /** @type {*} */ simple;
var /** @type {Object} */ value;
var /** @type {string} */ id;
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
if (name == "id")
id = value;
if (name == "document" && !comp.document)
comp.document = document;
else if (name == "_id")
id = value; else if (name == "id") {
try {
comp["id"] = value;
} catch (e) {
}
}
else
comp[name] = value;
}
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
comp.setStyle(name, value);
}
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
value = data[i++];
comp.addEventListener(name, goog.bind(org.apache.royale.utils.Language.as(value, Function), document));
}
if (id)
document[id] = comp;
if (org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IDocument))
comp.setDocument(document, id);
}
return comp;
};
/**
* Generates an Array of objects based on the encoded data.
*
* @asparam document The MXML document. If the object has an id
* it will be assigned in this document in this method.
* @asparam parent The parent for any display objects encoded in the array.
* @asparam data The encoded data.
* @asreturn The Array.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.0
* @nocollapse
* @param {Object} document
* @param {org.apache.royale.core.IParent} parent
* @param {Array} data
* @return {Array}
*/
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray = function(document, parent, data) {
var /** @type {Array} */ comps = [];
var /** @type {number} */ n = (data.length) >> 0;
var /** @type {number} */ i = 0;
while (i < n) {
var /** @type {Object} */ cls = data[i++];
var /** @type {Object} */ comp = new cls();
i = org.apache.royale.utils.MXMLDataInterpreter.initializeStrandBasedObject(document, parent, comp, data, i);
comps.push(comp);
}
return comps;
};
/**
* @royaleignorecoercion Array
* @royaleignorecoercion Function
* @royaleignorecoercion String
* @royaleignorecoercion org.apache.royale.core.IChild
* @royaleignorecoercion org.apache.royale.core.IParent
* @royaleignorecoercion org.apache.royale.core.IStrand
* @royaleignorecoercion org.apache.royale.core.IBead
* @private
* @param {Object} document
* @param {Object} parent
* @param {Object} comp
* @param {Array} data
* @param {number} i
* @return {number}
*/
org.apache.royale.utils.MXMLDataInterpreter.initializeStrandBasedObject = function(document, parent, comp, data, i) {
var /** @type {number} */ j = 0;
var /** @type {number} */ m = 0;
//var /** @type {number} */ m = 0;
//var /** @type {number} */ j = 0;
var /** @type {string} */ name;
var /** @type {*} */ simple;
var /** @type {Object} */ value;
var /** @type {string} */ id = null;
m = (data[i++]) >> 0;
if (m > 0 && data[0] == "model") {
m--;
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, parent, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
comp[name] = value;
if (org.apache.royale.utils.Language.is(value, org.apache.royale.core.IBead) && org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IStrand))
comp.addBead(value);
}
var /** @type {number} */ beadOffset = (i + (m - 1) * 3) >> 0;
if (m > 0 && data[beadOffset] == "beads") {
m--;
}
else
beadOffset = -1;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
if (name == "id")
id = value;
if (name == "document" && !comp.document)
comp.document = document;
else if (name == "_id")
id = value; else if (name == "id") {
try {
comp["id"] = value;
} catch (e) {
}
}
else
comp[name] = value;
}
if (beadOffset > -1) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
comp[name] = value;
}
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(document, value);
comp.setStyle(name, value);
}
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
value = data[i++];
comp.addEventListener(name, goog.bind( /** @type {Function} */ (value), document));
}
if (id)
document[id] = comp;
if (org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IDocument))
comp.setDocument(document, id);
var /** @type {boolean} */ knownIMXMLDoc;
var /** @type {Array} */ children = data[i++];
if (children && org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IMXMLDocument)) {
comp.setMXMLDescriptor(document, children);
knownIMXMLDoc = true;
}
if (parent && org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IChild))
parent.addElement(comp, !org.apache.royale.utils.Language.is(parent, org.apache.royale.core.IContainer));
if (children) {
if (!(knownIMXMLDoc || org.apache.royale.utils.Language.is(comp, org.apache.royale.core.IMXMLDocument))) {
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLInstances(document, comp, children);
}
}
return i;
};
/**
* Generates the instances of objects in an MXML document based on the encoded data.
*
* @asparam document The MXML document. If the object has an id
* it will be assigned in this document in this method.
* @asparam parent The parent for any display objects encoded in the array.
* @asparam data The encoded data.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.9
* @royaleignorecoercion org.apache.royale.core.IContainer
* @nocollapse
* @param {Object} document
* @param {org.apache.royale.core.IParent} parent
* @param {Array} data
*/
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLInstances = function(document, parent, data) {
if (data != null) {
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(document, parent, data);
}
if (org.apache.royale.utils.Language.is(parent, org.apache.royale.core.IContainer)) {
parent.childrenAdded();
}
};
/**
* Generates the properties of the top-level object in an MXML document
* based on the encoded data. This basically means setting the attributes
* found on the tag and child tags that aren't in the default property.
*
* @asparam host The MXML document. If the object has an id
* it will be assigned in this document in this method.
* @asparam data The encoded data.
*
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.9
* @royaleignorecoercion Array
* @royaleignorecoercion Function
* @royaleignorecoercion String
* @nocollapse
* @param {Object} host
* @param {Array} data
*/
org.apache.royale.utils.MXMLDataInterpreter.generateMXMLProperties = function(host, data) {
var /** @type {number} */ j = 0;
var /** @type {number} */ m = 0;
if (!data)
return;
var /** @type {number} */ i = 0;
//var /** @type {number} */ m = 0;
//var /** @type {number} */ j = 0;
var /** @type {string} */ name;
var /** @type {*} */ simple;
var /** @type {Object} */ value;
var /** @type {string} */ id = null;
m = (data[i++]) >> 0;
var /** @type {number} */ beadOffset = (i + (m - 1) * 3) >> 0;
if (m > 0 && data[beadOffset] == "beads") {
m--;
}
else
beadOffset = -1;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(host, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(host, value);
if (name == "id")
id = value;
if (name == "_id")
id = value;
else
host[name] = value;
}
if (beadOffset > -1) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(host, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(host, value);
host[name] = value;
}
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
simple = data[i++];
value = data[i++];
if (simple == null)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLArray(host, null, value);
else if (simple == false)
value = org.apache.royale.utils.MXMLDataInterpreter.generateMXMLObject(host, value);
host[name] = value;
}
m = (data[i++]) >> 0;
for (j = 0; j < m; j++) {
name = org.apache.royale.utils.Language.string(data[i++]);
value = data[i++];
host.addEventListener(name, goog.bind( /** @type {Function} */ (value), host));
}
};
/**
* Metadata
*
* @type {Object.<string, Array.<Object>>}
*/
org.apache.royale.utils.MXMLDataInterpreter.prototype.ROYALE_CLASS_INFO = { names: [{ name: 'MXMLDataInterpreter', qName: 'org.apache.royale.utils.MXMLDataInterpreter', kind: 'class' }] };
/**
* Reflection
*
* @return {Object.<string, Function>}
*/
org.apache.royale.utils.MXMLDataInterpreter.prototype.ROYALE_REFLECTION_INFO = function () {
return {
methods: function () {
return {
'MXMLDataInterpreter': { type: '', declaredBy: 'org.apache.royale.utils.MXMLDataInterpreter'},
'|generateMXMLObject': { type: 'Object', declaredBy: 'org.apache.royale.utils.MXMLDataInterpreter', parameters: function () { return [ 'Object', false ,'Array', false ]; }},
'|generateMXMLArray': { type: 'Array', declaredBy: 'org.apache.royale.utils.MXMLDataInterpreter', parameters: function () { return [ 'Object', false ,'org.apache.royale.core.IParent', false ,'Array', false ]; }},
'|generateMXMLInstances': { type: 'void', declaredBy: 'org.apache.royale.utils.MXMLDataInterpreter', parameters: function () { return [ 'Object', false ,'org.apache.royale.core.IParent', false ,'Array', false ]; }},
'|generateMXMLProperties': { type: 'void', declaredBy: 'org.apache.royale.utils.MXMLDataInterpreter', parameters: function () { return [ 'Object', false ,'Array', false ]; }}
};
}
};
};
/**
* @const
* @type {number}
*/
org.apache.royale.utils.MXMLDataInterpreter.prototype.ROYALE_COMPILE_FLAGS = 10;
//# sourceMappingURL=./MXMLDataInterpreter.js.map