Skip to content

Instantly share code, notes, and snippets.

@marthakelly
Created July 3, 2012 01:56
Show Gist options
  • Save marthakelly/3037040 to your computer and use it in GitHub Desktop.
Save marthakelly/3037040 to your computer and use it in GitHub Desktop.
interesting use case for recursion
[
{
"indentLevel": 0,
"selector": "body",
"declarations": [
" margin: auto",
" width: 1000px"
],
"children": []
},
{
"indentLevel": 0,
"selector": "#divID",
"declarations": [
" font: 12px Helvetica, Arial, sans-serif",
" color: green",
" background: yellow"
],
"children": [
{
"indentLevel": 1,
"selector": ".className",
"declarations": [
" color: blue",
" width: 500px"
],
"children": []
}
]
}
]
var blockToCSS = function blockToCSS(block) {
var beginBlock = " {" + "\n",
endBlock = "\n" + "}",
output = [],
sel,
dec,
block,
parentCSS;
sel = block.selector + " ";
dec = block.declarations.join("; \n") + ";";
parentCSS = sel + beginBlock + dec + endBlock;
if (!block.children.length) {
return [parentCSS];
} else {
var childrenCSS = block.children.map(blockToCSS).reduce(function(acc, children) {
return acc.concat(children);
});
var prefixedChildrenCSS = childrenCSS.map(function(child) {
return sel + child;
});
prefixedChildrenCSS.unshift([parentCSS]);
return prefixedChildrenCSS;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment