Change: alias stack for each level type, leads to consistent 'modifier last' rule
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
				
			|||||||
_bem_context = {
 | 
					_bem_context = {
 | 
				
			||||||
	_alias_map: {}
 | 
						_alias_map: {}
 | 
				
			||||||
	_alias_stack: () ()
 | 
						_alias_stacks: {
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
work_stack(stack, callback)
 | 
					work_stack(stack, callback)
 | 
				
			||||||
@@ -12,24 +13,37 @@ work_stack(stack, callback)
 | 
				
			|||||||
set_alias(alias, name)
 | 
					set_alias(alias, name)
 | 
				
			||||||
	if name != null && alias != null
 | 
						if name != null && alias != null
 | 
				
			||||||
		_bem_context._alias_map[alias] = name
 | 
							_bem_context._alias_map[alias] = name
 | 
				
			||||||
	
 | 
							
 | 
				
			||||||
lookup_alias(name)
 | 
					lookup_alias(name)
 | 
				
			||||||
	if name in _bem_context._alias_map
 | 
						if name in _bem_context._alias_map
 | 
				
			||||||
		return _bem_context._alias_map[name]
 | 
							return _bem_context._alias_map[name]
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		return name
 | 
							return name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
store_alias(alias)
 | 
					store_alias(alias)
 | 
				
			||||||
 | 
						level_name = called-from[1]
 | 
				
			||||||
 | 
						if not level_name in _bem_context._alias_stacks
 | 
				
			||||||
 | 
							_bem_context._alias_stacks[level_name] = () ()
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	if alias != null
 | 
						if alias != null
 | 
				
			||||||
		push(_bem_context._alias_stack, alias)
 | 
							push(_bem_context._alias_stacks[level_name], alias)
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
pop_last_alias()
 | 
					pop_last_alias()
 | 
				
			||||||
	return pop(_bem_context._alias_stack)
 | 
						level_name = called-from[1]
 | 
				
			||||||
	
 | 
						if not level_name in _bem_context._alias_stacks
 | 
				
			||||||
 | 
							return null
 | 
				
			||||||
 | 
						return pop(_bem_context._alias_stacks[level_name])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
apply_alias_stack(name)
 | 
					apply_alias_stack(name)
 | 
				
			||||||
	work_stack(_bem_context._alias_stack, @(element){
 | 
						level_name = called-from[1]
 | 
				
			||||||
		set_alias(element, name)
 | 
						if level_name in _bem_context._alias_stacks
 | 
				
			||||||
	})
 | 
							work_stack(_bem_context._alias_stacks[level_name], @(element){
 | 
				
			||||||
 | 
								set_alias(element, name)
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
auto_name(delimiter)
 | 
					auto_name(delimiter)
 | 
				
			||||||
	if length(called-from) < 3
 | 
						if length(called-from) < 3
 | 
				
			||||||
@@ -87,7 +101,7 @@ RV-Block(name)
 | 
				
			|||||||
		{block}
 | 
							{block}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	_bem_context._alias_map = {}
 | 
						_bem_context._alias_map = {}
 | 
				
			||||||
	_bem_context._alias_stack = () ()
 | 
						_bem_context._alias_stacks = {}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
RV-Element(name=null)
 | 
					RV-Element(name=null)
 | 
				
			||||||
	+RV-Level(name, '__', ('RV-Block' 'RV-Block--modifier'), @(name){
 | 
						+RV-Level(name, '__', ('RV-Block' 'RV-Block--modifier'), @(name){
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user