function parse_BrtBeginComment(data) { var out = {}; out.iauthor = data.read_shift(4); var rfx = parse_UncheckedRfX(data, 16); out.rfx = rfx.s; out.ref = encode_cell(rfx.s); data.l += 16; return out;}function write_BrtBeginComment(data, o) { if(o == null) o = new_buf(36); o.write_shift(4, data[1].iauthor); write_UncheckedRfX((data[0]), o); o.write_shift(4, 0); o.write_shift(4, 0); o.write_shift(4, 0); o.write_shift(4, 0); return o;}
var parse_BrtCommentAuthor = parse_XLWideString;function write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }
function parse_comments_bin(data, opts) { var out = []; var authors = []; var c = {}; var pass = false; recordhopper(data, function hopper_cmnt(val, R_n, RT) { switch(RT) { case 0x0278: authors.push(val); break; case 0x027B: c = val; break; case 0x027D: c.t = val.t; c.h = val.h; c.r = val.r; break; case 0x027C: c.author = authors[c.iauthor]; delete (c).iauthor; if(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break; if(!c.t) c.t = ""; delete c.rfx; out.push(c); break;
case 0x0C00: break;
case 0x0023: pass = true; break; case 0x0024: pass = false; break; case 0x0025: break; case 0x0026: break;
default: if((R_n||"").indexOf("Begin") > 0){} else if((R_n||"").indexOf("End") > 0){} else if(!pass || opts.WTF) throw new Error("Unexpected record " + RT + " " + R_n); } }); return out;}
function write_comments_bin(data) { var ba = buf_array(); var iauthor = []; write_record(ba, "BrtBeginComments");
write_record(ba, "BrtBeginCommentAuthors"); data.forEach(function(comment) { comment[1].forEach(function(c) { if(iauthor.indexOf(c.a) > -1) return; iauthor.push(c.a.slice(0,54)); write_record(ba, "BrtCommentAuthor", write_BrtCommentAuthor(c.a)); }); }); write_record(ba, "BrtEndCommentAuthors");
write_record(ba, "BrtBeginCommentList"); data.forEach(function(comment) { comment[1].forEach(function(c) { c.iauthor = iauthor.indexOf(c.a); var range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])}; write_record(ba, "BrtBeginComment", write_BrtBeginComment([range, c])); if(c.t && c.t.length > 0) write_record(ba, "BrtCommentText", write_BrtCommentText(c)); write_record(ba, "BrtEndComment"); delete c.iauthor; }); }); write_record(ba, "BrtEndCommentList");
write_record(ba, "BrtEndComments"); return ba.end();}