icon-blender
Version:
Create customized SVG icon collections from over 80,000 free and open-source icons
59 lines (42 loc) • 1.13 kB
JavaScript
/**
* Convet a javascript object to Less
* Modified from https://github.com/absolunet/node-json-to-scss/blob/master/index.js
*
*/
const forEach = require('lodash.foreach');
const mapKeys = require('lodash.mapkeys');
let indentStyle = `\t`;
const objToLess = (chunk, level = 0) => {
const indent = indentStyle.repeat(level);
let less = '';
mapKeys(chunk, (value, key) => {
less += `${indent}@${key}: `;
if (typeof value === 'object') {
if (Array.isArray(value)) {
const indent2 = indentStyle.repeat(level + 1);
less += '{\n';
forEach(value, (val1) => {
if (Array.isArray(val1)) {
less += `${indent2}`;
forEach(val1, (val2) => {
less += `${val2} `;
});
less = `${less.slice(0, -1)},\n`;
} else {
less += `${indent2}${val1},\n`;
}
});
less = less.slice(0, -2);
less += `\n${indent}}`;
} else {
less += `{\n${objToLess(value, level + 1)}\n${indent}}`;
}
} else {
less += `'`+value+`'`;
}
less += `${level === 0 ? ';\n' : ';'}\n`;
});
less = less.slice(0, -2);
return less;
};
module.exports = objToLess;