Replaced prototype with regular object for AttrPlugin I hope it's for better performance

This commit is contained in:
thednp 2016-09-18 01:03:06 +03:00
parent c37c404dfe
commit f631185602
3 changed files with 39 additions and 45 deletions

View file

@ -22,52 +22,49 @@
}( function (KUTE) {
'use strict';
var K = window.KUTE, DOM = K.dom, PP = K.pp, unit = K.Interpolate.unit, number = K.Interpolate.number;
// get current attribute value
K.gCA = function(e,a){
return e.getAttribute(a);
}
var K = window.KUTE, DOM = K.dom, PP = K.pp, unit = K.Interpolate.unit, number = K.Interpolate.number, atts,
gCA = function(e,a){ // get current attribute value
return e.getAttribute(a);
};
K.prS['attr'] = function(el,p,v){
var f = {};
for (var a in v){
f[a.replace(/_+[a-z]+/,'')] = K.gCA(el,a.replace(/_+[a-z]+/,''));
f[a.replace(/_+[a-z]+/,'')] = gCA(el,a.replace(/_+[a-z]+/,''));
}
return f;
};
// register the render attributes object
if (!('attr' in DOM)) {
DOM.attr = function(l,p,a,b,v) {
for ( var o in b ){
DOM.attr.prototype[o](l,o,a[o],b[o],v);
}
};
}
var ra = DOM.attr.prototype;
// process attributes object K.pp.attr(t[x])
// and also register their render functions
PP['attr'] = function(a,o){
if (!('attr' in DOM)) {
DOM.attr = function(l,p,a,b,v) {
for ( var o in b ){
DOM.attributes[o](l,o,a[o],b[o],v);
}
}
atts = DOM.attributes = {}
}
var ats = {}, p;
for ( p in o ) {
if ( /%|px/.test(o[p]) ) {
var u = K.truD(o[p]).u, s = /%/.test(u) ? '_percent' : '_'+u;
if (!(p+s in ra)) {
ra[p+s] = function(l,p,a,b,v) {
if (!(p+s in atts)) {
atts[p+s] = function(l,p,a,b,v) {
var _p = p.replace(s,'');
l.setAttribute(_p, unit(a.v,b.v,b.u,v) );
}
}
ats[p+s] = K.truD(o[p]);
} else {
if (!(p in ra)) {
ra[p] = function(l,o,a,b,v) {
if (!(p in atts)) {
atts[p] = function(l,o,a,b,v) {
l.setAttribute(o, number(a,b,v));
}
}
ats[p] = o[p] * 1;
ats[p] = parseFloat(o[p]);
}
}
return ats;

View file

@ -1,2 +1,2 @@
// Attributes Plugin for KUTE.js | dnp_theme | MIT License
(function(c){if("function"===typeof define&&define.amd)define(["./kute.js"],function(a){c(a);return a});else if("object"==typeof module&&"function"==typeof require){var a=require("./kute.js");module.exports=c(a)}else if("undefined"!==typeof window.KUTE)c(a);else throw Error("Attributes Plugin require KUTE.js.");})(function(c){var a=window.KUTE,e=a.dom;c=a.pp;var k=a.Interpolate.unit,l=a.Interpolate.number;a.gCA=function(a,d){return a.getAttribute(d)};a.prS.attr=function(c,d,h){d={};for(var b in h)d[b.replace(/_+[a-z]+/,"")]=a.gCA(c,b.replace(/_+[a-z]+/,""));return d};"attr"in e||(e.attr=function(a,d,c,b,g){for(var f in b)e.attr.prototype[f](a,f,c[f],b[f],g)});var g=e.attr.prototype;c.attr=function(c,d){var h={},b;for(b in d)if(/%|px/.test(d[b])){var e=a.truD(d[b]).u,f=/%/.test(e)?"_percent":"_"+e;b+f in g||(g[b+f]=function(a,b,d,c,e){b=b.replace(f,"");a.setAttribute(b,k(d.v,c.v,c.u,e))});h[b+f]=a.truD(d[b])}else b in g||(g[b]=function(a,b,c,d,e){a.setAttribute(b,l(c,d,e))}),h[b]=1*d[b];return h}});
(function(e){if("function"===typeof define&&define.amd)define(["./kute.js"],function(a){e(a);return a});else if("object"==typeof module&&"function"==typeof require){var a=require("./kute.js");module.exports=e(a)}else if("undefined"!==typeof window.KUTE)e(a);else throw Error("Attributes Plugin require KUTE.js.");})(function(e){var a=window.KUTE,h=a.dom;e=a.pp;var l=a.Interpolate.unit,m=a.Interpolate.number,g;a.prS.attr=function(a,c,f){c={};for(var b in f){f=b.replace(/_+[a-z]+/,"");var d;d=b.replace(/_+[a-z]+/,"");d=a.getAttribute(d);c[f]=d}return c};e.attr=function(e,c){"attr"in h||(h.attr=function(a,b,c,e,f){for(var d in e)h.attributes[d](a,d,c[d],e[d],f)},g=h.attributes={});var f={},b;for(b in c)if(/%|px/.test(c[b])){var d=a.truD(c[b]).u,k=/%/.test(d)?"_percent":"_"+d;b+k in g||(g[b+k]=function(a,b,d,c,e){b=b.replace(k,"");a.setAttribute(b,l(d.v,c.v,c.u,e))});f[b+k]=a.truD(c[b])}else b in g||(g[b]=function(a,b,c,d,e){a.setAttribute(b,m(c,d,e))}),f[b]=parseFloat(c[b]);return f}});

View file

@ -22,52 +22,49 @@
}( function (KUTE) {
'use strict';
var K = window.KUTE, DOM = K.dom, PP = K.pp, unit = K.Interpolate.unit, number = K.Interpolate.number;
// get current attribute value
K.gCA = function(e,a){
return e.getAttribute(a);
}
var K = window.KUTE, DOM = K.dom, PP = K.pp, unit = K.Interpolate.unit, number = K.Interpolate.number, atts,
gCA = function(e,a){ // get current attribute value
return e.getAttribute(a);
};
K.prS['attr'] = function(el,p,v){
var f = {};
for (var a in v){
f[a.replace(/_+[a-z]+/,'')] = K.gCA(el,a.replace(/_+[a-z]+/,''));
f[a.replace(/_+[a-z]+/,'')] = gCA(el,a.replace(/_+[a-z]+/,''));
}
return f;
};
// register the render attributes object
if (!('attr' in DOM)) {
DOM.attr = function(l,p,a,b,v) {
for ( var o in b ){
DOM.attr.prototype[o](l,o,a[o],b[o],v);
}
};
}
var ra = DOM.attr.prototype;
// process attributes object K.pp.attr(t[x])
// and also register their render functions
PP['attr'] = function(a,o){
if (!('attr' in DOM)) {
DOM.attr = function(l,p,a,b,v) {
for ( var o in b ){
DOM.attributes[o](l,o,a[o],b[o],v);
}
}
atts = DOM.attributes = {}
}
var ats = {}, p;
for ( p in o ) {
if ( /%|px/.test(o[p]) ) {
var u = K.truD(o[p]).u, s = /%/.test(u) ? '_percent' : '_'+u;
if (!(p+s in ra)) {
ra[p+s] = function(l,p,a,b,v) {
if (!(p+s in atts)) {
atts[p+s] = function(l,p,a,b,v) {
var _p = p.replace(s,'');
l.setAttribute(_p, unit(a.v,b.v,b.u,v) );
}
}
ats[p+s] = K.truD(o[p]);
} else {
if (!(p in ra)) {
ra[p] = function(l,o,a,b,v) {
if (!(p in atts)) {
atts[p] = function(l,o,a,b,v) {
l.setAttribute(o, number(a,b,v));
}
}
ats[p] = o[p] * 1;
ats[p] = parseFloat(o[p]);
}
}
return ats;