Method code for $buffer.break_lines()

[Turn off line numbering]
  1: arg buf;
  2: var i, sub, out;
  3: 
  4: // break a buffer by 
 or 
 but keep its sub contents as buffers
  5: out = [];
  6: while ((i = 10 in buf)) {
  7:     sub = subbuf(buf, 1, i - 1);
  8:     buf = subbuf(buf, i + 1);
  9:     while ((i = 13 in sub)) {
 10:         if (buflen(sub) == i)
 11:             sub = subbuf(sub, 1, i - 1);
 12:         else
 13:             sub = subbuf(sub, 1, i - 1) + subbuf(sub, i + 1);
 14:     }
 15:     out += [sub];
 16: }
 17: if (buf) {
 18:     while ((i = 13 in buf)) {
 19:         if (buflen(buf) == i)
 20:             buf = subbuf(buf, 1, i - 1);
 21:         else
 22:             buf = subbuf(buf, 1, i - 1) + subbuf(buf, i + 1);
 23:     }
 24:     if (buf)
 25:         out += [buf];
 26: }
 27: return out;

// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit

Tlon