Skip to content

Commit b4de844

Browse files
committed
Commit 70 (v1.0.0-beta.70 - Beta Candidate)
- minor update: Improved syntax error detection #317
1 parent 809ee6c commit b4de844

13 files changed

+61
-26
lines changed

jquery.observable.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! JsObservable v1.0.0-beta.69 (Beta Candidate): http://jsviews.com/#jsobservable */
1+
/*! JsObservable v1.0.0-beta.70 (Beta Candidate): http://jsviews.com/#jsobservable */
22
/*
33
* Subcomponent of JsViews
44
* Data change events for data-linking

jquery.observable.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jquery.observable.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jquery.views.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! jquery.views.js v1.0.0-beta.69 (Beta Candidate): http://jsviews.com/ */
1+
/*! jquery.views.js v1.0.0-beta.70 (Beta Candidate): http://jsviews.com/ */
22
/*
33
* Interactive data-driven views using JsRender templates.
44
* Subcomponent of JsViews
@@ -388,7 +388,7 @@ function updateContent(sourceValue, linkCtx, attr, tag) {
388388
// When called (in propertyChangeHandler) for target HTML returns true
389389
// When called (in propertyChangeHandler) for other targets returns boolean for "changed"
390390
var setter, prevNode, nextNode, promise, nodesToRemove, useProp, tokens, id, openIndex, closeIndex, testElem, nodeName, cStyle,
391-
renders = sourceValue !== undefined && !linkCtx._noUpd, // For data-link="^{...}", don't update the first time (no initial render) - e.g. to leave server rendered values.
391+
renders = attr !== NONE && sourceValue !== undefined && !linkCtx._noUpd, // For data-link="^{...}", don't update the first time (no initial render) - e.g. to leave server rendered values.
392392
source = linkCtx.data,
393393
target = tag && tag.parentElem || linkCtx.elem,
394394
$target = $(target),

jquery.views.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jquery.views.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsrender.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! JsRender v1.0.0-rc.69 (Beta - Release Candidate): http://jsviews.com/#jsrender */
1+
/*! JsRender v1.0.0-rc.70 (Beta - Release Candidate): http://jsviews.com/#jsrender */
22
/*! **VERSION FOR WEB** (For NODE.JS see http://jsviews.com/download/jsrender-node.js) */
33
/*
44
* Best-of-breed templating in browser or on Node.js.
@@ -1559,10 +1559,10 @@ function parseParams(params, pathBindings, tmpl) {
15591559
// "a.b().c^d().e.f().g" - which has four chained paths, "a.b()", "^c.d()", ".e.f()" and ".g"
15601560
parenDepth = 0,
15611561
fnCall = {}, // We are in a function call
1562-
pathStart = {}; // tracks the start of the current path such as c^d() in the above example
1562+
pathStart = {}, // tracks the start of the current path such as c^d() in the above example
1563+
result = (params + (tmpl ? " " : "")).replace(rParams, parseTokens);
15631564

1564-
return (params + (tmpl ? " " : ""))
1565-
.replace(rParams, parseTokens);
1565+
return !parenDepth && result || syntaxError(params); // Syntax error if unbalanced parens in params expression
15661566
}
15671567

15681568
function buildCode(ast, tmpl, isLinkExpr) {

jsrender.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsrender.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsviews.js

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! jsviews.js v1.0.0-beta.69 (Beta Candidate) single-file version: http://jsviews.com/ */
1+
/*! jsviews.js v1.0.0-beta.70 (Beta Candidate) single-file version: http://jsviews.com/ */
22
/*! includes JsRender, JsObservable and JsViews - see: http://jsviews.com/#download */
33

