nl_tokens: Processes class name
pl_tokens: function processClassName ( name , item ) { name = transformClassName ( <mask> , item , 'element' ) ; name = transformClassName ( name , item , 'modifier' ) ; // expand class name // possible values: // * block__element // * block__element_modifier // * block__element_modifier1_modifier2 // * block_modifier var block = '' , element = '' , modifier = '' ; var separators = getSeparators ( ) ; if ( ~ name . indexOf ( separators . element ) ) { var blockElem = name . split ( separators . element ) ; var elemModifiers = blockElem [ 1 ] . split ( separators . modifier ) ; block = blockElem [ 0 ] ; element = elemModifiers . shift ( ) ; modifier = elemModifiers . join ( separators . modifier ) ; } else if ( ~ name . indexOf ( separators . modifier ) ) { var blockModifiers = name . split ( separators . modifier ) ; block = blockModifiers . shift ( ) ; modifier = blockModifiers . join ( separators . modifier ) ; } if ( block || element || modifier ) { if ( ! block ) { block = item . __bem . block ; } // inherit parent bem element, if exists //			if (item.parent && item.parent.__bem && item.parent.__bem.element) //				element = item.parent.__bem.element + separators.element + element; // produce multiple classes var prefix = block ; var result = [ ] ; if ( element ) { prefix += separators . element + element ; result . push ( prefix ) ; } else { result . push ( prefix ) ; } if ( modifier ) { result . push ( prefix + separators . modifier + modifier ) ; } item . __bem . block = block ; item . __bem . element = element ; item . __bem . modifier = modifier ; return result ; } // ...otherwise, return processed or original class name return name ; }