Для получения полного доступа
зарегистрируйтесь.
RSS

Все сниппеты с тэгами «JavaScript, jade»



Gravatar image
zoxon
  • Репутация: 5
  • Сниппеты: 3
  • Ревизии: 1

Функция на javascript для генерации масива БЭМ модификаторов. Использую такую в jade.

На вход тербует json обьект вида

{
 	'base': 'block',
 	'mods': [
 		'key': 'value',
 		'key2': 'value2'
 	]
}

Возвращяет масив вида ['block', 'block_key_value', 'block_key2_value2']

-
	var _mods = function (data) {
		var mods = [data.base];
		if (data.mods) {
			data.mods.forEach(function(mod, index) {
				if (typeof mod === "string") {
					mods.push(mods[0] + '_' + mod);
				}
				else {
					for (var key in mod) {
						var val = mod[key];
						if (key === "mod") {
							mods.push(mods[0] + '_' + val);
						}
						else {
							mods.push(mods[0] + '_' + key + '_' + val);
						}
					}
				}
			});
		}
		return mods;
	};

Примеры использования

//- Test 1 key/value
- var myMods = _mods({'base': 'module-name', 'mods': [{'key': 'value'}, {'key2': 'value2'}]});
div(class=myMods)= myMods

//- Test 2 value
- var myMods = _mods({'base': 'module-name', 'mods': ['mod1', 'mod2']});
div(class=myMods)= myMods

//- Test 3 mixed
- var myMods = _mods({'base': 'module-name', 'mods': [{'key': 'value'}, {'key2': 'value2'}, {'mod': 'mod1'}, {'mod': 'mod2'}]});
div(class=myMods)= myMods