diff --git a/lib/bem.jade b/lib/bem.jade
index 8f888ce..e5d8caf 100644
--- a/lib/bem.jade
+++ b/lib/bem.jade
@@ -24,7 +24,8 @@ mixin b(options)
//- Catch the bemto block
if bemto_classes.length
- - var bemto_block = bemto_classes[0].match(new RegExp('^(((?!' + bemto_settings['element'] + '|' + bemto_settings['modifier'] +').)+)'))[1]
+ - var bemto_block = bemto_classes[0].match(new RegExp('^(((?!' + bemto_settings['element'] + '|' + bemto_settings['modifier'] +').)+)'))
+ - bemto_block = bemto_block && bemto_block[1]
if !isElement
- bemto_chain[bemto_chain.length] = bemto_block
@@ -32,30 +33,31 @@ mixin b(options)
else if bemto_classes.length && bemto_chain[bemto_chain.length-1]
- bemto_classes[0] = bemto_chain[bemto_chain.length-1] + bemto_settings['element'] + bemto_classes[0]
- - var current_block = (isElement ? bemto_chain[bemto_chain.length-1] + bemto_settings['element'] : '') + bemto_block
+ if bemto_block
+ - var current_block = (isElement ? bemto_chain[bemto_chain.length-1] + bemto_settings['element'] : '') + bemto_block
- //- Adding the block if there is only modifier
- - var has_modifier = false
- each klass in bemto_classes
- if klass && klass.match(new RegExp('^' + current_block + '(?!' + bemto_settings['element'] + '[A-Za-z]' + ')' + bemto_settings['modifier'] + '[A-Za-z]'))
- - has_modifier = true
- if bemto_classes.indexOf(current_block) === -1 && has_modifier
- - bemto_classes[bemto_classes.length] = current_block
+ //- Adding the block if there is only modifier
+ - var has_modifier = false
+ each klass in bemto_classes
+ if klass.match(new RegExp('^' + current_block + '(?!' + bemto_settings['element'] + '[A-Za-z]' + ')' + bemto_settings['modifier'] + '[A-Za-z]'))
+ - has_modifier = true
+ if bemto_classes.indexOf(current_block) === -1 && has_modifier
+ - bemto_classes[bemto_classes.length] = current_block
- each klass, i in bemto_classes
- if klass && klass.match(new RegExp('^(?!' + bemto_settings['element'] + ')' + bemto_settings['modifier']))
- //- Expanding the modifiers
- - bemto_classes[i] = current_block + klass
- else if klass && klass.match(new RegExp('^' + bemto_settings['element']))
- //- Expanding the mixed in elements
- if bemto_chain[bemto_chain.length-2]
- - bemto_classes[i] = bemto_chain[bemto_chain.length-2] + klass
- else
- - bemto_classes[i] = bemto_chain[bemto_chain.length-1] + klass
+ each klass, i in bemto_classes
+ if klass.match(new RegExp('^(?!' + bemto_settings['element'] + ')' + bemto_settings['modifier']))
+ //- Expanding the modifiers
+ - bemto_classes[i] = current_block + klass
+ else if klass.match(new RegExp('^' + bemto_settings['element']))
+ //- Expanding the mixed in elements
+ if bemto_chain[bemto_chain.length-2]
+ - bemto_classes[i] = bemto_chain[bemto_chain.length-2] + klass
+ else
+ - bemto_classes[i] = bemto_chain[bemto_chain.length-1] + klass
- //- Adding prefixes
- if bemto_classes[i] && bemto_classes[i].match(new RegExp('^' + current_block + '($|(?=' + bemto_settings['element'] + '|' + bemto_settings['modifier'] + '))'))
- - bemto_classes[i] = bemto_settings['prefix'] + bemto_classes[i]
+ //- Adding prefixes
+ if bemto_classes[i] && bemto_classes[i].match(new RegExp('^' + current_block + '($|(?=' + bemto_settings['element'] + '|' + bemto_settings['modifier'] + '))'))
+ - bemto_classes[i] = bemto_settings['prefix'] + bemto_classes[i]
//- Write modified classes to attributes in the correct order
- attributes.class = bemto_classes.sort().join(' ')
diff --git a/test/cases/1_basics.html b/test/cases/1_basics.html
index dc6bcfa..286e6f8 100644
--- a/test/cases/1_basics.html
+++ b/test/cases/1_basics.html
@@ -31,3 +31,11 @@