Skip to content

Issue converting from JSON (ordered) to CSS #18

Description

@svarlitskiy

Basically I can convert the css to JSON ordered but not back to css. Here are the fixes I would recommend to allow for that to happen correctly:

In CSSJSON.js -> base.toJSON function

replace

} else if (!isEmpty(match[capEnd])) {
    // Node has finished
    return node;
}

with

} else if (!isEmpty(match[capEnd])) {
    // Node has finished
    if (args.ordered) node.length=count;
    return node;
}

replace

return node;

with

if (args.ordered) node.length=count;
return node;

In CSSJSON.js -> base.toCSS function

replace

return cssString;

with

if ( typeof node.length === "number" ) {
    for (var j = 0; j < node.length; j++) {
        cssString += base.toCSS(node[j], depth);
    }
}
else if ( typeof node.value === "object" ) {
    cssString += strNode(node.name, node.value, depth);
}
else if ( typeof node.value != undefined ) {
    cssString += strAttr(node.name, node.value, depth);
}
return cssString;

In CSSJSON.js -> strNode function

replace

var strNode = function (name, value, depth) {
    var cssString = '\t'.repeat(depth) + name + ' {\n';
    cssString += base.toCSS(value, depth + 1);
    cssString += '\t'.repeat(depth) + '}\n';
    return cssString;
};

with

var strNode = function (name, value, depth) {
    var cssIndent = '\t'.repeat(depth), 
        cssString = cssIndent + name.split(/\s*,\s*/gi).join( ',\n' + cssIndent ) + ' {\n';

    cssString += base.toCSS(value, depth + 1);
    cssString += cssIndent + '}\n';
    return cssString;
};

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions