From 4985c12f7a7e3e07c6c3809822499bec6e9769fc Mon Sep 17 00:00:00 2001 From: Jessica Kerr Date: Sun, 20 Jan 2019 12:05:00 -0800 Subject: [PATCH] Accept undefined from childrenFn --- index.d.ts.map | 2 +- index.js | 3 ++- index.js.map | 2 +- index.ts | 3 ++- test/stringifyTree.test.js | 8 ++++++++ test/stringifyTree.test.js.map | 2 +- test/stringifyTree.test.ts | 9 +++++++++ 7 files changed, 24 insertions(+), 5 deletions(-) diff --git a/index.d.ts.map b/index.d.ts.map index 7138d15..c2bc7f0 100644 --- a/index.d.ts.map +++ b/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAqBnG"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAsBnG"} \ No newline at end of file diff --git a/index.js b/index.js index eb0e6ea..61a3c7b 100644 --- a/index.js +++ b/index.js @@ -18,7 +18,8 @@ function stringifyTree(tn, nameFn, childrenFn) { }); } function nodeToStrings(tn) { - var children = childrenFn(tn).slice(); // copy the array + var origChildren = childrenFn(tn) || []; + var children = origChildren.slice(); // copy the array if (children.length === 0) { return ["─ " + nameFn(tn)]; } diff --git a/index.js.map b/index.js.map index 87648d9..b11e29e 100644 --- a/index.js.map +++ b/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAAA,wCAA2C;AAE3C;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAI,EAAK,EAAE,MAAwB,EAAE,UAAyB;IAEvF,SAAS,WAAW,CAAC,IAAc,EAAE,IAAa;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC;YACjB,IAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,OAAO,MAAM,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,SAAS,aAAa,CAAC,EAAK;QACxB,IAAM,QAAQ,GAAO,UAAU,CAAC,EAAE,CAAC,QAAC,CAAC,CAAC,iBAAiB;QACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9B;QACD,QAAQ,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,SAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC;YACpD,IAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,EAAE;IACT,CAAC;IAED,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExC,CAAC;AArBD,sCAqBC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;AAAA,wCAA2C;AAE3C;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAI,EAAK,EAAE,MAAwB,EAAE,UAAyB;IAEvF,SAAS,WAAW,CAAC,IAAc,EAAE,IAAa;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC;YACjB,IAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,OAAO,MAAM,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;IACD,SAAS,aAAa,CAAC,EAAK;QACxB,IAAM,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAM,QAAQ,GAAO,YAAY,QAAC,CAAC,CAAC,iBAAiB;QACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9B;QACD,QAAQ,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,SAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,CAAC;YACpD,IAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,EAAE;IACT,CAAC;IAED,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExC,CAAC;AAtBD,sCAsBC"} \ No newline at end of file diff --git a/index.ts b/index.ts index 4e78439..3bbe6ff 100644 --- a/index.ts +++ b/index.ts @@ -18,7 +18,8 @@ export function stringifyTree(tn: T, nameFn: (t: T) => string, childrenFn: (t }); } function nodeToStrings(tn: T): string[] { - const children = [...childrenFn(tn)]; // copy the array + const origChildren = childrenFn(tn) || []; + const children = [...origChildren]; // copy the array if (children.length === 0) { return ["─ " + nameFn(tn)]; } diff --git a/test/stringifyTree.test.js b/test/stringifyTree.test.js index abcc9d8..e654dd2 100644 --- a/test/stringifyTree.test.js +++ b/test/stringifyTree.test.js @@ -14,6 +14,14 @@ describe("stringify", function () { console.log("tree:\n" + result); assert_1.default.deepEqual(result, "─ hi"); }); + it("treats undefined as empty children", function () { + var tree = { + name: "hi", children: undefined, + }; + var result = __1.stringifyTree(tree, function (t) { return t.name; }, function (t) { return t.children; }); + console.log("tree:\n" + result); + assert_1.default.deepEqual(result, "─ hi"); + }); it("prints a tree with a child", function () { var tree = { name: "hi", children: [ diff --git a/test/stringifyTree.test.js.map b/test/stringifyTree.test.js.map index 5a7e879..4354e06 100644 --- a/test/stringifyTree.test.js.map +++ b/test/stringifyTree.test.js.map @@ -1 +1 @@ -{"version":3,"file":"stringifyTree.test.js","sourceRoot":"","sources":["stringifyTree.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"stringifyTree.test.js","sourceRoot":"","sources":["stringifyTree.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/test/stringifyTree.test.ts b/test/stringifyTree.test.ts index 167bdf7..733ac95 100644 --- a/test/stringifyTree.test.ts +++ b/test/stringifyTree.test.ts @@ -10,6 +10,15 @@ describe("stringify", () => { console.log("tree:\n" + result); assert.deepEqual(result, "─ hi"); }); + it("treats undefined as empty children", () => { + type TN = { name: string, children: TN[] } + const tree = { + name: "hi", children: undefined, + } as unknown as TN; + const result = stringifyTree(tree, t => t.name, t => t.children); + console.log("tree:\n" + result); + assert.deepEqual(result, "─ hi"); + }); it("prints a tree with a child", () => { const tree = { name: "hi", children: [