New file |
0,0 → 1,126 |
/* |
Copyright (c) 2004-2006, The Dojo Foundation |
All Rights Reserved. |
|
Licensed under the Academic Free License version 2.1 or above OR the |
modified BSD license. For more information on Dojo licensing, see: |
|
http://dojotoolkit.org/community/licensing.shtml |
*/ |
|
dojo.provide("dojo.widget.html.stabile"); |
dojo.widget.html.stabile = {_sqQuotables:new RegExp("([\\\\'])", "g"), _depth:0, _recur:false, depthLimit:2}; |
dojo.widget.html.stabile.getState = function (id) { |
dojo.widget.html.stabile.setup(); |
return dojo.widget.html.stabile.widgetState[id]; |
}; |
dojo.widget.html.stabile.setState = function (id, state, isCommit) { |
dojo.widget.html.stabile.setup(); |
dojo.widget.html.stabile.widgetState[id] = state; |
if (isCommit) { |
dojo.widget.html.stabile.commit(dojo.widget.html.stabile.widgetState); |
} |
}; |
dojo.widget.html.stabile.setup = function () { |
if (!dojo.widget.html.stabile.widgetState) { |
var text = dojo.widget.html.stabile._getStorage().value; |
dojo.widget.html.stabile.widgetState = text ? dj_eval("(" + text + ")") : {}; |
} |
}; |
dojo.widget.html.stabile.commit = function (state) { |
dojo.widget.html.stabile._getStorage().value = dojo.widget.html.stabile.description(state); |
}; |
dojo.widget.html.stabile.description = function (v, showAll) { |
var depth = dojo.widget.html.stabile._depth; |
var describeThis = function () { |
return this.description(this, true); |
}; |
try { |
if (v === void (0)) { |
return "undefined"; |
} |
if (v === null) { |
return "null"; |
} |
if (typeof (v) == "boolean" || typeof (v) == "number" || v instanceof Boolean || v instanceof Number) { |
return v.toString(); |
} |
if (typeof (v) == "string" || v instanceof String) { |
var v1 = v.replace(dojo.widget.html.stabile._sqQuotables, "\\$1"); |
v1 = v1.replace(/\n/g, "\\n"); |
v1 = v1.replace(/\r/g, "\\r"); |
return "'" + v1 + "'"; |
} |
if (v instanceof Date) { |
return "new Date(" + d.getFullYear + "," + d.getMonth() + "," + d.getDate() + ")"; |
} |
var d; |
if (v instanceof Array || v.push) { |
if (depth >= dojo.widget.html.stabile.depthLimit) { |
return "[ ... ]"; |
} |
d = "["; |
var first = true; |
dojo.widget.html.stabile._depth++; |
for (var i = 0; i < v.length; i++) { |
if (first) { |
first = false; |
} else { |
d += ","; |
} |
d += arguments.callee(v[i], showAll); |
} |
return d + "]"; |
} |
if (v.constructor == Object || v.toString == describeThis) { |
if (depth >= dojo.widget.html.stabile.depthLimit) { |
return "{ ... }"; |
} |
if (typeof (v.hasOwnProperty) != "function" && v.prototype) { |
throw new Error("description: " + v + " not supported by script engine"); |
} |
var first = true; |
d = "{"; |
dojo.widget.html.stabile._depth++; |
for (var key in v) { |
if (v[key] == void (0) || typeof (v[key]) == "function") { |
continue; |
} |
if (first) { |
first = false; |
} else { |
d += ", "; |
} |
var kd = key; |
if (!kd.match(/^[a-zA-Z_][a-zA-Z0-9_]*$/)) { |
kd = arguments.callee(key, showAll); |
} |
d += kd + ": " + arguments.callee(v[key], showAll); |
} |
return d + "}"; |
} |
if (showAll) { |
if (dojo.widget.html.stabile._recur) { |
var objectToString = Object.prototype.toString; |
return objectToString.apply(v, []); |
} else { |
dojo.widget.html.stabile._recur = true; |
return v.toString(); |
} |
} else { |
throw new Error("Unknown type: " + v); |
return "'unknown'"; |
} |
} |
finally { |
dojo.widget.html.stabile._depth = depth; |
} |
}; |
dojo.widget.html.stabile._getStorage = function () { |
if (dojo.widget.html.stabile.dataField) { |
return dojo.widget.html.stabile.dataField; |
} |
var form = document.forms._dojo_form; |
return dojo.widget.html.stabile.dataField = form ? form.stabile : {value:""}; |
}; |
|