update react to 14

cleanups
This commit is contained in:
ido 2015-11-12 12:26:48 +02:00
parent 98af0f40ce
commit cd10ee8b70
4 changed files with 34 additions and 64 deletions

View File

@ -7,7 +7,6 @@
"rt": "./bin/rt.js"
},
"scripts": {
"prepublish": "npm run build",
"build": "npm run lint && npm run test",
"lint": "eslint .",
"test": "node test/src/test.js && node test/src/styleTest.js",
@ -54,7 +53,8 @@
"grunt-eslint": "^17.3.1",
"grunt-node-tap": "^0.1.61",
"istanbul": "^0.4.0",
"react": "^0.12.2",
"react": "^0.14.2",
"react-dom": "^0.14.2",
"react-native": "^0.11.4",
"react-templates": "^0.1.22",
"tape": "^4.2.1"

View File

@ -20,10 +20,6 @@ var ifTemplate = _.template('((<%= condition %>)?(<%= body %>):null)');
var propsTemplateSimple = _.template('_.assign({}, <%= generatedProps %>, <%= rtProps %>)');
var propsTemplate = _.template('mergeProps( <%= generatedProps %>, <%= rtProps %>)');
//var propsMergeFunction3 = 'function mergeProps(inline,external) {\n var res = _.assign({},inline,external)\nif (inline.hasOwnProperty(\'style\')) {\n res.style = _.defaults(res.style, inline.style);\n}\n' +
// ' if (inline.hasOwnProperty(\'className\') && external.hasOwnProperty(\'className\')) {\n' +
// ' res.className = external.className + \' \' + inline.className;\n} return res;\n}\n';
var propsMergeFunction = [
'function mergeProps(inline,external) {',
' var res = _.assign({},inline,external)',
@ -135,7 +131,6 @@ function convertText(node, context, txt) {
res = 'true';
}
//validateJS(res, node, context);
return res;
}
@ -208,7 +203,6 @@ function generateTemplateProps(node, context) {
* @return {string}
*/
function generateProps(node, context) {
// console.log(node);
var props = {};
_.forOwn(node.attribs, function (val, key) {
var propKey = reactSupport.attributesMapping[key.toLowerCase()] || key;
@ -256,7 +250,6 @@ function handleEventHandler(val, context, node, key) {
}
function genBind(func, args) {
//return util.format('%s.bind(%s)', generatedFuncName, (['this'].concat(context.boundParams)).join(','));
return util.format('%s.bind(%s)', func, (['this'].concat(args)).join(','));
}
@ -287,7 +280,6 @@ function convertTagNameToConstructor(tagName, context) {
if (context.options.native) {
return _.includes(reactNativeSupport[context.options.nativeTargetVersion], tagName) ? 'React.' + tagName : tagName;
}
var isHtmlTag = _.includes(reactDOMSupport[context.options.targetVersion], tagName);
if (reactSupport.shouldUseCreateElement(context)) {
isHtmlTag = isHtmlTag || tagName.match(/^\w+(-\w+)$/);
@ -320,33 +312,6 @@ function hasNonSimpleChildren(node) {
});
}
/*
interface NodeConversionData {
innerScopeData: InnerScopeData;
repeatChildrenData: RepeatChildrenData;
ifData: IfData;
}
interface InnerScopeData {
scopeName: string;
// these are variables that were already in scope, unrelated to the ones declared in rt-inner-scope
innerMapping: {[alias: string]: any};
// these are variables declared in the rt-inner-scope attribute
outerMapping: {[alias: string]: any};
}
interface RepeatChildrenData {
itemAlias: string;
collectionExpression: string;
binds: string[];
fn();
}
interface IfData {
conditionExpression: string;
}
*/
/**
* @param node
* @param {Context} context
@ -385,24 +350,15 @@ function convertHtmlToReact(node, context) {
outerMapping: {}
};
//data.innerScope.outerMapping = _.zipObject(context.boundParams, context.boundParams);
_.forEach(context.boundParams, function (boundParam) {
data.innerScope.outerMapping[boundParam] = boundParam;
});
//_(node.attribs[scopeAttr]).split(';').invoke('trim').compact().forEach().value()
_.forEach(node.attribs[scopeAttr].split(';'), function (scopePart) {
if (scopePart.trim().length === 0) {
return;
}
data.innerScope.outerMapping = _.zipObject(context.boundParams, context.boundParams);
_(node.attribs[scopeAttr]).split(';').invoke('trim').compact().forEach( function (scopePart) {
var scopeSubParts = _(scopePart).split(' as ').invoke('trim').value();
if (scopeSubParts.length < 2) {
throw RTCodeError.buildFormat(context, node, "invalid scope part '%s'", scopePart);
}
var alias = scopeSubParts[1];
var value = scopeSubParts[0];
validateJS(alias, node, context);
// this adds both parameters to the list of parameters passed further down
@ -413,7 +369,7 @@ function convertHtmlToReact(node, context) {
data.innerScope.scopeName += stringUtils.capitalize(alias);
data.innerScope.innerMapping[alias] = 'var ' + alias + ' = ' + value + ';';
validateJS(data.innerScope.innerMapping[alias], node, context);
});
}).value();
}
data.props = generateProps(node, context);

View File

@ -8,7 +8,6 @@ var compareAndWrite = util.compareAndWrite;
var fs = require('fs');
var _ = require('lodash');
var path = require('path');
var React = require('react/addons');
var RTCodeError = reactTemplates.RTCodeError;
var dataPath = path.resolve(__dirname, '..', 'data');
@ -189,19 +188,7 @@ test('html tests', function (t) {
var expected = readFileNormalized(filename + '.html');
// var expected = fs.readFileSync(filename.replace(".html", ".js")).toString();
code = reactTemplates.convertTemplateToReact(html).replace(/\r/g, '');
var defineMap = {'react/addons': React, lodash: _};
//noinspection JSUnusedLocalSymbols
var define = function (requirementsNames, content) { //eslint-disable-line no-unused-vars,func-style
var requirements = _.map(requirementsNames, function (reqName) {
return defineMap[reqName];
});
return content.apply(this, requirements);
};
var comp = React.createFactory(React.createClass({
displayName: 'testClass',
render: eval(code) //eslint-disable-line no-eval
}));
var actual = React.renderToStaticMarkup(comp());
var actual = util.codeToHtml(code);
actual = util.normalizeHtml(actual);
expected = util.normalizeHtml(expected);
var equal = compareAndWrite(t, actual, expected, filename);

View File

@ -2,6 +2,10 @@
var cheerio = require('cheerio');
var fs = require('fs');
var path = require('path');
var reactTemplates = require('../../src/reactTemplates');
var React = require('react');
var ReactDOMServer = require('react-dom/server');
var _ = require('lodash');
/**
* @param {string} html
@ -52,10 +56,33 @@ function joinDataPath(fileName) {
return path.join(dataPath, fileName);
}
function rtToHtml(rt) {
var code = reactTemplates.convertTemplateToReact(rt).replace(/\r/g, '');
return codeToHtml(code);
}
function codeToHtml(code) {
var defineMap = {'react/addons': React, lodash: _};
//noinspection JSUnusedLocalSymbols
var define = function (requirementsNames, content) { //eslint-disable-line no-unused-vars,func-style
var requirements = _.map(requirementsNames, function (reqName) {
return defineMap[reqName];
});
return content.apply(this, requirements);
};
var comp = React.createFactory(React.createClass({
displayName: 'testClass',
render: eval(code) //eslint-disable-line no-eval
}));
return ReactDOMServer.renderToStaticMarkup(comp());
}
module.exports = {
normalizeHtml: normalizeHtml,
compareAndWrite: compareAndWrite,
readFileNormalized: readFileNormalized,
readFile: readFile,
joinDataPath: joinDataPath
joinDataPath: joinDataPath,
rtToHtml: rtToHtml,
codeToHtml: codeToHtml
};