1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
/*
* $Id: jsobj.js,v 1.6.2.3 2010/04/06 16:46:12 source Exp $
*
* This file is part of the OpenLink Software Ajax Toolkit (OAT) project.
*
* Copyright (C) 2005-2010 OpenLink Software
*
* See LICENSE file for details.
*/
/*
OAT.JSObj.walk(obj,callback)
OAT.JSObj.getStringIndexes(obj)
OAT.JSObj.getAllValues(obj,property)
OAT.JSObj.createFromXmlNode(node)
*/
OAT.JSObj = {
walk:function(obj,callback) { /* callback(key,value) */
if (typeof obj != "object") { return; }
if (obj instanceof Array) {
/* array */
for (var i=0;i<obj.length;i++) {
callback(i,obj[i]);
OAT.JSObj.walk(obj[i],callback);
}
} else {
/* object */
for (var p in obj) {
callback(p,obj[p]);
OAT.JSObj.walk(obj[p],callback);
}
}
}, /* JSObj.walk() */
getStringIndexes:function(obj) {
var list = [];
var callback = function(key,value) {
if (typeof(value) != "object") { list.push(key); }
}
OAT.JSObj.walk(obj,callback);
return list;
},
getAllValues:function(obj,property) {
var list = [];
var callback = function(key,value) {
if (typeof(value) != "object" && key == property) { list.push(value); }
}
OAT.JSObj.walk(obj,callback);
return list;
},
createFromXmlNode:function(node) {
var childNodes = [];
for (var i=0;i<node.childNodes.length;i++) {
var n = node.childNodes[i];
if (n.nodeType == 1) {
childNodes.push(OAT.JSObj.createFromXmlNode(n));
}
}
if (childNodes.length) {
var result = childNodes;
} else {
var result = OAT.Xml.textValue(node);
}
var o = {};
o[node.tagName] = result;
return o;
}
}
|