Я вижу в исходниках строку:
root.stack.push(newrecord);
То есть функция
makeRecord
всегда добавляет новую запись в корень.
Я бы добавил ещё один аргумент
parentGroup
в
var makeRecord = function(name,value, parentGroup) {
var newrecord = new record();
newrecord.name=name;
newrecord.value=value;
if(parentGroup === undefined) {
parentGroup = root;
}
parentGroup.stack.push(newrecord);
}
Аналогично подправить функцию
makeGroup
.
Пользоваться этими функциями можно будет так:
makeRecord('first record','some text');
makeGroup('first group');
makeRecord('second record','yet another text');
makeGroup('second group', function(parentGroup) {
makeRecord('first record in second group','how can i do it?', parentGroup);
});
ИМХО, анализировать стек вызовов или заводить какие-то дополнительные глобальные переменные — это плохой вариант.