-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsf.min.js
6 lines (6 loc) · 1.51 KB
/
sf.min.js
1
2
3
4
5
6
/* switch-factory
* Functions that build switch functions.
* (c) 2013 David (daXXog) Volm ><> + + + <><
* Released under Apache License, Version 2.0:
* http://www.apache.org/licenses/LICENSE-2.0.html
*/ !function(n,r){"object"==typeof exports?module.exports=r():"function"==typeof define&&define.amd?define(r):n.sf=r()}(this,function(){var allow=function(n){var r=n;return function(n){var t="";return n.split("").forEach(function(n){-1!==r.indexOf(n)&&(t+=n)}),t}},filterStr='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890 {}[];:/,.<>()!@#$%^&*~`|_+=-"',numbersOnlyStr="1234567890",filter=allow(filterStr),numbersOnly=allow(numbersOnlyStr),sf={is:function(list){var f,fx="f = function(s){switch(s.length){",byLen={},err=!1;if(Array.isArray(list)&&list.length>0?list.forEach(function(n){if("string"==typeof n){var r=numbersOnly(n.length.toString());"undefined"==typeof byLen[r]&&(byLen[r]=[]),byLen[r].push(filter(n))}else err="Non string element detected!"}):err="Argument is not a non empty Array!",err!==!1)throw err;for(var i in byLen){var v=byLen[i];fx+="case "+i+":switch(s){",v.forEach(function(n){fx+="case '"+n+"':"}),fx+="return true;}return false;"}return fx+="default:return false;}}",eval(fx),f},run:function(n,r){var t=r[n],e=r["default"];return"function"==typeof t?t(n):"function"==typeof e?e(n):void 0},allow:function(n){var r=sf.is(n.split(""));return function(n){var t="";return n.split("").forEach(function(n){r(n)&&(t+=n)}),t}}};return filter=sf.allow(filterStr),numbersOnly=sf.allow(numbersOnlyStr),sf});