var wasCommentEnd = false;
var isEscaped;
var seekingValue = false;
+ var seekingPropertyBlockClosing = false;
var position = internalContext.position;
for (; position.index < source.length; position.index++) {
seekingValue = false;
buffer = [];
+ } else if (character == Marker.SEMICOLON && level == Level.RULE && seekingPropertyBlockClosing) {
+ // close brace after a property block at rule level, e.g. a{--custom:{color:red;};<--
+ seekingPropertyBlockClosing = false;
+ buffer = [];
} else if (character == Marker.SEMICOLON && level == Level.RULE && buffer.length === 0) {
// stray semicolon at rule level, e.g. a{;<--
// noop
level = levels.pop();
seekingValue = false;
buffer = [];
+ } else if (character == Marker.CLOSE_BRACE && level == Level.RULE && levels[levels.length - 1] == Level.RULE) {
+ // close brace after a property block at rule level, e.g. a{--custom:{color:red;}<--
+ ruleToken = ruleTokens.pop();
+ newTokens = ruleToken[2];
+
+ level = levels.pop();
+ seekingValue = false;
+ seekingPropertyBlockClosing = true;
+ buffer = [];
} else if (character == Marker.CLOSE_BRACE && level == Level.RULE) {
- // close brace after at-rule at rule level, e.g. a{color:red;}<--
+ // close brace after a rule, e.g. a{color:red;}<--
ruleToken = null;
newTokens = allTokens;