44
/* Interactive data-driven views using JsRender templates */
@@ -1563,10 +1563,10 @@ function parseParams(params, pathBindings, tmpl) {
15631563
// "a.b().c^d().e.f().g" - which has four chained paths, "a.b()", "^c.d()", ".e.f()" and ".g"
15641564
parenDepth = 0,
15651565
fnCall = {}, // We are in a function call
1566-
pathStart = {}; // tracks the start of the current path such as c^d() in the above example
1566+
pathStart = {}, // tracks the start of the current path such as c^d() in the above example
1567+
result = (params + (tmpl ? " " : "")).replace(rParams, parseTokens);
15671568

1568-
return (params + (tmpl ? " " : ""))
1569-
.replace(rParams, parseTokens);
1569+
return !parenDepth && result || syntaxError(params); // Syntax error if unbalanced parens in params expression
15701570
}
15711571

15721572
function buildCode(ast, tmpl, isLinkExpr) {
@@ -3258,7 +3258,7 @@ function updateContent(sourceValue, linkCtx, attr, tag) {
32583258
// When called (in propertyChangeHandler) for target HTML returns true
32593259
// When called (in propertyChangeHandler) for other targets returns boolean for "changed"
32603260
var setter, prevNode, nextNode, promise, nodesToRemove, useProp, tokens, id, openIndex, closeIndex, testElem, nodeName, cStyle,
3261-
renders = sourceValue !== undefined && !linkCtx._noUpd, // For data-link="^{...}", don't update the first time (no initial render) - e.g. to leave server rendered values.
3261+
renders = attr !== NONE && sourceValue !== undefined && !linkCtx._noUpd, // For data-link="^{...}", don't update the first time (no initial render) - e.g. to leave server rendered values.
32623262
source = linkCtx.data,
32633263
target = tag && tag.parentElem || linkCtx.elem,
32643264
$target = $(target),
@@ -4989,6 +4989,40 @@ function clean(elems) {
49894989
}
49904990
}
49914991

4992+
//function clean(elems) {
4993+
// // Remove data-link bindings, or contained views
4994+
// var elem, bindings, binding,
4995+
// elemArray = [],
4996+
// len = elems.length,
4997+
// i = len;
4998+
// while (i--) {
4999+
// // Copy into an array, so that deletion of nodes from DOM will not cause our 'i' counter to get shifted
5000+
// // (Note: This seems as fast or faster than elemArray = [].slice.call(elems); ...)
5001+
// elemArray.push(elems[i]);
5002+
// }
5003+
// i = len;
5004+
// while (i--) {
5005+
// elem = elemArray[i];
5006+
// if (elem.parentNode) {
5007+
// // Has not already been removed from the DOM
5008+
// if (bindings = elem._jsvBnd) {
5009+
// // Get propertyChange bindings for this element
5010+
// // This may be an element with data-link, or the opening script marker node for a data-linked tag {^{...}}
5011+
// // bindings is a string with the syntax: "(&bindingId)*"
5012+
//// bindings = bindings.slice(1).split("&");
5013+
// elem._jsvBnd = "";
5014+
// // l = bindings.length;
5015+
//// while (l--) {
5016+
// while (binding = rSplitBindings.exec(bindings)) {
5017+
// // Remove associated bindings
5018+
// removeViewBinding(binding, elem._jsvLkEl, elem); // unbind bindings with this bindingId on this view
5019+
// }
5020+
// }
5021+
// disposeTokens(markerNodeInfo(elem) + (elem._df || ""));
5022+
// }
5023+
// }
5024+
//}
5025+
49925026
function removeViewBinding(bindId, linkedElemTag, elem) {
49935027
// Unbind
49945028
var objId, linkCtx, tag, object, obsId, tagCtxs, l, map, $linkedElem, linkedElem, trigger, view,
@@ -5045,7 +5079,7 @@ function removeViewBinding(bindId, linkedElemTag, elem) {
50455079
}
50465080
view = linkCtx.view;
50475081
if (view.type === "link") {
5048-
view.parent.removeViews(view._.key, undefined, true); // a "link" view is associated with the binding, so should be disposed with binding.
5082+
view.parent.removeViews(view._.key, undefined, true); // A "link" view is associated with the binding, so should be disposed with binding.
50495083
} else {
50505084
delete view._.bnds[bindId];
50515085
}

0 commit comments

Comments
 (0)