new object $buffer: $libraries;
var $root inited = 1;
public method .break_lines() {
arg buf;
var i, sub, out;
// break a buffer by \r or \n but keep its sub contents as buffers
out = [];
while ((i = 10 in buf)) {
sub = subbuf(buf, 1, i - 1);
buf = subbuf(buf, i + 1);
while ((i = 13 in sub)) {
if (buflen(sub) == i)
sub = subbuf(sub, 1, i - 1);
else
sub = subbuf(sub, 1, i - 1) + subbuf(sub, i + 1);
}
out += [sub];
}
if (buf) {
while ((i = 13 in buf)) {
if (buflen(buf) == i)
buf = subbuf(buf, 1, i - 1);
else
buf = subbuf(buf, 1, i - 1) + subbuf(buf, i + 1);
}
if (buf)
out += [buf];
}
return out;
};
public method .from_list() {
arg list;
var buf, x;
buf = `[];
for x in [1 .. list.length()]
buf = buf.add(list[x]);
return buf;
};
public method .to_list() {
arg buf;
var idx, list;
list = [];
for idx in [1 .. buf.length()]
list = list + [buf[idx]];
return list;
};