Skip to content

Commit

Permalink
Imitate BEMHTML export behaviour
Browse files Browse the repository at this point in the history
  • Loading branch information
tadatuta committed May 8, 2015
1 parent a7bd4d4 commit 0da709f
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 10 deletions.
18 changes: 11 additions & 7 deletions lib/bh-client-processor.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ module.exports = {
* @param {Object} dependencies example: {libName: "dependencyName"}
* @param {String} jsAttrName
* @param {String} jsAttrScheme
* @param {String} mimic
* @param {String|Array} mimic
* @returns {string}
*/
buildModule: function (targetPath, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme,
Expand All @@ -29,7 +29,9 @@ module.exports = {
this._defineModule('bh', file, dependencies, bhEngine, inputSources, jsAttrName, jsAttrScheme, true);

if (mimic) {
this._defineModule(mimic, file, { bh: 'bh' });
[].concat(mimic).forEach(function (name) {
this._defineModule(name, file, { bh: 'bh' });
});
}

return file;
Expand All @@ -43,7 +45,7 @@ module.exports = {
* @param {String} jsAttrName
* @param {String} jsAttrScheme
* @param {Boolean} useSourceMap
* @param {String} mimic
* @param {String|Array} mimic
* @returns {string}
*/
build: function (targetPath, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme, useSourceMap, mimic) {
Expand All @@ -67,7 +69,7 @@ module.exports = {
* @param {Object} dependencies example: {libName: "dependencyName"}
* @param {String} jsAttrName
* @param {String} jsAttrScheme
* @param {String} [mimic]
* @param {String|Array} [mimic]
* @returns {Object} enb-source-map/lib/file instance
*/
_concatFile: function (file, bhEngine, inputSources, dependencies, jsAttrName, jsAttrScheme, mimic) {
Expand All @@ -81,9 +83,11 @@ module.exports = {
file.writeLine('});');

if (mimic) {
file.writeLine('if (typeof ' + mimic + ' === \'undefined\') {');
file.writeLine('var ' + mimic + ' = bh;');
file.writeLine('}');
[].concat(mimic).forEach(function (name) {
file.writeLine('if (typeof ' + name + ' === \'undefined\') {');
file.writeLine('var ' + name + ' = bh;');
file.writeLine('}');
});
}

libPrepares.forEach(function (libPrepare) {
Expand Down
2 changes: 1 addition & 1 deletion techs/bh-client-module.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* (его предоставляет технология `files`). По умолчанию — `?.files`.
* * *String* **sourceSuffixes** — суффиксы файлов, по которым строится `files`-таргет. По умолчанию — ['bh'].
* * *Boolean* **sourcemap** — строить карты кода.
* * *String* **mimic** — имя модуля для экспорта.
* * *String|Array* **mimic** — имя модуля для экспорта.
* * *String* **jsAttrName** — атрибут блока с параметрами инициализации. По умолчанию — `onclick`.
* * *String* **jsAttrScheme** — Cхема данных для параметров инициализации. По умолчанию — `js`.
* * Форматы:
Expand Down
2 changes: 1 addition & 1 deletion techs/bh-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* (его предоставляет технология `files`). По умолчанию — `?.files`.
* * *String* **sourceSuffixes** — суффиксы файлов, по которым строится `files`-таргет. По умолчанию — ['bh'].
* * *Boolean* **sourcemap** — строить карты кода.
* * *String* **mimic** — имя переменной для экспорта.
* * *String|Array* **mimic** — имя переменной для экспорта.
* * *String* **jsAttrName** — атрибут блока с параметрами инициализации. По умолчанию — `onclick`.
* * *String* **jsAttrScheme** — Cхема данных для параметров инициализации. По умолчанию — `js`.
* * Форматы:
Expand Down
9 changes: 9 additions & 0 deletions techs/bh-server-include.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
* (его предоставляет технология `files`). По умолчанию — `?.files`.
* * *String* **sourceSuffixes** — суффиксы файлов, по которым строится `files`-таргет. По умолчанию — ['bh'].
* * *Boolean* **sourcemap** — строить карты кода.
* * *String|Array* **mimic** — имена модулей для экспорта.
* * *String* **jsAttrName** — атрибут блока с параметрами инициализации. По умолчанию — `onclick`.
* * *String* **jsAttrScheme** — Cхема данных для параметров инициализации. По умолчанию — `js`.
* * Форматы:
Expand All @@ -34,6 +35,7 @@ module.exports = require('enb/lib/build-flow').create()
.name('bh-server-include')
.target('target', '?.bh.js')
.defineOption('bhFile', '')
.defineOption('mimic', [])
.defineOption('jsAttrName', 'onclick')
.defineOption('jsAttrScheme', 'js')
.defineOption('sourcemap', false)
Expand All @@ -49,6 +51,7 @@ module.exports = require('enb/lib/build-flow').create()
.builder(function (bhFiles) {
var node = this.node,
dependencies = {},
mimic = this._mimic,
jsAttrName = this._jsAttrName,
jsAttrScheme = this._jsAttrScheme,
sourcemap = this._sourcemap,
Expand All @@ -75,6 +78,12 @@ module.exports = require('enb/lib/build-flow').create()

file.writeLine('module.exports = bh;');

if (mimic) {
[].concat(mimic).forEach(function (name) {
file.writeLine('bh[\'' + name + '\'] = bh;');
});
}

return file.render();
});
})
Expand Down
7 changes: 6 additions & 1 deletion techs/bh-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
* * *String* **filesTarget** — files-таргет, на основе которого получается список исходных файлов
* (его предоставляет технология `files`). По умолчанию — `?.files`.
* * *String* **sourceSuffixes** — суффиксы файлов, по которым строится `files`-таргет. По умолчанию — ['bh.js'].
* * *String|Array* **mimic** — имена модулей для экспорта.
* * *String* **jsAttrName** — атрибут блока с параметрами инициализации. По умолчанию — `onclick`.
* * *String* **jsAttrScheme** — Cхема данных для параметров инициализации. По умолчанию — `js`.
* * Форматы:
Expand All @@ -31,6 +32,7 @@ module.exports = require('enb/lib/build-flow').create()
.name('bh-server')
.target('target', '?.bh.js')
.defineOption('bhFile', '')
.defineOption('mimic', [])
.defineOption('jsAttrName', 'onclick')
.defineOption('jsAttrScheme', 'js')
.useFileList(['bh.js'])
Expand Down Expand Up @@ -97,7 +99,10 @@ module.exports = require('enb/lib/build-flow').create()
return buildRequire(file.fullname, '', '(bh)');
}).join('\n'),
'',
'module.exports = bh;'
'module.exports = bh;',
this._mimic ? [].concat(this._mimic).map(function (name) {
return 'bh[\'' + name + '\'] = bh;';
}).join('\n') : ''
].join('\n');
})
.createTech();

0 comments on commit 0da709f

Please sign in to comment.