From 2d8b4bbcb8664b781fbdabce883982ef95269aae Mon Sep 17 00:00:00 2001 From: Chris Steele Date: Fri, 22 Mar 2019 12:39:19 +0700 Subject: [PATCH] Fix for #22 --- .../2_2_1grunt/grunt/tasks/schema-defaults.js | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/patch/2_2_1grunt/grunt/tasks/schema-defaults.js b/patch/2_2_1grunt/grunt/tasks/schema-defaults.js index 583ae54..7ced24b 100644 --- a/patch/2_2_1grunt/grunt/tasks/schema-defaults.js +++ b/patch/2_2_1grunt/grunt/tasks/schema-defaults.js @@ -45,14 +45,40 @@ module.exports = function(grunt) { if (!currentPluginName || !currentSchemaJson.globals) return; - //iterate through schema globals attributes - _.each(currentSchemaJson.globals, function(item, attributeName) { - //translate schema attribute into globals object - var pluginTypeDefaults = globalsObject['_'+ pluginType] = globalsObject['_'+ pluginType] || {}; - var pluginDefaults = pluginTypeDefaults['_' + currentPluginName] = pluginTypeDefaults['_' + currentPluginName] || {}; - - pluginDefaults[attributeName] = item['default']; - }); + var pluginTypeDefaults = globalsObject['_'+ pluginType] = globalsObject['_'+ pluginType] || {}; + var pluginDefaults = pluginTypeDefaults['_' + currentPluginName] = pluginTypeDefaults['_' + currentPluginName] || {}; + + copyToDefaults(currentSchemaJson.globals, pluginDefaults); + + function copyToDefaults(obj, target) { + _.each(obj, function(val, key) { + if (val['type'] == 'array') { + + if (val.hasOwnProperty('default')) { + target[key] = val['default']; + } + + else if (val['items'] && val['items']['type'] == 'object') { + target[key] = [{}]; + copyToDefaults(val['items']['properties'], target[key][0]); + } + + else { + console.log('new array case for', key); + } + + } else if (val['type'] == 'object') { + + target[key] = {}; + copyToDefaults(val['properties'], target[key]); + + } else { + + target[key] = val['default']; + + } + }); + } }); });