From 94f550767171f9986b84825de1f6d01c9e690873 Mon Sep 17 00:00:00 2001 From: Richard Hansen Date: Sat, 2 Oct 2021 18:17:11 -0400 Subject: [PATCH] Changeset: Improve `copyOp()` API Use `Object.assign()` to implement `copyOp()`, which simplifies the code and provides a return value. Also make the second op optional. --- src/static/js/Changeset.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/static/js/Changeset.js b/src/static/js/Changeset.js index 9dc101701..4d3c30db5 100644 --- a/src/static/js/Changeset.js +++ b/src/static/js/Changeset.js @@ -205,14 +205,10 @@ exports.newOp = (optOpcode) => ({ * Copies op1 to op2 * * @param {Op} op1 - src Op - * @param {Op} op2 - dest Op + * @param {Op} [op2] - dest Op. If not given, a new Op is used. + * @returns {Op} `op2` */ -const copyOp = (op1, op2) => { - op2.opcode = op1.opcode; - op2.chars = op1.chars; - op2.lines = op1.lines; - op2.attribs = op1.attribs; -}; +const copyOp = (op1, op2 = exports.newOp()) => Object.assign(op2, op1); /** * Serializes a sequence of Ops.