8398c9048d
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
55 lines
No EOL
1.7 KiB
JavaScript
Executable file
55 lines
No EOL
1.7 KiB
JavaScript
Executable file
dojo.provide("dojox.embed.flashVars");
|
|
|
|
dojo.mixin(dojox.embed.flashVars, {
|
|
// summary
|
|
// Handles flashvar serialization
|
|
// Converting complex objects into a simple, clear string that can be appended
|
|
// to the swf as a query: myMovie.swf?flashvars=foo.
|
|
// Note this needs to work with the SWF, which must know what variables to expect.
|
|
// Therefore this is something of an "internal" class - unless you know how to
|
|
// modify or create SWFs.
|
|
//
|
|
// description:
|
|
// JSON could be done, but Deft does not yet have a JSON parser, and quotes are
|
|
// very problematic since Flash cannot use eval(); JSON parsing was successful
|
|
// when it was fully escaped, but that made it very large anyway. flashvar
|
|
// serialization at most is 200% larger than JSON.
|
|
//
|
|
// See:
|
|
// Deft/common/flashVars.as
|
|
//
|
|
serialize: function(/* String */n, /*Object*/o){
|
|
// summary:
|
|
// Key method. Serializes an object.
|
|
// n:String
|
|
// The name for the object, such as: "button"
|
|
// o:Object
|
|
// The object to serialize
|
|
//
|
|
var esc = function(val){
|
|
// have to encode certain characters that indicate an object
|
|
if(typeof val=="string"){
|
|
val = val.replace(/;/g,"_sc_");
|
|
val = val.replace(/\./g,"_pr_");
|
|
val = val.replace(/\:/g,"_cl_");
|
|
//val = escape(val);
|
|
}
|
|
return val;
|
|
};
|
|
var df = dojox.embed.flashVars.serialize;
|
|
var txt = "";
|
|
if(dojo.isArray(o)){
|
|
for(var i=0;i<o.length;i++){
|
|
txt += df(n+"."+i, esc(o[i]))+";";
|
|
}
|
|
return txt.replace(/;{2,}/g,";");
|
|
}else if(dojo.isObject(o)){
|
|
for(var nm in o){
|
|
txt += df(n+"."+nm, esc(o[nm]))+";";
|
|
}
|
|
return txt.replace(/;{2,}/g,";");
|
|
}
|
|
// Dev note: important that there is no double semi-colons
|
|
return n+":"+o; // String
|
|
}
|
|
}); |