From b9c67e7f8ffde336a0f6d5da0780ba0df4bf7a7a Mon Sep 17 00:00:00 2001 From: Getriax Date: Mon, 18 Mar 2019 22:18:55 +0100 Subject: [PATCH] trim content builder model attributes --- .../services/ContentTypeBuilder.js | 4 ++- .../utils/helpers.js | 28 ++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js b/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js index cc63ea4a86..52d1685ec1 100644 --- a/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js +++ b/packages/strapi-plugin-content-type-builder/services/ContentTypeBuilder.js @@ -10,6 +10,7 @@ const { createManager, removeColsLine, reorderList, + deepTrimObject, } = require('../utils/helpers.js'); module.exports = { @@ -336,8 +337,9 @@ module.exports = { }); Object.assign(attributesNotConfigurable, attrs); + const trimmedNotConfigurableAttributes = deepTrimObject(attributesNotConfigurable); - return [attributesNotConfigurable, errors]; + return [trimmedNotConfigurableAttributes, errors]; }, clearRelations: (model, source, force) => { diff --git a/packages/strapi-plugin-content-type-builder/utils/helpers.js b/packages/strapi-plugin-content-type-builder/utils/helpers.js index 7036c1585a..96fa91b29c 100644 --- a/packages/strapi-plugin-content-type-builder/utils/helpers.js +++ b/packages/strapi-plugin-content-type-builder/utils/helpers.js @@ -44,7 +44,7 @@ const removeColsLine = (manager, list) => { const reorderList = (manager, list) => { const array = createArrayOfLastEls(manager, list); const lines = []; - + array.forEach((item, i) => { const { elements } = getElementsOnALine(manager, i, list); lines.push(elements); @@ -57,7 +57,7 @@ const reorderList = (manager, list) => { return acc.concat(line); }, []) .filter(a => a !== undefined); - + return List(flattenDeep(reordered)); }; @@ -65,11 +65,31 @@ const escapeNewlines = (content, placeholder = '\n') => { return content.replace(/[\r\n]+/g, placeholder); } +const deepTrimObject = attribute => { + if (Array.isArray(attribute)) { + return attribute.map(deepTrimObject); + } + + if (typeof attribute === 'object') { + return Object.entries(attribute) + .reduce((acc, [key, value]) => { + const trimmedObject = deepTrimObject(value); + + return { ...acc, [key]: trimmedObject }; + }, {}); + } + + return typeof attribute === 'string' + ? attribute.trim() + : attribute; +} + module.exports = { createArrayOfLastEls, createManager, getElementsOnALine, removeColsLine, reorderList, - escapeNewlines -}; \ No newline at end of file + escapeNewlines, + deepTrimObject +};