Skip to content

Commit

Permalink
Add spread parameters expression block
Browse files Browse the repository at this point in the history
  • Loading branch information
joe-sky committed Apr 26, 2016
1 parent be1352f commit d730199
Show file tree
Hide file tree
Showing 10 changed files with 95 additions and 52 deletions.
61 changes: 39 additions & 22 deletions dist/nornj.js
Original file line number Diff line number Diff line change
Expand Up @@ -1176,9 +1176,11 @@ function replaceParams(valueObj, data, newObj, newKey, parent) {
//Get expression parameter
function getExprParam(refer, data, parent) {
var ret = [];
tools.each(refer.props, function (propObj, i) {
ret.push(getDataValue(data, propObj.prop, parent));
}, false, true);
if (refer != null) {
tools.each(refer.props, function (propObj, i) {
ret.push(getDataValue(data, propObj.prop, parent));
}, false, true);
}

return ret;
}
Expand Down Expand Up @@ -1654,7 +1656,7 @@ nj.exprs = {
ret = options.inverse();
}

if(options.useString && ret == null) {
if (options.useString && ret == null) {
return '';
}

Expand All @@ -1672,21 +1674,21 @@ nj.exprs = {
ret;

if (refer) {
if(useString) {
if (useString) {
ret = '';
}
else {
ret = [];
}

tools.each(refer, function (item, index) {
var retI = options.result({
loop: true,
item: item,
index: index
});

if(useString) {
if (useString) {
ret += retI;
}
else {
Expand All @@ -1695,7 +1697,7 @@ nj.exprs = {
}, false, tools.isArray(refer));

//Return null when not use string and result is empty.
if(!useString && !ret.length) {
if (!useString && !ret.length) {
ret = null;
}
}
Expand All @@ -1709,7 +1711,7 @@ nj.exprs = {
return ret;
},

//Param block
//Parameter block
param: function () {
var args = arguments,
len = args.length,
Expand All @@ -1720,23 +1722,39 @@ nj.exprs = {

//Make property name by multiple parameters
tools.each(args, function (item, i) {
if(i < len - 1) {
if (i < len - 1) {
name += item;
}
}, false, true);

//If the value length greater than 1, it need to be connected to a whole string.
if (ret.length > 1) {
value = '';
tools.each(ret, function(item) {
value += item;
}, false, true);
if (ret != null) {
if (ret.length > 1) {
value = '';
tools.each(ret, function (item) {
value += item;
}, false, true);
}
else {
value = ret[0];
}
}
else {
value = ret[0];
else { //Match to Similar to "checked" or "disabled" attribute.
value = name;
}

options.paramsExpr[name] = value;
},

//Spread parameters block
spreadparam: function (refer, options) {
if (!refer) {
return;
}

tools.each(refer, function (v, k) {
options.paramsExpr[k] = v;
}, false, false);
}
};

Expand Down Expand Up @@ -2021,8 +2039,8 @@ function each(obj, func, context, isArr, useEvery) {
context = context ? context : obj;

if (isArr) {
arrayEach.call(obj, function (o, i, arr) {
var ret = func.call(context, o, i, arr);
arrayEach.call(obj, function (o, i) {
var ret = func.call(context, o, i);

if (useEvery) {
if (ret === false) {
Expand All @@ -2034,9 +2052,8 @@ function each(obj, func, context, isArr, useEvery) {
}
else {
var keys = Object.keys(obj);
arrayEach.call(keys, function (o, i) {
var key = keys[i],
ret = func.call(context, obj[key], key, obj);
arrayEach.call(keys, function (key) {
var ret = func.call(context, obj[key], key);

if (useEvery) {
if (ret === false) {
Expand Down
2 changes: 1 addition & 1 deletion dist/nornj.min.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions examples/inferno-nornj-simple-demo/assets/bundle.js

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@ class TestComponent extends Component {
return template(
this.props,
this.state,
{ onClick: ()=> this.setState({ counter: Date.now() }) }
{
params: {
'class': 'test',
style: 'color:blue;',
onClick: ()=> this.setState({ counter: Date.now() })
}
}
);
}
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import nj from '../../../../src/base.js';

export default nj`
<div class=test onClick={onClick} style=color:blue;>
<div>
<$params>
<$spreadParam {params} />
</$params>
test{no}
<br />
<$each {list}>
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "nornj",
"version": "0.3.2-rc1",
"version": "0.3.2",
"description": "A multipurpose javascript template engine",
"main": "src/base.js",
"files": [
Expand Down
8 changes: 5 additions & 3 deletions src/transforms/transformData.js
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,11 @@ function replaceParams(valueObj, data, newObj, newKey, parent) {
//Get expression parameter
function getExprParam(refer, data, parent) {
var ret = [];
tools.each(refer.props, function (propObj, i) {
ret.push(getDataValue(data, propObj.prop, parent));
}, false, true);
if (refer != null) {
tools.each(refer.props, function (propObj, i) {
ret.push(getDataValue(data, propObj.prop, parent));
}, false, true);
}

return ret;
}
Expand Down
44 changes: 30 additions & 14 deletions src/utils/expression.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ nj.exprs = {
ret = options.inverse();
}

if(options.useString && ret == null) {
if (options.useString && ret == null) {
return '';
}

Expand All @@ -33,21 +33,21 @@ nj.exprs = {
ret;

if (refer) {
if(useString) {
if (useString) {
ret = '';
}
else {
ret = [];
}

tools.each(refer, function (item, index) {
var retI = options.result({
loop: true,
item: item,
index: index
});

if(useString) {
if (useString) {
ret += retI;
}
else {
Expand All @@ -56,7 +56,7 @@ nj.exprs = {
}, false, tools.isArray(refer));

//Return null when not use string and result is empty.
if(!useString && !ret.length) {
if (!useString && !ret.length) {
ret = null;
}
}
Expand All @@ -70,7 +70,7 @@ nj.exprs = {
return ret;
},

//Param block
//Parameter block
param: function () {
var args = arguments,
len = args.length,
Expand All @@ -81,23 +81,39 @@ nj.exprs = {

//Make property name by multiple parameters
tools.each(args, function (item, i) {
if(i < len - 1) {
if (i < len - 1) {
name += item;
}
}, false, true);

//If the value length greater than 1, it need to be connected to a whole string.
if (ret.length > 1) {
value = '';
tools.each(ret, function(item) {
value += item;
}, false, true);
if (ret != null) {
if (ret.length > 1) {
value = '';
tools.each(ret, function (item) {
value += item;
}, false, true);
}
else {
value = ret[0];
}
}
else {
value = ret[0];
else { //Match to Similar to "checked" or "disabled" attribute.
value = name;
}

options.paramsExpr[name] = value;
},

//Spread parameters block
spreadparam: function (refer, options) {
if (!refer) {
return;
}

tools.each(refer, function (v, k) {
options.paramsExpr[k] = v;
}, false, false);
}
};

Expand Down
9 changes: 4 additions & 5 deletions src/utils/tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ function each(obj, func, context, isArr, useEvery) {
context = context ? context : obj;

if (isArr) {
arrayEach.call(obj, function (o, i, arr) {
var ret = func.call(context, o, i, arr);
arrayEach.call(obj, function (o, i) {
var ret = func.call(context, o, i);

if (useEvery) {
if (ret === false) {
Expand All @@ -91,9 +91,8 @@ function each(obj, func, context, isArr, useEvery) {
}
else {
var keys = Object.keys(obj);
arrayEach.call(keys, function (o, i) {
var key = keys[i],
ret = func.call(context, obj[key], key, obj);
arrayEach.call(keys, function (key) {
var ret = func.call(context, obj[key], key);

if (useEvery) {
if (ret === false) {
Expand Down

0 comments on commit d730199

Please sign in to comment.