Skip to content

Commit

Permalink
Merge pull request #24 from 1999/client-module-deps-bug-0-4
Browse files Browse the repository at this point in the history
В версии 0.4.0 стал неверно собираться клиентский bh с использованием bh-client-module
  • Loading branch information
Andrew Abramov committed Dec 22, 2014
2 parents 89d3fcc + d47b41d commit 0d42e89
Showing 1 changed file with 52 additions and 30 deletions.
82 changes: 52 additions & 30 deletions lib/bh-client-processor.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,14 @@ module.exports = {
*/
buildModule: function (targetPath, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme,
useSourceMap, mimic) {
var file = new File(targetPath, useSourceMap),
libNames,
depNames,
libPrepares;
var file = new File(targetPath, useSourceMap);

if (dependencies) {
libNames = Object.keys(dependencies);
libPrepares = this._buildLibPrepares(dependencies);
depNames = libNames.map(function (libName) {
return dependencies[libName];
});
}

file.writeLine('(function () {');
this._concatFile(file, bhEngine, inputSources, libPrepares, jsAttrName, jsAttrScheme);
this._defineModule('bh', file, depNames, libNames);
this._defineModule('bh', file, dependencies, bhEngine, inputSources, jsAttrName, jsAttrScheme, true);

if (mimic) {
this._defineModule(mimic, file, depNames, libNames);
this._defineModule(mimic, file, { bh: 'bh' });
}

file.writeLine('})()');

return file;
},

Expand All @@ -62,10 +47,8 @@ module.exports = {
* @returns {string}
*/
build: function (targetPath, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme, useSourceMap, mimic) {
var file = new File(targetPath, useSourceMap),
libPrepares = this._buildLibPrepares(dependencies);

return this._concatFile(file, bhEngine, inputSources, libPrepares, jsAttrName, jsAttrScheme, mimic);
var file = new File(targetPath, useSourceMap);
return this._concatFile(file, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme, mimic);
},

_buildLibPrepares: function (dependencies) {
Expand All @@ -76,7 +59,20 @@ module.exports = {
});
},

_concatFile: function (file, bhEngine, inputSources, libPrepares, jsAttrName, jsAttrScheme, mimic) {
/**
* Builds standalone client code
* @param {Object} file enb-source-map/lib/file instance
* @param {Object} bhEngine
* @param {Array} inputSources
* @param {Object} dependencies example: {libName: "dependencyName"}
* @param {String} jsAttrName
* @param {String} jsAttrScheme
* @param {String} [mimic]
* @returns {Object} enb-source-map/lib/file instance
*/
_concatFile: function (file, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme, mimic) {
var libPrepares = this._buildLibPrepares(dependencies);

file.writeFileContent(bhEngine.filename, bhEngine.content);
file.writeLine('var bh = new BH();');
file.writeLine('bh.setOptions({');
Expand All @@ -90,11 +86,9 @@ module.exports = {
file.writeLine('}');
}

if (libPrepares) {
libPrepares.forEach(function (libPrepare) {
file.writeLine(libPrepare);
});
}
libPrepares.forEach(function (libPrepare) {
file.writeLine(libPrepare);
});

inputSources.forEach(function (inputSource) {
file.writeLine('// begin: ' + inputSource.relPath);
Expand All @@ -105,12 +99,40 @@ module.exports = {
return file;
},

_defineModule: function (name, file, depNames, libNames) {
/**
* Builds ym client code
* @param {String} name module name
* @param {Object} file enb-source-map/lib/file instance
* @param {Object} dependencies example: {libName: "dependencyName"}
* @param {Object} bhEngine
* @param {Array} inputSources
* @param {String} jsAttrName
* @param {String} jsAttrScheme
* @param {Boolean} shouldConcatFile if set concat standalone module contents
* @returns {Object} enb-source-map/lib/file instance
*/
_defineModule: function (name, file, dependencies, bhEngine, inputSources, jsAttrName,
jsAttrScheme, shouldConcatFile) {
var libNames,
depNames;

if (dependencies) {
libNames = Object.keys(dependencies);
depNames = libNames.map(function (libName) {
return dependencies[libName];
});
}

file.writeLine('modules.define(\'' + name + '\'' +
(depNames ? ', ' + JSON.stringify(depNames) : '') +
', function(provide' + (libNames && libNames.length ? ', ' + libNames.join(', ') : '') + ') {'
);
file.writeLine('provide(bh);');

if (shouldConcatFile) {
this._concatFile(file, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme);
}

file.writeLine(' provide(bh);');
file.writeLine('});');
}
};

0 comments on commit 0d42e89

Please sign in to comment.