[Pkg-javascript-commits] [backbone] 95/211: Upgrade tests to Zepto 0.5
Jonas Smedegaard
js at moszumanska.debian.org
Sat May 3 17:00:08 UTC 2014
This is an automated email from the git hooks/post-receive script.
js pushed a commit to tag 0.5.0
in repository backbone.
commit c9a634982a8314e2df5ef2a6d7eded0a66d600ac
Author: Jeremy Ashkenas <jashkenas at gmail.com>
Date: Mon Mar 21 10:32:56 2011 -0400
Upgrade tests to Zepto 0.5
---
test/test-zepto.html | 2 +-
test/vendor/{zepto-0.4.js => zepto-0.5.js} | 220 ++++++++++++++++++++---------
2 files changed, 158 insertions(+), 64 deletions(-)
diff --git a/test/test-zepto.html b/test/test-zepto.html
index bcd39dc..4f7ad91 100644
--- a/test/test-zepto.html
+++ b/test/test-zepto.html
@@ -4,7 +4,7 @@
<title>Backbone Test Suite</title>
<link rel="stylesheet" href="vendor/qunit.css" type="text/css" media="screen" />
<script type="text/javascript" src="vendor/json2.js"></script>
- <script type="text/javascript" src="vendor/zepto-0.4.js"></script>
+ <script type="text/javascript" src="vendor/zepto-0.5.js"></script>
<script type="text/javascript" src="vendor/qunit.js"></script>
<script type="text/javascript" src="vendor/jslitmus.js"></script>
<script type="text/javascript" src="vendor/underscore-1.1.5.js"></script>
diff --git a/test/vendor/zepto-0.4.js b/test/vendor/zepto-0.5.js
similarity index 69%
rename from test/vendor/zepto-0.4.js
rename to test/vendor/zepto-0.5.js
index 4720dc9..2aaeeb3 100644
--- a/test/vendor/zepto-0.4.js
+++ b/test/vendor/zepto-0.5.js
@@ -1,14 +1,46 @@
-var Zepto = (function() {
- var slice = [].slice, key, css, $$, fragmentRE, container, document = window.document, undefined;
+if (String.prototype.trim === undefined) // fix for iOS 3.2
+ String.prototype.trim = function(){ return this.replace(/^\s+/, '').replace(/\s+$/, '') };
+
+// For iOS 3.x
+// from https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce
+if (Array.prototype.reduce === undefined)
+ Array.prototype.reduce = function(fun){
+ if(this === void 0 || this === null) throw new TypeError();
+ var t = Object(this), len = t.length >>> 0, k = 0, accumulator;
+ if(typeof fun !== "function") throw new TypeError();
+ if(len == 0 && arguments.length == 1) throw new TypeError();
+
+ if(arguments.length >= 2)
+ accumulator = arguments[1];
+ else
+ do{
+ if(k in t){
+ accumulator = t[k++];
+ break;
+ }
+ if(++k >= len) throw new TypeError();
+ } while (true);
- // fix for iOS 3.2
- if (String.prototype.trim === undefined)
- String.prototype.trim = function(){ return this.replace(/^\s+/, '').replace(/\s+$/, '') };
+ while (k < len){
+ if(k in t) accumulator = fun.call(undefined, accumulator, t[k], k, t);
+ k++;
+ }
+ return accumulator;
+ };
+var Zepto = (function() {
+ var slice = [].slice, key, css, $$, fragmentRE, container, document = window.document, undefined,
+ getComputedStyle = document.defaultView.getComputedStyle;
function classRE(name){ return new RegExp("(^|\\s)" + name + "(\\s|$)") }
function compact(array){ return array.filter(function(item){ return item !== undefined && item !== null }) }
function flatten(array){ return array.reduce(function(a,b){ return a.concat(b) }, []) }
function camelize(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }
+ function uniq(array){
+ var r = [];
+ for(var i=0,n=array.length;i<n;i++)
+ if(r.indexOf(array[i])<0) r.push(array[i]);
+ return r;
+ }
fragmentRE = /^\s*<.+>/;
container = document.createElement("div");
@@ -20,66 +52,93 @@ var Zepto = (function() {
}
function Z(dom, selector){
- this.dom = dom || [];
- this.length = this.dom.length;
- this.selector = selector || '';
+ dom = dom || [];
+ dom.__proto__ = Z.prototype;
+ dom.selector = selector || '';
+ return dom;
}
function $(selector, context){
- if (selector == document) return new Z;
+ if (selector == document) return Z();
else if (context !== undefined) return $(context).find(selector);
else if (typeof selector === 'function') return $(document).ready(selector);
+ else if (selector instanceof Z) return selector;
else {
var dom;
- if (selector instanceof Z) dom = selector.dom;
- else if (selector instanceof Array) dom = compact(selector);
+ if (selector instanceof Array) dom = compact(selector);
else if (selector instanceof Element || selector === window) dom = [selector];
else if (fragmentRE.test(selector)) dom = fragment(selector);
else dom = $$(document, selector);
-
- return new Z(dom, selector);
+ return Z(dom, selector);
}
}
$.extend = function(target, source){ for (key in source) target[key] = source[key]; return target }
$.qsa = $$ = function(element, selector){ return slice.call(element.querySelectorAll(selector)) }
+ function filtered(nodes, selector){
+ return selector === undefined ? $(nodes) : $(nodes).filter(selector);
+ }
+
$.fn = {
+ forEach: [].forEach,
+ map: [].map,
+ reduce: [].reduce,
+ push: [].push,
+ indexOf: [].indexOf,
+ concat: [].concat,
ready: function(callback){
document.addEventListener('DOMContentLoaded', callback, false); return this;
},
- get: function(idx){ return idx === undefined ? this.dom : this.dom[idx] },
+ get: function(idx){ return idx === undefined ? this : this[idx] },
size: function(){ return this.length },
remove: function(){ return this.each(function(){ this.parentNode.removeChild(this) }) },
each: function(callback){
- this.dom.forEach(function(el, idx){ callback.call(el, idx, el) });
+ this.forEach(function(el, idx){ callback.call(el, idx, el) });
return this;
},
filter: function(selector){
- return $(this.dom.filter(function(element){
+ return $([].filter.call(this, function(element){
return $$(element.parentNode, selector).indexOf(element) >= 0;
}));
},
is: function(selector){
- return this.length > 0 && $(this.dom[0]).filter(selector).length > 0;
+ return this.length > 0 && $(this[0]).filter(selector).length > 0;
},
- eq: function(idx){ return $(this.get(idx)) },
- first: function(){ return $(this.get(0)) },
- last: function(){ return $(this.get(this.length - 1)) },
+ not: function(selector){
+ var nodes=[];
+ if (typeof selector == 'function' && selector.call !== undefined)
+ this.each(function(idx){
+ if (!selector.call(this,idx)) nodes.push(this);
+ });
+ else {
+ var ignores = slice.call(
+ typeof selector === "string" ?
+ this.filter(selector) :
+ selector instanceof NodeList ? selector : $(selector));
+ slice.call(this).forEach(function(el){
+ if (ignores.indexOf(el) < 0) nodes.push(el);
+ });
+ }
+ return $(nodes);
+ },
+ eq: function(idx){ return $(this[idx]) },
+ first: function(){ return $(this[0]) },
+ last: function(){ return $(this[this.length - 1]) },
find: function(selector){
var result;
- if (this.length == 1) result = $$(this.get(0), selector);
- else result = flatten(this.dom.map(function(el){ return $$(el, selector) }));
+ if (this.length == 1) result = $$(this[0], selector);
+ else result = flatten(this.map(function(el){ return $$(el, selector) }));
return $(result);
},
closest: function(selector, context){
- var node = this.dom[0], nodes = $$(context !== undefined ? context : document, selector);
+ var node = this[0], nodes = $$(context !== undefined ? context : document, selector);
if (nodes.length === 0) node = null;
while(node && node !== document && nodes.indexOf(node) < 0) node = node.parentNode;
return $(node);
},
parents: function(selector){
- var ancestors = [], nodes = this.get();
+ var ancestors = [], nodes = this;
while (nodes.length > 0)
nodes = compact(nodes.map(function(node){
if ((node = node.parentNode) && node !== document && ancestors.indexOf(node) < 0) {
@@ -87,53 +146,58 @@ var Zepto = (function() {
return node;
}
}));
- ancestors = $(ancestors);
- return selector === undefined ? ancestors : ancestors.filter(selector);
+ return filtered(ancestors, selector);
},
parent: function(selector){
- var node, nodes = [];
- this.each(function(){
- if ((node = this.parentNode) && nodes.indexOf(node) < 0) nodes.push(node);
- });
- nodes = $(nodes);
- return selector === undefined ? nodes : nodes.filter(selector);
+ return filtered(uniq(compact(this.pluck('parentNode'))), selector);
},
- pluck: function(property){ return this.dom.map(function(element){ return element[property] }) },
+ children: function(selector){
+ return filtered(flatten(this.map(function(el){ return slice.call(el.children) })), selector);
+ },
+ siblings: function(selector){
+ return filtered(flatten(this.map(function(el){
+ return slice.call(el.parentNode.children).filter(function(child){ return child!==el });
+ })), selector);
+ },
+ pluck: function(property){ return this.map(function(element){ return element[property] }) },
show: function(){ return this.css('display', 'block') },
hide: function(){ return this.css('display', 'none') },
prev: function(){ return $(this.pluck('previousElementSibling')) },
next: function(){ return $(this.pluck('nextElementSibling')) },
html: function(html){
return html === undefined ?
- (this.length > 0 ? this.dom[0].innerHTML : null) :
- this.each(function(idx){ this.innerHTML = typeof html == 'function' ? html(idx, this.innerHTML) : html });
+ (this.length > 0 ? this[0].innerHTML : null) :
+ this.each(function(idx){ this.innerHTML = typeof html == 'function' ? html.call(this, idx, this.innerHTML) : html });
},
text: function(text){
return text === undefined ?
- (this.length > 0 ? this.dom[0].innerText : null) :
+ (this.length > 0 ? this[0].innerText : null) :
this.each(function(){ this.innerText = text });
},
attr: function(name, value){
return (typeof name == 'string' && value === undefined) ?
- (this.length > 0 && this.dom[0].nodeName === 'INPUT' && this.dom[0].type === 'text' && name === 'value') ? (this.val()) :
- (this.length > 0 ? this.dom[0].getAttribute(name) || undefined : null) :
+ (this.length > 0 && this[0].nodeName === 'INPUT' && this[0].type === 'text' && name === 'value') ? (this.val()) :
+ (this.length > 0 ? this[0].getAttribute(name) || (name in this[0] ? this[0][name] : undefined) : null) :
this.each(function(idx){
if (typeof name == 'object') for (key in name) this.setAttribute(key, name[key])
- else this.setAttribute(name, typeof value == 'function' ? value(idx, this.getAttribute(name)) : value);
+ else this.setAttribute(name, typeof value == 'function' ? value.call(this, idx, this.getAttribute(name)) : value);
});
},
removeAttr: function(name) {
return this.each(function() { this.removeAttribute(name); });
},
+ data: function(name, value){
+ return this.attr('data-' + name, value);
+ },
val: function(value){
return (value === undefined) ?
- (this.length > 0 ? this.dom[0].value : null) :
+ (this.length > 0 ? this[0].value : null) :
this.each(function(){
this.value = value;
});
},
offset: function(){
- var obj = this.dom[0].getBoundingClientRect();
+ var obj = this[0].getBoundingClientRect();
return {
left: obj.left + document.body.scrollLeft,
top: obj.top + document.body.scrollTop,
@@ -142,17 +206,18 @@ var Zepto = (function() {
};
},
css: function(property, value){
- if (value === undefined && typeof property == 'string') return this.dom[0].style[camelize(property)];
+ if (value === undefined && typeof property == 'string')
+ return this[0].style[camelize(property)] || getComputedStyle(this[0], '').getPropertyValue(property);
css = "";
for (key in property) css += key + ':' + property[key] + ';';
if (typeof property == 'string') css = property + ":" + value;
return this.each(function() { this.style.cssText += ';' + css });
},
index: function(element){
- return this.dom.indexOf($(element).get(0));
+ return this.indexOf($(element)[0]);
},
hasClass: function(name){
- return classRE(name).test(this.dom[0].className);
+ return classRE(name).test(this[0].className);
},
addClass: function(name){
return this.each(function(){
@@ -184,7 +249,7 @@ var Zepto = (function() {
return function(html){
return this.each(function(index, element){
if (html instanceof Z) {
- dom = html.dom;
+ dom = html;
if (operator == "afterBegin" || operator == "afterEnd")
for (var i=0; i<dom.length; i++) element['insertAdjacentElement'](operator, dom[dom.length-i-1]);
else
@@ -263,6 +328,15 @@ var Zepto = (function() {
remove(this, event, callback);
});
};
+ $.fn.one = function(event, callback){
+ return this.each(function(){
+ var self = this;
+ add(this, event, function wrapper(){
+ callback();
+ remove(self, event, arguments.callee);
+ });
+ });
+ };
var eventMethods = ['preventDefault', 'stopImmediatePropagation', 'stopPropagation'];
function createProxy(event) {
@@ -304,7 +378,7 @@ var Zepto = (function() {
$.fn.trigger = function(event){
return this.each(function(){
var e = document.createEvent('Events');
- this.dispatchEvent(e, e.initEvent(event, true, false));
+ this.dispatchEvent(e, e.initEvent(event, true, true));
});
};
})(Zepto);
@@ -330,12 +404,14 @@ var Zepto = (function() {
$.browser = v ? { webkit: true, version: v[1] } : { webkit: false };
})(Zepto);
(function($){
- $.fn.anim = function(properties, duration, ease){
+ $.fn.anim = function(properties, duration, ease, callback){
var transforms = [], opacity, key;
for (key in properties)
if (key === 'opacity') opacity = properties[key];
else transforms.push(key + '(' + properties[key] + ')');
+ typeof callback == 'function' && this.one('webkitTransitionEnd', callback);
+
return this.css({
'-webkit-transition': 'all ' + (duration !== undefined ? duration : 0.5) + 's ' + (ease || ''),
'-webkit-transform': transforms.join(' '),
@@ -383,17 +459,18 @@ var Zepto = (function() {
});
})(Zepto);
(function($){
-
var jsonpID = 0;
function empty() {}
$.ajaxJSONP = function(options){
- var jsonpString;
- jsonpString = 'jsonp' + ++jsonpID;
- window[jsonpString] = options.success;
- var script = document.createElement('script');
- $(script).attr({ src: options.url.replace(/callback=\?/, 'callback=' + jsonpString) });
+ var jsonpString = 'jsonp' + ++jsonpID,
+ script = document.createElement('script');
+ window[jsonpString] = function(data){
+ options.success(data);
+ delete window.jsonpString;
+ };
+ script.src = options.url.replace(/=\?/, '=' + jsonpString);
$('head').append(script);
};
@@ -401,14 +478,15 @@ var Zepto = (function() {
// { type, url, data, success, dataType, contentType }
options = options || {};
- if (options.url && /callback=\?/.test(options.url))
+ if (options.url && /=\?/.test(options.url))
return $.ajaxJSONP(options);
var data = options.data,
callback = options.success || empty,
errback = options.error || empty,
mime = mimeTypes[options.dataType],
- content = options.contentType,
+ type = options.type || "GET",
+ content = options.contentType || (type === "POST" ? "application/x-www-form-urlencoded" : ""),
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
@@ -430,9 +508,9 @@ var Zepto = (function() {
}
};
- xhr.open(options.type || 'GET', options.url || window.location, true);
+ xhr.open(type, options.url || window.location, true);
if (mime) xhr.setRequestHeader('Accept', mime);
- if (data instanceof Object) data = JSON.stringify(data), content = content || 'application/json';
+ if (data instanceof Object) data = $.param(data);
if (content) xhr.setRequestHeader('Content-Type', content);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.send(data);
@@ -453,7 +531,7 @@ var Zepto = (function() {
$.getJSON = function(url, success){ $.ajax({ url: url, success: success, dataType: 'json' }) };
$.fn.load = function(url, success){
- if (!this.dom.length) return this;
+ if (!this.length) return this;
var self = this, parts = url.split(/\s/), selector;
if (parts.length > 1) url = parts[0], selector = parts[1];
$.get(url, function(response){
@@ -464,19 +542,35 @@ var Zepto = (function() {
});
return this;
};
+
+ $.param = function(obj, v){
+ var s = [],
+ rec = '',
+ add = function(key, value){
+ if(v) s[s.length] = encodeURIComponent(v + "[" + key +"]") + '=' + encodeURIComponent(value);
+ else s[s.length] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
+ };
+ for(var i in obj){
+ if(obj[i] instanceof Array || obj[i] instanceof Object)
+ rec += (s.length + rec.length > 0 ? '&' : '') + $.param(obj[i], (v ? v + "[" + i + "]" : i));
+ else
+ add(obj instanceof Array ? '' : i, obj[i]);
+ };
+ return s.join("&").replace(/%20/g, "+") + rec;
+ };
})(Zepto);
(function($){
var cache = [], timeout;
$.fn.remove = function(){
- return this.each(function(element){
- if(element.tagName == 'IMG'){
- cache.push(element);
- element.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
+ return this.each(function(){
+ if(this.tagName == 'IMG'){
+ cache.push(this);
+ this.src = 'data:image/gif;base64,R0lGODlhAQABAAAAADs=';
if (timeout) clearTimeout(timeout);
timeout = setTimeout(function(){ cache = [] }, 60000);
}
- element.parentNode.removeChild(element);
+ this.parentNode.removeChild(this);
});
}
})(Zepto);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/backbone.git
More information about the Pkg-javascript-commits
mailing list