vendor/emmet.js
function process(tree, profile) {
		if (tree.name)
			bemParse(tree, profile);
		
		var abbrUtils = require('abbreviationUtils');
		_.each(tree.children, function(item) {
			process(item, profile);
			if (!abbrUtils.isSnippet(item) && item.start)
				shouldRunHtmlFilter = true;
		});
		
		return tree;
	}
function process(tree, profile) {
		if (tree.name)
			bemParse(tree, profile);
		
		var abbrUtils = require('abbreviationUtils');
		_.each(tree.children, function(item) {
			process(item, profile);
			if (!abbrUtils.isSnippet(item) && item.start)
				shouldRunHtmlFilter = true;
		});
		
		return tree;
	}
function process ( tree , profile ) { if ( tree . name ) bemParse ( tree , profile ) ; var abbrUtils = require ( 'abbreviationUtils' ) ; _ . each ( tree . children , function ( item ) { process ( item , profile ) ; if ( ! abbrUtils . isSnippet ( item ) && item . start ) shouldRunHtmlFilter = true ; } ) ; return tree ; }
Recursive function for processing tags, which extends class names
according to BEM specs: http://bem.github.com/bem-method/pages/beginning/beginning.ru.html
<br><br>
It does several things:<br>
<ul>
<li>Expands complex class name (according to BEM symbol semantics):
.block__elem_modifier → .block.block__elem.block__elem_modifier
</li>
<li>Inherits block name on child elements:
.b-block > .__el > .__el → .b-block > .b-block__el > .b-block__el__el
</li>
<li>Treats first dash symbol as '__'</li>
<li>Double underscore (or typographic '–') is also treated as an element
level lookup, e.g. ____el will search for element definition in parent’s
parent element:
.b-block > .__el1 > .____el2 → .b-block > .b-block__el1 > .b-block__el2
</li>
</ul>

@param {AbbreviationNode} tree
@param {Object} profile
Recursive function for processing tags which extends class names according to BEM specs : http : // bem . github . com / bem - method / pages / beginning / beginning . ru . html <br > <br > It does several things : <br > <ul > <li > Expands complex class name ( according to BEM symbol semantics ) : . block__elem_modifier → . block . block__elem . block__elem_modifier < / li > <li > Inherits block name on child elements : . b - block > . __el > . __el → . b - block > . b - block__el > . b - block__el__el < / li > <li > Treats first dash symbol as __ < / li > <li > Double underscore ( or typographic – ) is also treated as an element level lookup e . g . ____el will search for element definition in parent’s parent element : . b - block > . __el1 > . ____el2 → . b - block > . b - block__el1 > . b - block__el2 < / li > < / ul >