Skip to content

Commit

Permalink
isAsync and some refactoring
Browse files Browse the repository at this point in the history
- restored htmlBeautifier func-ty
- reworked langs it render
- added isAsync flag to force calling .apply on engine
- added safer call of i18n
  • Loading branch information
Alexej Yaroshevich committed Feb 11, 2015
1 parent d23bdb4 commit 92491a9
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 32 deletions.
13 changes: 0 additions & 13 deletions lib/assets/it-i18n.jst

This file was deleted.

51 changes: 42 additions & 9 deletions lib/assets/it.jst
Original file line number Diff line number Diff line change
@@ -1,13 +1,46 @@
it('should be equal `${ it }` by ${ engine.name }', function (<% if (saveHtml) { %>done<% } %>) {
var bemjson = references['${ it }'].bemjson,
expected = references['${ it }'].html,
actual = engines['${ engine.name }'].apply(bemjson);
<%
// prepares
var titleSuffix = lang ? ' in `' + lang + '` lang' : '';
var subreference = lang ? '[' + lang + ']' : '';
var prettifyEngineName = function (ngn) {
return lang ? String(ngn).toLowerCase().replace(' ', '-') + '.' + lang : ngn;
};
if (saveHtml) {
var filename = [it, prettifyEngineName(engine.name), 'html'].join('.');
}
%>
it('should be equal `${ it }` by ${ engine.name }${ titleSuffix }', function (<% if (saveHtml || engine.isAsync) { %>done<% } %>) {
var bemjson = references['${ it }']${ subreference }.bemjson,
expected = references['${ it }']${ subreference }.html;<%
if (!engine.isAsync) { %>
// sync mode
var actual = engines['${ engine.name }']${ subreference }.apply(bemjson);
assertHtml(actual, expected);<%
if (saveHtml) {
var filename = [it, engine.name, 'html'].join('.'),
sep = '\n ';
print(sep + 'fs.writeFile(path.join(__dirname, \'' + filename + '\'), beautifyHtml(actual), done);');
} %>
if (saveHtml) { %>
saveHtmlFile('${ filename }', actual, done);
<% }
} else { // engine.isAsync %>
// async mode
engines['${ engine.name }']${ subreference }.apply(bemjson, function (errs, actual) {
if (errs !== null) {
done(errs);
return;
}
assertHtml(actual, expected, function (err) {
<% if (saveHtml) {%>
saveHtmlFile('${ filename }', actual, function () {
done(err || null);
});
<% } else { %>
done(err || null);
<% } %>
});
});<%
} %>

});
13 changes: 10 additions & 3 deletions lib/assets/tmpl-spec.jst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ var assert = require('assert'),
path = require('path'),
<% if (saveHtml) { %>
fs = require('fs'),
beautifyHtml = require('${ paths['js-beautify'] }').html,
<% } %>
beautifyHtml = function (html) {
return require('${ paths['js-beautify'] }').html(html, beautifyHtmlConfig);
},
beautifyHtmlConfig = { unformatted: [
'a', 'span', 'img', 'address', 'script',
'h1', 'h2', 'h3', 'h4', 'h5','h6',
Expand All @@ -13,6 +14,10 @@ var assert = require('assert'),
'font', 'ins', 'del', 'pre', 'address', 'dt',
'q', 'i', 'b', 'u', 's', 'bdo', 'em'
]},
saveHtmlFile = function (filename, actual, done) {
fs.writeFile(path.join(__dirname, filename), beautifyHtml(actual), done);
},
<% } %>
dropRequireCache = require('enb/lib/fs/drop-require-cache'),
HtmlDiffer = require('${ paths['html-differ'] }').HtmlDiffer,
htmlDiffer = new HtmlDiffer('bem'),
Expand Down Expand Up @@ -64,6 +69,7 @@ describe('${ it }', function() {
print(template('it', {
it: it,
engine: engine,
lang: null,
saveHtml: saveHtml
}));
}
Expand All @@ -72,9 +78,10 @@ describe('${ it }', function() {
});<% }); %>
});

function assertHtml(actual, expected) {
function assertHtml(actual, expected, done) {
if (htmlDiffer.isEqual(actual, expected)) {
assert.ok(actual);
done && done(null);
} else {
assert.fail(actual, expected, null, '\n');
}
Expand Down
4 changes: 2 additions & 2 deletions lib/techs/mock-lang-js.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = require('enb/lib/build-flow').create()
return vfs.read(source, 'utf8')
.then(function (content) {
var mock = [
'(function(global, bem_) {',
';(function(global, bem_) {',
' global.BEM = bem_;',
' var i18n = bem_.I18N = function(keyset, key, param) {',
' var result = key;',
Expand All @@ -20,7 +20,7 @@ module.exports = require('enb/lib/build-flow').create()
' i18n.keyset = function() { return i18n }',
' i18n.key = function(key) { return key }',
' i18n.lang = function() { return }',
'})(this, typeof BEM === \'undefined\' ? {} : BEM);'
'}(this, typeof BEM === \'undefined\' ? {} : BEM));'
].join('\n'),
mapIndex = content.lastIndexOf('//# sourceMappingURL='),
map;
Expand Down
10 changes: 5 additions & 5 deletions lib/techs/tmpl-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ var path = require('path'),
assetsDirname = path.join(__dirname, '..', 'assets'),
readAssets = vow.all([
vfs.read(path.join(assetsDirname, 'tmpl-spec.jst'), 'utf-8'),
vfs.read(path.join(assetsDirname, 'it.jst'), 'utf-8'),
vfs.read(path.join(assetsDirname, 'it-i18n.jst'), 'utf-8')
vfs.read(path.join(assetsDirname, 'it.jst'), 'utf-8')
]),
lodash = require('lodash'),
template = lodash.template,
Expand Down Expand Up @@ -69,10 +68,9 @@ module.exports = require('enb/lib/build-flow').create()
}
its = Object.keys(its);

return readAssets.spread(function (asset, it, iti18n) {
return readAssets.spread(function (asset, it) {
var templates = {
it: it,
'it-i18n': iti18n
it: it
},
data = {
describe: path.basename(nodePath) + ' (' + path.dirname(nodePath) + ')',
Expand All @@ -98,6 +96,7 @@ module.exports = require('enb/lib/build-flow').create()
var langTarget = target.replace('.js', '.' + lang + '.js');
return {
name: lang,
isAsync: engine.options.isAsync,
target: langTarget,
exportName: exportName
};
Expand All @@ -107,6 +106,7 @@ module.exports = require('enb/lib/build-flow').create()

return {
name: engine.name,
isAsync: engine.options.isAsync,
target: target,
exportName: exportName
};
Expand Down

0 comments on commit 92491a9

Please sign in to comment.