123456789101112131415161718192021222324252627282930313233 |
- var array = require("./array.sjs");
- var object = require("./object.sjs");
- var PREFIX = 'van-';
- function join(name, mods) {
- name = PREFIX + name;
- mods = mods.map(function (mod) {
- return name + '--' + mod;
- });
- mods.unshift(name);
- return mods.join(' ');
- }
- function traversing(mods, conf) {
- if (!conf) {
- return;
- }
- if (typeof conf === 'string' || typeof conf === 'number') {
- mods.push(conf);
- } else if (array.isArray(conf)) {
- conf.forEach(function (item) {
- traversing(mods, item);
- });
- } else if (typeof conf === 'object') {
- object.keys(conf).forEach(function (key) {
- conf[key] && mods.push(key);
- });
- }
- }
- function bem(name, conf) {
- var mods = [];
- traversing(mods, conf);
- return join(name, mods);
- }
- module.exports.bem = bem;
|