parent $frob_class
object $read_parser
var $root dbref 'read_parser
var $root child_index 0
var $root fertile 0
var $root manager $read_parser
var $root owned [$read_parser]
var $root owners [$]
var $root writable []
var $root readable ['parameters, 'methods, 'code]
var $root inited 1
method parse_line
arg dict, line;
var cmd;
if (!line) {
// we have to do this as such, because of logic (shrug)
dict = dict.add('status, 'not_done);
return dict.add_elem('lines, line);
} else if ((line[1]) == ".") {
if ((strlen(line) > 1) && ((line[2]) == "."))
line = substr(line, 2);
else if (strlen(line) == 1)
return dict.add('status, 'done);
} else if ((line[1]) == ">") {
if ((strlen(line) > 1) && ((line[2]) == ">")) {
line = substr(line, 2);
} else {
dict = dict.add('command, substr(line, 2));
return dict.add('status, 'pass_command);
}
} else if (line == "@abort") {
return dict.add('status, 'abort);
}
dict = dict.add('status, 'not_done);
return dict.add_elem('lines, line);
.
method new
arg task_id, count;
return <this(), #[['lines, []], ['status, 'not_done], ['count, count], ['task_id, task_id]]>;
.
method parse
arg dict, line;
var line, result;
// checks the incoming line to see if its a keeper, or a command.
if ((dict['count]) == 'one) {
dict = dict.add_elem('lines, line);
return <this(), dict_add(dict, 'status, 'done)>;
} else {
return <this(), .parse_line(dict, line)>;
}
.
method status
arg dict;
return dict['status];
.
method task_id
arg dict;
return dict['task_id];
.
method lines
arg dict;
return dict['lines];
.
method command
arg dict;
return (| dict['command] |) || "";
.
method add
arg dict, [args];
return <this(), (> dict.add(@args) <)>;
.