Skip to content

Instantly share code, notes, and snippets.

@LeonardoCiaccio
Created August 2, 2017 14:51
Show Gist options
  • Select an option

  • Save LeonardoCiaccio/c3f926783269702edfe44b0f2188c38c to your computer and use it in GitHub Desktop.

Select an option

Save LeonardoCiaccio/c3f926783269702edfe44b0f2188c38c to your computer and use it in GitHub Desktop.
Aggiunge un attributo con un valore shared, utile per distinguere elementi con struttura uguale
/*
Version : 1.0.0
Aggiunge un attributo shared dinamico a seconda delle opzioni, molto utile per avere riferimenti shared
vuol dire che più di un elemento può avere lo stesso valore:
window._class( {
selector : "signature" // default "_class"
,main : "body" // default "html"
,allowed : [ "div", "span" ] // default []
,ignored : [] // default []
,onend : function(){ console.log( "END" ); } // default function(){}
} );
In questo esempio tutti i "div" e i "span" contenuti nel tag "body" otterranno
in aggiunta un nuovo attributo con nome "signature" e valore shared.
L'opzione "ignored" possiede una priorità maggiore di "allowed", se avessimo settato
questa opzione a "[ 'span' ]" tutti gli "span" non avrebbero ottenuto i nuovi attributi
anche se presenti in "allowed"
COMPRESSO :
!function(e){"use strict";function n(e,n){var r=(65535&e)+(65535&n),t=(e>>16)+(n>>16)+(r>>16);return t<<16|65535&r}function r(e,n){return e<<n|e>>>32-n}function t(e,t,o,i,a,u){return n(r(n(n(t,e),n(i,u)),a),o)}function o(e,n,r,o,i,a,u){return t(n&r|~n&o,e,n,i,a,u)}function i(e,n,r,o,i,a,u){return t(n&o|r&~o,e,n,i,a,u)}function a(e,n,r,o,i,a,u){return t(n^r^o,e,n,i,a,u)}function u(e,n,r,o,i,a,u){return t(r^(n|~o),e,n,i,a,u)}function c(e,r){e[r>>5]|=128<<r%32,e[(r+64>>>9<<4)+14]=r;var t,c,l,f,d,g=1732584193,s=-271733879,m=-1732584194,y=271733878;for(t=0;t<e.length;t+=16)c=g,l=s,f=m,d=y,g=o(g,s,m,y,e[t],7,-680876936),y=o(y,g,s,m,e[t+1],12,-389564586),m=o(m,y,g,s,e[t+2],17,606105819),s=o(s,m,y,g,e[t+3],22,-1044525330),g=o(g,s,m,y,e[t+4],7,-176418897),y=o(y,g,s,m,e[t+5],12,1200080426),m=o(m,y,g,s,e[t+6],17,-1473231341),s=o(s,m,y,g,e[t+7],22,-45705983),g=o(g,s,m,y,e[t+8],7,1770035416),y=o(y,g,s,m,e[t+9],12,-1958414417),m=o(m,y,g,s,e[t+10],17,-42063),s=o(s,m,y,g,e[t+11],22,-1990404162),g=o(g,s,m,y,e[t+12],7,1804603682),y=o(y,g,s,m,e[t+13],12,-40341101),m=o(m,y,g,s,e[t+14],17,-1502002290),s=o(s,m,y,g,e[t+15],22,1236535329),g=i(g,s,m,y,e[t+1],5,-165796510),y=i(y,g,s,m,e[t+6],9,-1069501632),m=i(m,y,g,s,e[t+11],14,643717713),s=i(s,m,y,g,e[t],20,-373897302),g=i(g,s,m,y,e[t+5],5,-701558691),y=i(y,g,s,m,e[t+10],9,38016083),m=i(m,y,g,s,e[t+15],14,-660478335),s=i(s,m,y,g,e[t+4],20,-405537848),g=i(g,s,m,y,e[t+9],5,568446438),y=i(y,g,s,m,e[t+14],9,-1019803690),m=i(m,y,g,s,e[t+3],14,-187363961),s=i(s,m,y,g,e[t+8],20,1163531501),g=i(g,s,m,y,e[t+13],5,-1444681467),y=i(y,g,s,m,e[t+2],9,-51403784),m=i(m,y,g,s,e[t+7],14,1735328473),s=i(s,m,y,g,e[t+12],20,-1926607734),g=a(g,s,m,y,e[t+5],4,-378558),y=a(y,g,s,m,e[t+8],11,-2022574463),m=a(m,y,g,s,e[t+11],16,1839030562),s=a(s,m,y,g,e[t+14],23,-35309556),g=a(g,s,m,y,e[t+1],4,-1530992060),y=a(y,g,s,m,e[t+4],11,1272893353),m=a(m,y,g,s,e[t+7],16,-155497632),s=a(s,m,y,g,e[t+10],23,-1094730640),g=a(g,s,m,y,e[t+13],4,681279174),y=a(y,g,s,m,e[t],11,-358537222),m=a(m,y,g,s,e[t+3],16,-722521979),s=a(s,m,y,g,e[t+6],23,76029189),g=a(g,s,m,y,e[t+9],4,-640364487),y=a(y,g,s,m,e[t+12],11,-421815835),m=a(m,y,g,s,e[t+15],16,530742520),s=a(s,m,y,g,e[t+2],23,-995338651),g=u(g,s,m,y,e[t],6,-198630844),y=u(y,g,s,m,e[t+7],10,1126891415),m=u(m,y,g,s,e[t+14],15,-1416354905),s=u(s,m,y,g,e[t+5],21,-57434055),g=u(g,s,m,y,e[t+12],6,1700485571),y=u(y,g,s,m,e[t+3],10,-1894986606),m=u(m,y,g,s,e[t+10],15,-1051523),s=u(s,m,y,g,e[t+1],21,-2054922799),g=u(g,s,m,y,e[t+8],6,1873313359),y=u(y,g,s,m,e[t+15],10,-30611744),m=u(m,y,g,s,e[t+6],15,-1560198380),s=u(s,m,y,g,e[t+13],21,1309151649),g=u(g,s,m,y,e[t+4],6,-145523070),y=u(y,g,s,m,e[t+11],10,-1120210379),m=u(m,y,g,s,e[t+2],15,718787259),s=u(s,m,y,g,e[t+9],21,-343485551),g=n(g,c),s=n(s,l),m=n(m,f),y=n(y,d);return[g,s,m,y]}function l(e){var n,r="",t=32*e.length;for(n=0;t>n;n+=8)r+=String.fromCharCode(e[n>>5]>>>n%32&255);return r}function f(e){var n,r=[];for(r[(e.length>>2)-1]=void 0,n=0;n<r.length;n+=1)r[n]=0;var t=8*e.length;for(n=0;t>n;n+=8)r[n>>5]|=(255&e.charCodeAt(n/8))<<n%32;return r}function d(e){return l(c(f(e),8*e.length))}function g(e,n){var r,t,o=f(e),i=[],a=[];for(i[15]=a[15]=void 0,o.length>16&&(o=c(o,8*e.length)),r=0;16>r;r+=1)i[r]=909522486^o[r],a[r]=1549556828^o[r];return t=c(i.concat(f(n)),512+8*n.length),l(c(a.concat(t),640))}function s(e){var n,r,t="0123456789abcdef",o="";for(r=0;r<e.length;r+=1)n=e.charCodeAt(r),o+=t.charAt(n>>>4&15)+t.charAt(15&n);return o}function m(e){return unescape(encodeURIComponent(e))}function y(e){return d(m(e))}function p(e){return s(y(e))}function h(e,n){return g(m(e),m(n))}function v(e,n){return s(h(e,n))}function A(e,n,r){return n?r?h(n,e):v(n,e):r?y(e):p(e)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:e.md5=A}(this),function(){"use strict";var e={selector:"_class",main:"html",allowed:[],ignored:[],onend:function(){}},n=function(e){return"string"==typeof e?e.toUpperCase():e};Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),window._class=function(r){var t=JSON.parse(JSON.stringify(e));r&&("string"==typeof r.selector&&(t.selector=r.selector),"string"==typeof r.main&&(t.main=r.main),Array.isArray(r.allowed)&&(t.allowed=r.allowed),Array.isArray(r.ignored)&&(t.ignored=r.ignored),"function"==typeof r.onend&&(t.onend=r.onend));for(var o=0;o<t.allowed.length;o++)t.allowed[o]=n(t.allowed[o]);for(var o=0;o<t.ignored.length;o++)t.ignored[o]=n(t.ignored[o]);var i=document.querySelector(t.main);if(!i)return t.onend();for(var a=document.querySelectorAll("*"),u=0;u<a.length;u++)a[u].removeAttribute(t.selector);a=[],a=i.getElementsByTagName("*");for(var u=0;u<a.length;u++){for(var c=a[u].getElementsByTagName("*"),l="",f="",d=0;d<c.length;d++)t.allowed.indexOf(c[d].tagName.toUpperCase())<0||t.ignored.indexOf(c[d].tagName.toUpperCase())>-1||(l+=c[d].tagName.toUpperCase());f=""!=l?md5(l):"",a[u].setAttribute(t.selector,f)}t.onend()}}();
*/
// --> MD5 lib https://cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.8.0/js/md5.min.js
!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<<t|n>>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<<r%32,n[(r+64>>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e<n.length;e+=16)i=l,a=g,h=v,d=m,l=o(l,g,v,m,n[e],7,-680876936),m=o(m,l,g,v,n[e+1],12,-389564586),v=o(v,m,l,g,n[e+2],17,606105819),g=o(g,v,m,l,n[e+3],22,-1044525330),l=o(l,g,v,m,n[e+4],7,-176418897),m=o(m,l,g,v,n[e+5],12,1200080426),v=o(v,m,l,g,n[e+6],17,-1473231341),g=o(g,v,m,l,n[e+7],22,-45705983),l=o(l,g,v,m,n[e+8],7,1770035416),m=o(m,l,g,v,n[e+9],12,-1958414417),v=o(v,m,l,g,n[e+10],17,-42063),g=o(g,v,m,l,n[e+11],22,-1990404162),l=o(l,g,v,m,n[e+12],7,1804603682),m=o(m,l,g,v,n[e+13],12,-40341101),v=o(v,m,l,g,n[e+14],17,-1502002290),g=o(g,v,m,l,n[e+15],22,1236535329),l=u(l,g,v,m,n[e+1],5,-165796510),m=u(m,l,g,v,n[e+6],9,-1069501632),v=u(v,m,l,g,n[e+11],14,643717713),g=u(g,v,m,l,n[e],20,-373897302),l=u(l,g,v,m,n[e+5],5,-701558691),m=u(m,l,g,v,n[e+10],9,38016083),v=u(v,m,l,g,n[e+15],14,-660478335),g=u(g,v,m,l,n[e+4],20,-405537848),l=u(l,g,v,m,n[e+9],5,568446438),m=u(m,l,g,v,n[e+14],9,-1019803690),v=u(v,m,l,g,n[e+3],14,-187363961),g=u(g,v,m,l,n[e+8],20,1163531501),l=u(l,g,v,m,n[e+13],5,-1444681467),m=u(m,l,g,v,n[e+2],9,-51403784),v=u(v,m,l,g,n[e+7],14,1735328473),g=u(g,v,m,l,n[e+12],20,-1926607734),l=c(l,g,v,m,n[e+5],4,-378558),m=c(m,l,g,v,n[e+8],11,-2022574463),v=c(v,m,l,g,n[e+11],16,1839030562),g=c(g,v,m,l,n[e+14],23,-35309556),l=c(l,g,v,m,n[e+1],4,-1530992060),m=c(m,l,g,v,n[e+4],11,1272893353),v=c(v,m,l,g,n[e+7],16,-155497632),g=c(g,v,m,l,n[e+10],23,-1094730640),l=c(l,g,v,m,n[e+13],4,681279174),m=c(m,l,g,v,n[e],11,-358537222),v=c(v,m,l,g,n[e+3],16,-722521979),g=c(g,v,m,l,n[e+6],23,76029189),l=c(l,g,v,m,n[e+9],4,-640364487),m=c(m,l,g,v,n[e+12],11,-421815835),v=c(v,m,l,g,n[e+15],16,530742520),g=c(g,v,m,l,n[e+2],23,-995338651),l=f(l,g,v,m,n[e],6,-198630844),m=f(m,l,g,v,n[e+7],10,1126891415),v=f(v,m,l,g,n[e+14],15,-1416354905),g=f(g,v,m,l,n[e+5],21,-57434055),l=f(l,g,v,m,n[e+12],6,1700485571),m=f(m,l,g,v,n[e+3],10,-1894986606),v=f(v,m,l,g,n[e+10],15,-1051523),g=f(g,v,m,l,n[e+1],21,-2054922799),l=f(l,g,v,m,n[e+8],6,1873313359),m=f(m,l,g,v,n[e+15],10,-30611744),v=f(v,m,l,g,n[e+6],15,-1560198380),g=f(g,v,m,l,n[e+13],21,1309151649),l=f(l,g,v,m,n[e+4],6,-145523070),m=f(m,l,g,v,n[e+11],10,-1120210379),v=f(v,m,l,g,n[e+2],15,718787259),g=f(g,v,m,l,n[e+9],21,-343485551),l=t(l,i),g=t(g,a),v=t(v,h),m=t(m,d);return[l,g,v,m]}function a(n){var t,r="",e=32*n.length;for(t=0;t<e;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var e=8*n.length;for(t=0;t<e;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function d(n){return a(i(h(n),8*n.length))}function l(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,o.length>16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this);
( function(){
"use strict";
// --> Varibili globali
var
_options = {
//--> Il nome del selettore univoco
selector : "_class"
// --> Il selettore che contiene tutti gli elementi da segnare
,main : "html"
// --> Tags consentiti
,allowed : []
// --> Ignora questi tag, filtra
,ignored : []
// --> Evento generato alla fine della routin
,onend : function(){}
}
,_toUpper = function( x ){
return ( typeof x === "string" ) ? x.toUpperCase() : x;
}
;
// --> Controllo array nativo, se è un array
if ( !Array.isArray ){
Array.isArray = function( arg ){
return ( Object.prototype.toString.call( arg ) === "[object Array]" );
};
}
// --> L'oggetto _class
window._class = function( opts ){
// --> Clono le opzioni di base ed eventualmente lo aggiorno
var myopts = JSON.parse( JSON.stringify( _options ) );
if( opts ){
if( typeof opts.selector === "string" )myopts.selector = opts.selector;
if( typeof opts.main === "string" )myopts.main = opts.main;
if( Array.isArray( opts.allowed ) )myopts.allowed = opts.allowed;
if( Array.isArray( opts.ignored ) )myopts.ignored = opts.ignored;
if( typeof opts.onend === "function" )myopts.onend = opts.onend;
}
// --> I consentiti in maiuscolo
for( var i = 0; i < myopts.allowed.length; i++ ){
myopts.allowed[ i ] = _toUpper( myopts.allowed[ i ] );
}
// --> Il filtro in maiuscolo
for( var i = 0; i < myopts.ignored.length; i++ ){
myopts.ignored[ i ] = _toUpper( myopts.ignored[ i ] );
}
// --> Seleziono il contenitore (main)
var main = document.querySelector( myopts.main );
if( !main )return myopts.onend();
// --> Rimuovo tutte le signature
var all = document.querySelectorAll( "*" );
for( var x = 0; x < all.length; x++ ){
all[ x ].removeAttribute( myopts.selector );
}
// --> Segno ogni singolo elemento con md5 in scalata
all = [];
all = main.getElementsByTagName( "*" );
var signed = 0;
for( var x = 0; x < all.length; x++ ){
// --> Devo controllare tutti gli elementi consentiti per ricreare l'ordine
var
allChild = all[ x ].getElementsByTagName( "*" )
,concat = ""
,hash = ""
;
for( var xx = 0; xx < allChild.length; xx++ ){
if( myopts.allowed.indexOf( allChild[ xx ].tagName.toUpperCase() ) < 0 )continue;
if( myopts.ignored.indexOf( allChild[ xx ].tagName.toUpperCase() ) > -1 )continue;
concat = concat + allChild[ xx ].tagName.toUpperCase();
}
hash = ( concat != "" ) ? md5( concat ) : "";
all[ x ].setAttribute( myopts.selector, hash );
}
myopts.onend();
}; // <-- window._id()
} )();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment