-
Notifications
You must be signed in to change notification settings - Fork 0
/
protostring.min.js
6 lines (6 loc) · 10.9 KB
/
protostring.min.js
1
2
3
4
5
6
/*
* PROTOSTRING
* https://github.com/SethClydesdale/protostring
* A library of methods that extend upon the JavaScript String Object
*/
String.prototype.encodeAs=function(t){t=t?t.toLowerCase():"decimal";var e,r=1,o=this.length,n=this.charCodeAt(0),s=" ",i="";switch(t){case"decimal":break;case"hex":e=16,n=n.toString(e);break;case"binary":e=2,n=n.toString(e);break;case"entity":r=0,n="",s="&#",i=";";break;default:throw new TypeError('"'+t+'" is not an encoding method')}for(;o>r;r++)n+=s+this.charCodeAt(r).toString(e)+i;return n},String.prototype.decodeAs=function(t){if(t=t?t.toLowerCase():"decimal","entity"!=t){for(var e,r=this.split(" "),o=0,n="";e=r[o];o++){switch(t){case"decimal":break;case"hex":e=parseInt(e,16);break;case"binary":e="0b"+e;break;default:throw new TypeError('"'+t+'" is not a decoding method')}n+=String.fromCharCode(e)}return n}return this.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(e)})},String.prototype.toEnclosed=function(){for(var t,e=0,r="";t=this[e];e++)t=t.charCodeAt(0),t>64&&91>t?t=9398+Math.abs(65-t):t>96&&123>t?t=9424+Math.abs(97-t):t>48&&58>t?t=9312+Math.abs(49-t):48==t&&(t=9450),r+=String.fromCharCode(t);return r},String.prototype.toLatin=function(){for(var t,e=0,r=this.length,o="";r>e;e++)t=this[e],/[ÁĂẮẶẰẲẴǍÂẤẬẦẨẪÄǞȦǠẠȀÀẢȂĀĄÅǺḀȺÃⱯᴀ]/.test(t)?t="A":"Ꜳ"==t?t="AA":/[ÆǼǢᴁ]/.test(t)?t="AE":"Ꜵ"==t?t="AO":"Ꜷ"==t?t="AU":/[ꜸꜺ]/.test(t)?t="AV":"Ꜽ"==t?t="AY":/[ḂḄƁḆɃƂʙᴃ]/.test(t)?t="B":/[ĆCČCÇCḈCĈCĊCƇCȻCꜾᴄ]/.test(t)?t="C":/[ĎḐḒḊḌƊḎDzDžĐƋꝹᴅ]/.test(t)?t="D":/[DZDŽ]/.test(t)?t="DZ":/[ÉĔĚȨḜÊẾỆỀỂỄḘËĖẸȄÈẺȆĒḖḔĘɆẼḚƐƎᴇⱻ]/.test(t)?t="E":"Ꝫ"==t?t="ET":/[ḞƑꝻꜰ]/.test(t)?t="F":/[ǴĞǦĢĜĠƓḠǤꝽɢʛ]/.test(t)?t="G":/[ḪȞḨĤⱧḦḢḤĦʜ]/.test(t)?t="H":/[ÍIĬIǏIÎIÏIḮIİIỊIȈIÌIỈIȊIĪIĮIƗIĨIḬIɪ]/.test(t)?t="I":"IJ"==t?t="IJ":"Ꝭ"==t?t="IS":/[ĴɈᴊ]/.test(t)?t="J":/[ḰǨĶⱩꝂḲƘḴꝀꝄᴋ]/.test(t)?t="K":/[ĹȽĽĻḼḶḸⱠꝈḺĿⱢLjŁꞀʟᴌ]/.test(t)?t="L":"LJ"==t?t="LJ":/[ḾṀṂⱮƜᴍ]/.test(t)?t="M":/[ŃŇŅṊṄṆǸƝṈȠNjÑɴᴎ]/.test(t)?t="N":"NJ"==t?t="NJ":/[ÓŎǑÔỐỘỒỔỖÖȪȮȰỌŐȌÒỎƠỚỢỜỞỠȎꝊꝌŌṒṐƟǪǬØǾÕṌṎȬƆᴏᴐ]/.test(t)?t="O":/[Œɶ]/.test(t)?t="OE":"Ƣ"==t?t="OI":"Ꝏ"==t?t="OO":/[Ȣᴕ]/.test(t)?t="OU":/[ṔṖꝒƤꝔⱣꝐᴘ]/.test(t)?t="P":/[ꝘꝖ]/.test(t)?t="Q":/[ŔŘŖṘṚṜȐȒṞɌⱤꞂʁʀᴙᴚ]/.test(t)?t="R":/[ŚṤŠṦŞŜȘṠṢṨꞄꜱ]/.test(t)?t="S":"ẞ"==t?t="SS":/[ꞆŤŢṰȚȾṪṬƬṮƮŦᴛ]/.test(t)?t="T":"Ꜩ"==t?t="TZ":/[ÚŬǓÛṶÜǗǙǛǕṲỤŰȔÙỦƯỨỰỪỬỮȖŪṺŲŮŨṸṴᴜ]/.test(t)?t="U":/[ɅꝞṾƲṼᴠ]/.test(t)?t="V":"Ꝡ"==t?t="VY":/[ẂŴẄẆẈẀⱲᴡ]/.test(t)?t="W":/[ẌẊ]/.test(t)?t="X":/[ÝŶŸẎỴỲƳỶỾȲɎỸʏ]/.test(t)?t="Y":/[ŹŽẐⱫŻẒȤẔƵᴢ]/.test(t)?t="Z":/[áăắặằẳẵǎâấậầẩẫäǟȧǡạȁàảȃāąᶏẚåǻḁⱥãɐₐ]/.test(t)?t="a":"ꜳ"==t?t="aa":/[æǽǣᴂ]/.test(t)?t="ae":"ꜵ"==t?t="ao":"ꜷ"==t?t="au":/[ꜹꜻ]/.test(t)?t="av":"ꜽ"==t?t="ay":/[ḃḅɓḇᵬᶀƀƃ]/.test(t)?t="b":/[ćčçḉĉɕċƈȼↄꜿ]/.test(t)?t="c":/[ďḑḓȡḋḍɗᶑḏᵭᶁđɖƌꝺ]/.test(t)?t="d":/[dzdž]/.test(t)?t="dz":/[éĕěȩḝêếệềểễḙëėẹȅèẻȇēḗḕⱸęᶒɇẽḛɛᶓɘǝₑ]/.test(t)?t="e":"ꝫ"==t?t="et":/[ḟƒᵮᶂꝼ]/.test(t)?t="f":"ff"==t?t="ff":"fi"==t?t="fi":"fl"==t?s="fl":"ffi"==t?t="ffi":"ffl"==t?t="ffl":/[ǵğǧģĝġɠḡᶃǥᵹᵷɡ]/.test(t)?t="g":/[ḫȟḩĥⱨḧḣḥɦẖħɥʮʯ]/.test(t)?t="h":"ƕ"==t?t="hv":/[ıíĭǐîïḯịȉìỉȋīįᶖɨĩḭᴉᵢ]/.test(t)?t="i":"ij"==t?t="ij":"ꝭ"==t?t="is":/[ȷɟʄǰĵʝɉⱼ]/.test(t)?t="j":/[ḱǩķⱪꝃḳƙḵᶄꝁꝅʞ]/.test(t)?t="k":/[ĺƚɬľļḽȴḷḹⱡꝉḻŀɫᶅɭłꞁ]/.test(t)?t="l":"lj"==t?t="lj":/[ḿṁṃɱᵯᶆɯɰ]/.test(t)?t="m":/[ńňņṋȵṅṇǹɲṉƞᵰᶇɳñ]/.test(t)?t="n":"nj"==t?t="nj":/[ɵóŏǒôốộồổỗöȫȯȱọőȍòỏơớợờởỡȏꝋꝍⱺōṓṑǫǭøǿõṍṏȭɔᶗᴑᴓₒ]/.test(t)?t="o":/[ᴔœ]/.test(t)?t="oe":"ƣ"==t?t="oi":"ꝏ"==t?t="oo":"ȣ"==t?t="ou":/[ṕṗꝓƥᵱᶈꝕᵽꝑ]/.test(t)?t="p":/[ꝙʠɋꝗ]/.test(t)?t="q":/[ꞃŕřŗṙṛṝȑɾᵳȓṟɼᵲᶉɍɽɿɹɻɺⱹᵣ]/.test(t)?t="r":/[ꞅſẜẛẝśṥšṧşŝșṡṣṩʂᵴᶊȿ]/.test(t)?t="s":"ß"==t?t="ss":"st"==t?t="st":/[ťţṱțȶẗⱦṫṭƭṯᵵƫʈŧʇꞇ]/.test(t)?t="t":"ᵺ"==t?t="th":"ꜩ"==t?t="tz":/[ᴝúŭǔûṷüǘǚǜǖṳụűȕùủưứựừửữȗūṻųᶙůũṹṵᵤ]/.test(t)?t="u":"ᵫ"==t?t="ue":"ꝸ"==t?t="um":/[ʌⱴꝟṿʋᶌⱱṽᵥ]/.test(t)?t="v":"ꝡ"==t?t="vy":/[ẃŵẅẇẉẁⱳẘʍ]/.test(t)?t="w":/[ẍẋᶍₓ]/.test(t)?t="x":/[ʎýŷÿẏỵỳƴỷỿȳẙɏỹ]/.test(t)?t="y":/[źžẑʑⱬżẓȥẕᵶᶎʐƶɀ]/.test(t)&&(t="z"),o+=t;return o},String.prototype.toObject=function(){for(var t=0,e=this.length,r={length:e,toString:function(){var t,e="";for(t in this)e+=/\d+/.test(t)?this[t]:"";return e}};e>t;t++)r[t]=this.charAt(t);return r},String.prototype.capitalize=function(t){return this[0].toUpperCase()+(t?this:this.toLowerCase()).slice(1)},String.prototype.toCamelCase=function(t){for(var e,r=0,o="",n=!1;e=this[r];r++)/[A-Z]/i.test(e)?(o+=n?e.toUpperCase():e,n=!1):/\s|\n|\r|_|-/.test(e)&&(n=!0);return o=(t?o[0].toUpperCase():o[0].toLowerCase())+o.slice(1)},String.prototype.toSentenceCase=function(){for(var t,e=0,r=!1,o="";t=this[e];e++)r||/\n|\r|\s/.test(t)?o+=t:(o+=t.toUpperCase(),r=!0),/\n|\r|\.|!|\?/.test(t)&&(r=!1);return o},String.prototype.toSnakeCase=function(t){for(var e,r=0,o="";e=this[r];r++)o+=/[A-Z]/i.test(e)?e:/\s|\n|\r|-|_/.test(e)?"_":"";return o=t?o.toUpperCase():o.toLowerCase()},String.prototype.toTitleCase=function(t){for(var e,r=1,o=this[0].toUpperCase(),n=!1;e=this[r];r++){switch(n){case!1:o+=e;break;case!0:o+=e.toUpperCase(),n=!1}/\s/.test(e)&&(n=!0)}return t?o:o.replace(/\s(a|about|above|across|against|along|also|although|among|an|and|around|at|because|before|behind|below|beneath|beside|between|beyond|but|by|down|during|either|except|for|from|in|inside|into|like|near|neither|nor|not|of|off|on|only|or|since|the|through|to|toward|under|unless|until|up|upon|while|with|within)(?=\s)/gi,function(t,e){return" "+e.toLowerCase()})},String.charRange=function(t,e,r){var o,n;switch(t=t?t.charCodeAt(0):0,e=e?e.charCodeAt(0)+1:65536,r=r?r.toLowerCase():"string",t>e&&(n=++t,t=--e,e=n),r){case"string":for(o="";e>t;t++)o+=String.fromCharCode(t);break;case"array":for(o=[],n=0;e>t;t++)o[n++]=String.fromCharCode(t);break;case"object":for(o={};e>t;t++)o["u"+t]=String.fromCharCode(t);break;default:throw new TypeError('"'+r+'" is not a supported data type')}return o},String.prototype.containsString=function(t,e,r){return r=r?r.toLowerCase():"",new RegExp(("start"==r?"^":"")+(t?t:this).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+("end"==r?"$":""),e?"i":"").test(this)},String.prototype.distance=function(t,e){var r=e?this.toLowerCase():this,o=t?e?t.toLowerCase():t:r,e=0,n=r.length,s=o.length,i=Math.abs(n-s),a=0;if(r==o)return 0;for(n>s&&(n=s);n>e;e++)r[e]!=o[e]&&a++;return a+i},String.prototype.enumerateLines=function(t){for(var e,r=1,o=t?0:1,n=o+". "+this[0];e=this[r];r++)n+=/\n|\r/.test(e)?e+ ++o+". ":e;return n},String.prototype.escapeRegExp=function(){for(var t=0,e=this.length,r="";e>t;t++)r+=(/[.*+?^${}()|[\]\\]/.test(this[t])?"\\":"")+this[t];return r},String.prototype.indent=function(t,e){if(t=Math.floor(t)||1,e=e||" ",1/0==t)throw new RangeError("The indent amount must be less than Infinity");for(var r,o=0,n=this.length,s="";t>o;o++)s+=e;for(o=1,r=s+this[0];n>o;o++)r+=this[o],/\n|\r/.test(this[o])&&(r+=s);return r},String.prototype.pad=function(t,e,r){t=Math.floor(t)||1,e=e||" ",r=r?r.toLowerCase():"right";for(var o=0,n=this;t>o;o++)switch(r){case"right":n+=e;break;case"left":n=e+n;break;case"both":n=e+n+e}return n},String.prototype.wordCount=function(t){t=t?t.toLowerCase():"number";var e="number"==t?0:"array"==t?[]:{},r=0;return this.replace(/(?:^|\W)(\w+)(?=$|\W)/g,function(o,n){"number"==t?e++:e[r++]=n}),"object"==t&&(e.words=r),e},String.prototype.wordWrap=function(t,e,r){t=Math.floor(t)||50,e=e||"\n";for(var o=0,n=0,s=this.length,i="";s>o;o++)++n>=t&&(/\W/.test(this[o])||r)?(i+=r?e+this[o]:this[o]+e,n=0):i+=this[o];return i},String.prototype.wrap=function(t,e){return t=t||"<p>",e=e?e:"<p>"==t?"</p>":t,/<.*?>|\[.*?\]|\{.*?\}/.test(e)&&!/^(?:<|\[\{)\//.test(e)&&(e=e.replace(/^\s+|\s+$/g,""),e=e[0]+"/"+e.slice(1),/=/.test(e)&&(e=e.replace(/(?:=.*|\s+.*)(?=>|\]|\})/g,""))),t+this+e},String.prototype.mirror=function(){for(var t=this.length-1,e="";t>-1;t--)e+=this[t];return e},String.prototype.shuffle=function(t){if(t=Math.floor(t)||1,1/0==t)throw new RangeError("shuffle count must be less than Infinity");for(var e=this;t-->0;){for(var r,o=0,n="";r=e[o];o++)n=o%2==0?n+r:r+n;e=n}return n},String.prototype.unshuffle=function(t){if(t=Math.floor(t)||1,1/0==t)throw new RangeError("unshuffle count must be less than Infinity");for(var e=this;t-->0;){for(var r=1,o=e.length,n=Math.ceil(o/2)-(o%2==0?0:1),s=e[n];o>r;r++)s+=e[n=r%2==0?n+r:n-r];e=s}return s},String.prototype.skip=function(t){t=Math.floor(t)||1;for(var e=0,r=this.length,o="";r>e;e+=t)o+=this[e];return o},String.prototype.protoRepeat=function(t,e){if(t=Math.floor(t)||0,e=e||"",1/0==t||t*this.length>1<<28)throw new RangeError("Repeat count must be less than Infinity, and not exceed maximum string length");for(var r=1,o=this;t>r;r++)o+=e+this;return o},String.prototype.protoTrim=function(t){switch(t=t?t.toLowerCase():"both"){case"both":t=/^\s+|\s+$/g;break;case"left":t=/^\s+/;break;case"right":t=/\s+$/;break;default:throw new TypeError('"'+t+'" is not a trimming method')}return this.replace(t,"")},String.prototype.template=function(t){if("object"!=typeof t)throw new TypeError("Template data must be an object");var e,r=this;for(e in t)r=r.replace(new RegExp("\\$\\{"+e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"\\}","gm"),t[e]);return r},String.prototype.cleanHTML=function(t){return this.replace(new RegExp("<.*?>"+(t?"":"|&.*?;\\s?"),"gm"),"")},String.prototype.cleanId=function(){for(var t,e=0,r="";t=this[e];e++)/\s/.test(t)?r+="-":/[0-9A-Z\-_]/i.test(t)&&(r+=t);return/[0-9\-_]/.test(r[0])&&(r="id-"+r),r},String.prototype.newlineToBreak=function(){for(var t=0,e=this.length,r="";e>t;t++)r+=/\n|\r/.test(this[t])?"<br/>":this[t];return r},String.prototype.toAnchor=function(t,e){t=t?t.toLowerCase():"node",e=e?e:this.cleanId();var r;switch(t){case"node":r=document.createElement("A"),r.id=e,r.href="#"+e,r.innerHTML=this;break;case"string":r='<a href="#'+e+'" id="'+e+'">'+this+"</a>";break;default:throw new TypeError('"'+t+'" is not a supported data type')}return r},String.prototype.toNode=function(t){var e=document.createElement(t?t:"P");return e.innerHTML=this,e},String.prototype.toTextNode=function(){return document.createTextNode(this)};