1
0
mirror of https://github.com/bobwen-dev/react-templates synced 2025-04-12 00:56:39 +02:00

add context where missing

This commit is contained in:
ido 2015-04-21 17:21:12 +03:00
parent 307084e11d
commit 2ab86644f0
3 changed files with 33 additions and 28 deletions

View File

@ -34,7 +34,7 @@ function convertFile(source, target, options, context) {
} }
var js; var js;
if (options.modules === 'jsrt') { if (options.modules === 'jsrt') {
js = convertJSRTToJS(html, options); js = convertJSRTToJS(html, context, options);
} else { } else {
js = convertTemplateToReact(html, context, options); js = convertTemplateToReact(html, context, options);
} }

View File

@ -490,12 +490,12 @@ function convertTemplateToReact(html, reportContext, options) {
return code; return code;
} }
function convertJSRTToJS(text, options) { function convertJSRTToJS(text, reportContext, options) {
options = _.defaults({}, options, defaultOptions); options = _.defaults({}, options, defaultOptions);
options.modules = 'jsrt'; options.modules = 'jsrt';
var templateMatcherJSRT = /<template>([^]*?)<\/template>/gm; var templateMatcherJSRT = /<template>([^]*?)<\/template>/gm;
var code = text.replace(templateMatcherJSRT, function (template, html) { var code = text.replace(templateMatcherJSRT, function (template, html) {
return convertTemplateToReact(html, options).replace(/;$/, ''); return convertTemplateToReact(html, reportContext, options).replace(/;$/, '');
}); });
try { try {
var tree = esprima.parse(code, {range: true, tokens: true, comment: true}); var tree = esprima.parse(code, {range: true, tokens: true, comment: true});

View File

@ -1,6 +1,7 @@
'use strict'; 'use strict';
var test = require('tape'); var test = require('tape');
var reactTemplates = require('../../src/reactTemplates'); var reactTemplates = require('../../src/reactTemplates');
var context = require('../../src/context');
var fs = require('fs'); var fs = require('fs');
var _ = require('lodash'); var _ = require('lodash');
var path = require('path'); var path = require('path');
@ -40,7 +41,7 @@ test('invalid tests', function (t) {
var html = readFileNormalized(filename); var html = readFileNormalized(filename);
var error = null; var error = null;
try { try {
reactTemplates.convertTemplateToReact(html); reactTemplates.convertTemplateToReact(html, context);
} catch (e) { } catch (e) {
error = e; error = e;
} }
@ -109,7 +110,7 @@ test('conversion test', function (t) {
var html = readFileNormalized(filename); var html = readFileNormalized(filename);
var expected = readFileNormalized(filename + '.js'); var expected = readFileNormalized(filename + '.js');
// var expected = fs.readFileSync(filename.replace(".html", ".js")).toString(); // var expected = fs.readFileSync(filename.replace(".html", ".js")).toString();
var actual = reactTemplates.convertTemplateToReact(html).replace(/\r/g, '').trim(); var actual = reactTemplates.convertTemplateToReact(html, context).replace(/\r/g, '').trim();
compareAndWrite(t, actual, expected, filename); compareAndWrite(t, actual, expected, filename);
} }
}); });
@ -143,7 +144,7 @@ test('convert div with all module types', function (t) {
var html = readFileNormalized(filename); var html = readFileNormalized(filename);
var expected = readFileNormalized(path.join(dataPath, testData.expected)); var expected = readFileNormalized(path.join(dataPath, testData.expected));
// var expected = fs.readFileSync(filename.replace(".html", ".js")).toString(); // var expected = fs.readFileSync(filename.replace(".html", ".js")).toString();
var actual = reactTemplates.convertTemplateToReact(html, testData.options).replace(/\r/g, '').trim(); var actual = reactTemplates.convertTemplateToReact(html, context, testData.options).replace(/\r/g, '').trim();
compareAndWrite(t, actual, expected, filename); compareAndWrite(t, actual, expected, filename);
} }
}); });
@ -158,7 +159,7 @@ test('convert jsrt and test source results', function (t) {
var js = readFileNormalized(filename); var js = readFileNormalized(filename);
var expected = readFileNormalized(path.join(dataPath, file.replace('.jsrt', '.js'))); var expected = readFileNormalized(path.join(dataPath, file.replace('.jsrt', '.js')));
// var expected = fs.readFileSync(filename.replace(".html", ".js")).toString(); // var expected = fs.readFileSync(filename.replace(".html", ".js")).toString();
var actual = reactTemplates.convertJSRTToJS(js).replace(/\r/g, '').trim(); var actual = reactTemplates.convertJSRTToJS(js, context).replace(/\r/g, '').trim();
compareAndWrite(t, actual, expected, filename); compareAndWrite(t, actual, expected, filename);
} }
}); });
@ -175,20 +176,21 @@ function normalizeHtml(html) {
} }
test('html tests', function (t) { test('html tests', function (t) {
var files = ['scope.rt', 'lambda.rt', 'eval.rt', 'props.rt', 'custom-element.rt', 'style.rt', 'concat.rt', 'js-in-attr.rt', 'props-class.rt']; var files = ['scope.rt', 'lambda.rt', 'eval.rt', 'props.rt', 'custom-element.rt', 'style.rt', 'concat.rt', 'js-in-attr.rt', 'props-class.rt', 'rt-class.rt'];
t.plan(files.length); t.plan(files.length);
files.forEach(check); files.forEach(check);
function check(testFile) { function check(testFile) {
try {
var filename = path.join(dataPath, testFile); var filename = path.join(dataPath, testFile);
var html = fs.readFileSync(filename).toString(); var html = fs.readFileSync(filename).toString();
var expected = readFileNormalized(filename + '.html'); var expected = readFileNormalized(filename + '.html');
// var expected = fs.readFileSync(filename.replace(".html", ".js")).toString(); // var expected = fs.readFileSync(filename.replace(".html", ".js")).toString();
var code = reactTemplates.convertTemplateToReact(html).replace(/\r/g, ''); var code = reactTemplates.convertTemplateToReact(html, context).replace(/\r/g, '');
var defineMap = {'react/addons': React, lodash: _}; var defineMap = {'react/addons': React, lodash: _};
/*eslint no-unused-vars:0*/ //noinspection JSUnusedLocalSymbols
var define = function (requirementsNames, content) { var define = function (requirementsNames, content) { //eslint-disable-line no-unused-vars
var requirements = _.map(requirementsNames, function (reqName) { var requirements = _.map(requirementsNames, function (reqName) {
return defineMap[reqName]; return defineMap[reqName];
}); });
@ -201,6 +203,9 @@ test('html tests', function (t) {
actual = normalizeHtml(actual); actual = normalizeHtml(actual);
expected = normalizeHtml(expected); expected = normalizeHtml(expected);
compareAndWrite(t, actual, expected, filename); compareAndWrite(t, actual, expected, filename);
} catch (e) {
console.log(testFile, e);
}
} }
}); });
@ -220,7 +225,7 @@ test('test shell', function (t) {
var shell = require('../../src/shell'); var shell = require('../../src/shell');
var context = require('../../src/context'); var context = require('../../src/context');
var newContext = _.cloneDeep(context); var newContext = _.cloneDeep(context);
var outputJSON; var outputJSON = '';
newContext.options.format = 'json'; newContext.options.format = 'json';
newContext.report = function (text) { newContext.report = function (text) {
outputJSON = text; outputJSON = text;