Skip to content

Instantly share code, notes, and snippets.

@craiglonsdale
Created June 25, 2015 03:48
Show Gist options
  • Save craiglonsdale/ca93ef68bed952192001 to your computer and use it in GitHub Desktop.
Save craiglonsdale/ca93ef68bed952192001 to your computer and use it in GitHub Desktop.
RecursionStuff
var colours = [
{ colour: 'white', value: '#ffffff' },
{ colour: 'black', value: '#182124' },
{ colour: 'yellow', value: '#efbd46' },
{ colour: 'blue', value: [
{ colour: 'navy', value:'#223157' },
{ colour: 'dark', value:'#016ca6' },
{ colour: 'flat', value:'#52a1cc' },
{ colour: 'slate', value:'#8fb7cc' },
{ colour: 'sky', value:'#50c1e9' },
{ colour: 'cool', value:'#99dbff' }
]},
{ colour: 'green', value: [
{ colour: 'grass', value:'#006f4d' },
{ colour: 'apple', value:'#6eb249' },
{ colour: 'lime', value:'#aac53e' },
{ colour: 'vibrant', value:'#c1e62e' },
{ colour: 'mint', value:'#7accb3' },
{ colour: 'aqua', value:'#17b2be' },
{ colour: 'teal', value:'#008f9a' }
]},
{ colour: 'red', value: [
{ colour:'flat', value:'#f5644c' },
{ colour:'vibrant', value:'#f54533' }
]},
{ colour: 'grey', value: [
{ colour:'90', value:'#333a3c'},
{ colour:'80', value:'#464d50'},
{ colour:'70', value:'#5d6365'},
{ colour:'60', value:'#747a7c'},
{ colour:'50', value:'#8b9091'},
{ colour:'40', value:'#a3a6a7'},
{ colour:'30', value:'#b9bcbd'},
{ colour:'20', value:'#ececec'},
{ colour:'10', value:'#f5f5f5'}
]}
];
function buildColourArray(colours) {
var colour_list = [];
function processColour(parent_colour, colour, next) {
async.each(colour.value, function (item, callback) {
if (_.isArray(colour.value)) {
return processColour(colour.colour, item, callback);
}
return callback();
}, function (err) {
var colour_name = colour.colour;
if (parent_colour) {
colour_name = parent_colour + '-' + colour.colour
}
if (!_.isArray(colour.value)) {
colour_list.push({
name: colour_name,
value: colour.value
});
}
return next();
});
}
async.each(colours, function (item, callback) {
processColour('', item, callback);
}, function (err) {
if (err) {
console.error(err);
}
console.log(colour_list);
return colour_list
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment