diff --git a/components/00_Tools/_bemGenerator.styl b/components/00_Tools/_bemGenerator.styl index 7a535eb..48ff5a4 100644 --- a/components/00_Tools/_bemGenerator.styl +++ b/components/00_Tools/_bemGenerator.styl @@ -73,14 +73,22 @@ is_nested_in(parent_name) not_nested_in(parent_name) return !(parent_name in called-from) + +is_any_parent_nested() + //RV-Level RV-Element--modifier RV-Element RV-Block--modifier RV-BreakPoint--horizontal RV-Block--modifier RV-Fan--horizontal RV-Block + for i in (length(called-from)...0) + i = i - 1 + if i != index(called-from, called-from[i]) + return true + return false -RV-Level(name, name_delimiter, allowed_parent_levels, selector_callback) +RV-Level(name, name_delimiter, allowed_parent_levels, selector_callback, squash_if_parent_nested=false) if name == null name = auto_name(name_delimiter) not_in_parent = true for parent_level in allowed_parent_levels not_in_parent = not_in_parent && not_nested_in(parent_level) - if is_nested_in('RV-Squash') || not_in_parent + if not_in_parent || is_nested_in('RV-Squash') {block} else if is_nested() store_alias(name) @@ -91,8 +99,11 @@ RV-Level(name, name_delimiter, allowed_parent_levels, selector_callback) name = lookup_alias(name) apply_alias_stack(name) - {selector_callback(name)} + if squash_if_parent_nested && is_any_parent_nested() {block} + else + {selector_callback(name)} + {block} @@ -116,11 +127,11 @@ RV-Element(name=null) RV-Element--modifier(name=null) - +RV-Level(name, '--', ('RV-Element'), @(name){return '&--' + name}) + +RV-Level(name, '--', ('RV-Element'), @(name){return '&--' + name}, true) {block} RV-Block--modifier(name=null) - +RV-Level(name, '--', ('RV-Block'), @(name){return '&--' + name}) + +RV-Level(name, '--', ('RV-Block'), @(name){return '&--' + name}, true) {block} RV-Squash()