parent $foundation object $input var $root child_index 0 var $root fertile 1 var $root manager $input var $root owners [$input] var $root writable [$] var $root readable ['parameters, 'methods, 'code] var $root trusted [] var $root owned [$input] var $root inited 1 var $input receiving 0 var $input input 0 var $root dbref 'input method finish_receiving var oreceiving, oinput; // called by $input_parser.parse when one is finished. .perms(sender(), 'parser); // we have to reset the parameter before we run it's values. oreceiving = receiving; oinput = input; .reset_input(); (oreceiving[2]).(oreceiving[3])(oinput, @sublist(oreceiving, 4)); . method start_receiving arg lines, obj, method, [args]; // called by this().read() or this().read_line() .perms(sender(), 'this); receiving = [lines, obj, method, @args]; input = []; .add_parser($input_parser, 'first); . method reset_input // resets values, for aborting or other emergency reset. .perms(sender(), 'parser); receiving = 0; input = 0; .del_parser($input_parser); . method new_line arg line; // called by $input_parser.parse with a new string to be added. .perms(sender(), 'parser); input = [@input, line]; . method lines // returns how many lines the user wishes to read. return receiving[1]; . method read arg method, [args]; // read input lines from the user. // returns sender().method(["input", "lines"], @args); if (receiving) throw(~wait, "User is currently receiving input."); if (type(method) != 'symbol) throw(~type, "Method reference must be given as a symbol."); // looks ok. .start_receiving('terminated, sender(), method, @args); . method prompt arg prompt, method, [args]; .read_line(method, @args); // .tell(prompt); .non_terminated_tell(prompt); . method read_line arg method, [args]; // read input lines from the user. // returns sender().method(["input", "lines"], @args); if (receiving) throw(~wait, "User is currently receiving input."); if (type(method) != 'symbol) throw(~type, "Method reference must be given as a symbol."); // looks ok. .start_receiving('one, sender(), method, @args); .