Skip to content

Instantly share code, notes, and snippets.

function encode_ascii85(a) {
var b, c, d, e, f, g, h, i, j, k;
for (!/[^\x00-\xFF]/.test(a), b = "\x00\x00\x00\x00".slice(a.length % 4 || 4), a += b,
c = [], d = 0, e = a.length; e > d; d += 4) f = (a.charCodeAt(d) << 24) + (a.charCodeAt(d + 1) << 16) + (a.charCodeAt(d + 2) << 8) + a.charCodeAt(d + 3),
0 !== f ? (k = f % 85, f = (f - k) / 85, j = f % 85, f = (f - j) / 85, i = f % 85,
f = (f - i) / 85, h = f % 85, f = (f - h) / 85, g = f % 85, c.push(g + 33, h + 33, i + 33, j + 33, k + 33)) :c.push(122);
return function(a, b) {
for (var c = b; c > 0; c--) a.pop();
}(c, b.length), "<~" + String.fromCharCode.apply(String, c) + "~>";
}
@JavaScript-Packer
JavaScript-Packer / repeater.js
Created July 31, 2015 09:39
Repeat a string x times, choose the number of repeated times...
function repeat(e,r) {
return Array(r + 1).join(e);
}
//alert(repeat("WHAK.com!\n", 4));
@JavaScript-Packer
JavaScript-Packer / Space-Invaders-game.html
Last active August 29, 2015 14:26
This is a miniature ascii text version of the classic Space Invaders game. Live demo on http://jsfiddle.net/6hb5yfbw/1/ (click on link to play). It is written in the smallest amount of JavaScript that I could squeeze it. Entire game is 527 bytes! The core logic of the game is a single function that fits in less than 140 bytes.
<h1><pre id=x><script>function a(a,b,f,j){for(j="",a=0;10>a;a++){for(b=0;16>b;b++)f=b==c&9==a?3:0,a==e&&(f=g&1<<b-d?1:f),a==e+1&&(f=w&1<<b-d?1:f),f=b==h&a==i?1==f?4:2:f,f=9>e-!w+1?f:5,j+=".#i^@*"[f];j+="\n"}x.innerHTML=j}function b(){var c=0,j=0,c=1<<h-d;g-=j=i==e?g&c:0,w-=c=i==e+1?w&c:0,i-=j|c?10:1,g|w?0:(d=4,e=0,g=w=Z),(g|w)&1<<15*(f>0)-d?(e++,f=-f):d+=f,a(),setTimeout(b,300)}var c=8,d=4,e=0,f=1,g=w=Z=85,h=0,i=-1;this.onkeydown=function(b){b=event.keyCode,c-=37==b&c>0,c+=39==b&15>c,38==b&0>i&&(h=c,i=8),a()},b()</script>
<center><pre id=out style=font-size:32px></pre><script>function a(a){var b,f,c,d,e,q;for(g.innerHTML=a,b=m,c=n,d=o,e=p,q=a[0],a=(15&c+a[1])-c,f=4;f--;)if(e[b+q+d[c+a+f]]){if(q>1){for(f=4;f--;)e[b+d[c+f]]=1;for(f=0;i*k>f;f+=k){for(q=2;k>q;)q=e[f+q]?q+1:j;if(j>q)for(q=f;--q;)e[q+k]=e[q]}b=h/2,d=l[new Date%7]}q=a=0;break}for(b=[b+q,c+a,d,e],m=b[0],n=b[1],o=b[2],p=b[3],e="",a=o,b=0;i>b;b++){for(p[b],c=0;h>c;c++){for(f=b*k+c+2,d=f-m,f=".#"[p[f]],q=0;4>q;++q)f=a[n+q]==d?"@":f;e+=f}e+="<br>"}for(b=0;h>b;b++)e+="=";return e+"\n"}function b(){g.innerHTML=a([k,0]),setTimeout(b,f-=2)}var c,d,e,f,g=out,h=10,i=12,j=(8<<h)-1,k=2+h+1,l=[[1,2,14,15,1,2,14,15,1,2,14,15,1,2,14,15],[2,13,14,15,1,14,27,28,13,14,15,26,0,1,14,27],[0,13,14,15,1,2,14,27,13,14,15,28,1,14,26,27],[1,2,13,14,1,14,15,28,14,15,26,27,0,13,14,27],[0,1,14,15,2,14,15,27,13,14,27,28,1,13,14,26],[1,13,14,15,1,14,15,27,13,14,15,27,1,13,14,27],[13,14,15,16,2,15,28,41,26,27,28,29,1,14,27,40]],m=-2*k+h/2,n=0,o=l[new Date%7],p=[];for(c=0;i*k>c;++c)d=c%k,p[c]=2>d||d>
@JavaScript-Packer
JavaScript-Packer / escaping-characters-javascript.js
Created August 2, 2015 23:15
Escape HTML entities, JS safe escaping, URL encoding, etc. SOme functions used on http://www.whak.ca/packer/LZMA.htm
function esc_HTML(n) {
return n.replace(/[&\n\r "'<>\v\0]/g, function(n) {
return "&#" + n.charCodeAt(0) + ";";
});
}
function esc_URL(n) {
return n.replace(/[^\w\d]/g, function(n) {
return "%" + function(n, r, t) {
return t = t || "0", n += "", n.length < r ? Array(r - n.length + 1).join(t) + n : n;
@JavaScript-Packer
JavaScript-Packer / trim-examples.js
Created August 5, 2015 00:38
Left trimming, right trimmer and trim both sides. Simple demos in JavaScript that replace triml, trimr and trim functions. Escape is used just so you can see the spaces as %20 and makes the changes more obvious.
alert(escape(" trim left "["replace"](/^\s\s*/, "")));
alert(escape(" trim right "["replace"](/\s\s*$/, "")));
alert(escape(" trim both "[$ = "replace"](/^\s\s*/, "")[$](/\s\s*$/, "")));
<html>
<head>
<script>
function R(t,e){return e>t?t:e}function T(t){return.5>t?2*t:2*(1-t)}D3=function(){function t(t){return t=.05>t?.05:t,t>10?10:t}function e(t,e){return{x:t.y*e.z-t.z*e.y,y:t.z*e.x-t.x*e.z,z:t.x*e.y-t.y*e.x}}function r(t,e){return t.x*e.x+t.y*e.y+t.z*e.z}function n(t,e){return{x:t.x-e.x,y:t.y-e.y}}function a(t,e){return{x:t.x-e.x,y:t.y-e.y,z:t.z-e.z}}function i(t,e){return{x:t.x+e.x,y:t.y+e.y,z:t.z+e.z}}function s(t,e){return{x:t.x*e,y:t.y*e}}function o(t,e){return{x:t.x*e,y:t.y*e,z:t.z*e}}function u(t){var e=t.x;return t=t.y,Math.sqrt(e*e+t*t)}function h(t){var e=t.x,r=t.y;return t=t.z,Math.sqrt(e*e+r*r+t*t)}function l(t){return s(t,1/u(t))}function f(t){return o(t,1/h(t))}function c(t,e,r,n,a,i,s,o,u,h,l,f){this.R=t,this.S=e,this.U=r,this.ga=n,this.V=a,this.W=i,this.X=s,this.ha=o,this.Y=u,this.Z=h,this.T=l,this.fa=f}function v(t,e){return{x:t.R*e.x+t.S*e.y+t.U*e.z+t.ga,y:t.V*e.x+t.W*e.y+t.X*e.z+t.ha,z:t.Y*e.x+t.Z*e.y+t.T*e.z+t.fa}}function d(t,e){var r=t.R,n=t.S,a=t.U,i=t.V,s
@JavaScript-Packer
JavaScript-Packer / simplest-encryption-possible.html
Created August 8, 2015 18:40
Simply replaces each character from one array with another character from another array!
<!DOCTYPE html>
<html>
<head>
<title>Encraption &#38; Decraption Algorithm</title>
</head>
<body>
<h1>Encrapted:</h1>
<div id="Silly"></div>
<h1>Unencrapted:</h1>
<div id="not_Silly"></div><script>
@JavaScript-Packer
JavaScript-Packer / word-wrapper.js
Created August 8, 2015 22:07
Wrap words to line length approximate so we do not break words. Function from http://www.whak.com/javascript-packer.htm
function wordWrap(str, width, prefix, postfix) {
var p, left, right;
if (str.length > width) {
p = width;
for (;p > 0 && !/\s/.test(str[p]); p--) ;
if (p > 0) {
left = str.substring(0, p);
right = str.substring(p + 1);
return prefix + left + postfix + wordWrap(right, width, prefix, postfix);
}
@JavaScript-Packer
JavaScript-Packer / reg2hex.js
Created August 11, 2015 03:36
RGB to HEX color converter
function rgb2hex(s) {
return (s = s.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === s.length ? "#" + ("0" + parseInt(s[1], 10).toString(16)).slice(-2) + ("0" + parseInt(s[2], 10).toString(16)).slice(-2) + ("0" + parseInt(s[3], 10).toString(16)).slice(-2) : "";
}