From ced351f2bc6806a761e68e2927d5be402a08c4fa Mon Sep 17 00:00:00 2001 From: fabien0102 Date: Thu, 20 Apr 2017 14:21:10 +0200 Subject: [PATCH] Don't filter boolean values --- .../data-tree-utils-test.js.snap | 4 +++ .../schema/__tests__/data-tree-utils-test.js | 1 + packages/gatsby/lib/schema/data-tree-utils.js | 27 +++++-------------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/packages/gatsby/lib/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap b/packages/gatsby/lib/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap index b7d33d7f7292a..3378b0818cc3c 100644 --- a/packages/gatsby/lib/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap +++ b/packages/gatsby/lib/schema/__tests__/__snapshots__/data-tree-utils-test.js.snap @@ -17,6 +17,9 @@ Object { "frontmatter___date": Object { "field": "frontmatter.date", }, + "frontmatter___draft": Object { + "field": "frontmatter.draft", + }, "frontmatter___title": Object { "field": "frontmatter.title", }, @@ -42,6 +45,7 @@ Object { "blue": 10010, "circle": "happy", "date": "2006-07-22T22:39:53.000Z", + "draft": false, "title": "The world of slash and adventure", }, "hair": 2, diff --git a/packages/gatsby/lib/schema/__tests__/data-tree-utils-test.js b/packages/gatsby/lib/schema/__tests__/data-tree-utils-test.js index d4aed27222c4a..00e85e2ae64a3 100644 --- a/packages/gatsby/lib/schema/__tests__/data-tree-utils-test.js +++ b/packages/gatsby/lib/schema/__tests__/data-tree-utils-test.js @@ -27,6 +27,7 @@ describe(`Gatsby data tree utils`, () => { title: `The world of slash and adventure`, blue: 10010, circle: `happy`, + draft: false, }, }, ] diff --git a/packages/gatsby/lib/schema/data-tree-utils.js b/packages/gatsby/lib/schema/data-tree-utils.js index ac839c3cc37c2..404b06c730ba1 100644 --- a/packages/gatsby/lib/schema/data-tree-utils.js +++ b/packages/gatsby/lib/schema/data-tree-utils.js @@ -7,27 +7,14 @@ const extractFieldExamples = (exports.extractFieldExamples = ({ selector, deleteNodeFields = false, }) => { - let examples = {} - _.each(nodes, node => { - let subNode - if (selector) { - subNode = _.get(node, selector) - } else { - subNode = node - } + let examples = nodes.reduce((mem, node) => { + let subNode = selector ? _.get(node, selector) : node + // Ignore undefined/null subnodes - if (subNode) { - const flattened = flatten(subNode, { maxDepth: 3, flatten: true }) - // Remove non-truthy values - const truthyExamples = {} - _.each(flattened, (v, k) => { - if (v) { - truthyExamples[k] = v - } - }) - examples = _.assign(examples, truthyExamples) - } - }) + subNode = _.omitBy(flatten(subNode || {}), _.isNil) + + return Object.assign({}, mem, subNode) + }, {}) examples = flatten.unflatten(examples, { safe: true })