Skip to content
This repository has been archived by the owner on Jan 13, 2018. It is now read-only.

Commit

Permalink
Merge pull request #430 from bem/BEM-931
Browse files Browse the repository at this point in the history
Add ability to write level config module as a function (closes #364, BEM-931)
  • Loading branch information
scf2k committed Sep 12, 2013
2 parents 8a41b46 + d2be06a commit 40074a6
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 30 deletions.
14 changes: 14 additions & 0 deletions lib/level.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,22 @@ var PATH = require('./path'),
LOGGER = require('./logger'),
isRequireable = bemUtil.isRequireable,

BEM,

// Use this as a function because of circular dependency which occurs
// if require is placed in the global scope of the module. BEM is also cached
// in a var to avoid require call every time (which is much slower than if statement.
getBem = function() {
if (!BEM) BEM = require('..');

return BEM;
},

getLevelClass = function(path, optional) {
var level = optional && !isRequireable(path) ? {} : requireLevel(path);

if (typeof level === 'function') level = level(getBem());

if (level.Level) return level.Level;
return INHERIT(level.baseLevelPath? getLevelClass(level.baseLevelPath) : Level, level);
},
Expand Down
61 changes: 31 additions & 30 deletions test/data/make/project/pages/.bem/level.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
var BEM = require('../../..'),
PATH = require('path'),
extend = BEM.util.extend,
module.exports = function(BEM) {

BEM_TECHS = '../../bem-bl/blocks-common/i-bem/bem/techs',
PRJ_TECHS = '../../.bem/techs';
var PATH = require('path'),
extend = BEM.util.extend,

exports.getTechs = function() {
BEM_TECHS = '../../bem-bl/blocks-common/i-bem/bem/techs';

return {
'bemjson.js': '',
'deps.js': 'v2/deps.js',
'js': 'v2/js-i',
'css': 'v2/css',
'ie.css': 'v2/ie.css',
'i18n': PATH.join(BEM_TECHS, 'v2/i18n.js'),
'i18n.js': PATH.join(BEM_TECHS, 'v2/i18n.js.js'),
'bemhtml': PATH.join(BEM_TECHS, 'v2/bemhtml.js'),
'html': PATH.join(BEM_TECHS, 'html.js')
getTechs: function() {

return {
'bemjson.js': '',
'deps.js': 'v2/deps.js',
'js': 'v2/js-i',
'css': 'v2/css',
'ie.css': 'v2/ie.css',
'i18n': PATH.join(BEM_TECHS, 'v2/i18n.js'),
'i18n.js': PATH.join(BEM_TECHS, 'v2/i18n.js.js'),
'bemhtml': PATH.join(BEM_TECHS, 'v2/bemhtml.js'),
'html': PATH.join(BEM_TECHS, 'html.js')
};
},

getConfig: function() {

return extend({}, this.__base() || {}, {

bundleBuildLevels: this.resolvePaths([
'../../bem-bl/blocks-common',
'../../bem-bl/blocks-desktop',
'../../blocks'
])

});
}
};

};

exports.getConfig = function() {

return extend({}, this.__base() || {}, {

bundleBuildLevels: this.resolvePaths([
'../../bem-bl/blocks-common',
'../../bem-bl/blocks-desktop',
'../../blocks'
])

});

};

0 comments on commit 40074a6

Please sign in to comment.