lines = {
let lines = slashes
.map((c, i, arr) => {
return { char: c };
})
.reduce(
(acc, cur, index, arr) => {
const { cursor, prev } = acc;
const offset = cur.char !== prev ? 0 : getOffset(cur.char);
const nextCursor = cursor + offset;
return {
cursor: nextCursor,
prev: cur.char,
lines: [...acc.lines, { ...cur, offset: nextCursor }]
};
},
{ cursor: 0, prev: null, lines: [] }
);
lines = lines.lines;
let min = _.minBy(lines, (l) => l.offset);
let minOffset = min != null ? min.offset : 0;
minOffset = minOffset < 0 ? -1 * minOffset : 0;
lines = lines.map((l) => ({ ...l, offset: l.offset + minOffset }));
return lines;
}