Implement HopObject.set() function compatible to Helma 1.2
This commit is contained in:
parent
c9efe6d8ea
commit
c1ddf495ca
1 changed files with 34 additions and 0 deletions
|
@ -309,6 +309,40 @@ public class HopObject extends ScriptableObject implements Wrapper {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a property on this HopObject
|
||||
*
|
||||
* @param id The name/id or index, depending if the argument is a String or Number.
|
||||
*
|
||||
* @return ...
|
||||
*/
|
||||
public boolean jsFunction_set(Object id, Object value) {
|
||||
if (id == Undefined.instance || value == Undefined.instance) {
|
||||
throw new RuntimeException("HopObject.set() called with wrong number of arguments");
|
||||
}
|
||||
if ((node == null)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (id instanceof Number) {
|
||||
|
||||
if (!(value instanceof HopObject)) {
|
||||
throw new RuntimeException("Can only set HopObjects as child objects in HopObject.set()");
|
||||
}
|
||||
|
||||
int idx = (((Number) id).intValue());
|
||||
INode n = ((HopObject) value).getNode();
|
||||
|
||||
node.addNode(n, idx);
|
||||
|
||||
} else if (id instanceof String) {
|
||||
put(id.toString(), this, value);
|
||||
} else {
|
||||
throw new RuntimeException("Invalid type for id argument in HopObject.set(): "+id);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue