Skip to content

Commit

Permalink
new home
Browse files Browse the repository at this point in the history
  • Loading branch information
xem committed Oct 14, 2017
1 parent e73ad56 commit c44eca5
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 66 deletions.
File renamed without changes.
37 changes: 5 additions & 32 deletions full.html
@@ -1,34 +1,7 @@
<script>

/* Tests */

localStorage.clear();

localStorage.A1 = "=A2+1";
localStorage.A2 = "=A3+1";
localStorage.A3 = "=A4+1";
localStorage.A4 = "1";

localStorage.B1 = "=1.1";
localStorage.B2 = "1.1";
localStorage.B3 = "=B1+B2*10";
localStorage.B4 = "0";

localStorage.C1 = "=C1+1";
localStorage.C2 = "=C3+1";
localStorage.C3 = "=C2+1";
localStorage.C4 = "=D4";

localStorage.D1 = "=D2+D3";
localStorage.D2 = "=D1+D3";
localStorage.D3 = "=D1+D2";
localStorage.D4 = "1";

localStorage.A5 = "TEST";
localStorage.B5 = "=B2**8";
localStorage.C5 = "=Math.sqrt(B5)";
localStorage.D5 = "=-~(C5<<2)";

/* Sheet */
o=b=>{for(i in{}+o)with(M=Math)M[y='ABCD'[i%5]+-~(i/5%6)]=b?document.write(y&&i<30?`<input placeholder=${y} id=`+y:'<br',` onfocus=value=[l[id]] onblur=l[id]=value,o()>`):(top[y].value=[/^=/.test(z=l[y])?eval('x'+z):x=z],x-~x?+x:x)};o(o(l=localStorage))
</script>
</script>

<style>
html,body { overflow: hidden }
</style>
25 changes: 1 addition & 24 deletions headers.html
@@ -1,33 +1,10 @@
<script>
/* Tests */
localStorage.clear();
localStorage.A1 = "=A2+1";
localStorage.A2 = "=A3+1";
localStorage.A3 = "=A4+1";
localStorage.A4 = "1";
localStorage.B1 = "=1.1";
localStorage.B2 = "1.1";
localStorage.B3 = "=B1+B2*10";
localStorage.B4 = "0";
localStorage.C1 = "=C1+1";
localStorage.C2 = "=C3+1";
localStorage.C3 = "=C2+1";
localStorage.C4 = "=D4";
localStorage.D1 = "=D2+D3";
localStorage.D2 = "=D1+D3";
localStorage.D3 = "=D1+D2";
localStorage.D4 = "1";
localStorage.A5 = "TEST";
localStorage.B5 = "=B2**8";
localStorage.C5 = "=Math.sqrt(B5)";
localStorage.D5 = "=-~(C5<<2)";

/* Sheet */
with(M=Math)o=b=>{for(i in{}+o)(top[y=(C='-ABCD'[r=i%6])+(R=~~(i%35/6))]||o).value=[x=/^=/.test(z=i<35?b&&document.write(y?'<input id='+y:'<p',R&&r?` onfocus=value=[l[id]] onblur=l[id]=value,o()>`:' disabled>'):l[y])?eval('x'+z):R?r?z:R:C],M[y]=x-~x?+x:x};o(o(l=localStorage))
</script>

/* Optional styles */
<style>
/* Optional styles */
input{border: 1px solid #999;padding: .5em;}
input[disabled]{text-align: center;background-color:#eee;}
input:first-child[disabled]{text-align: right;}
Expand Down
63 changes: 53 additions & 10 deletions index.html
Expand Up @@ -4,35 +4,78 @@
<mark style="background:#fe5;padding: 3px;">2017-09-28: <b>Hello Hacker News!</b> Discover 100+ more golfed apps & games <a href="https://gist.github.com/xem/206db44adbdd09bac424">here!</a></mark>
<br>
<h1>Sheet</h1>
<h3>A 188b spreadsheet app in HTML/JS</h3>
<h3>A 188b/253b spreadsheet app in HTML/JS</h3>
<br>
Inspired by <a href="http://aem1k.com/sheet/">aem1k.com/sheet</a> and <a href="http://jsfiddle.net/ondras/hYfN3/">this 30-line app</a>
<br>
Golfed by xem, subzey, p01, rlauck, aemkei, odensc, mmastrac, corruptio
Golfed by <a href=//xem.github.io>xem</a>, subzey, <a href=//p01.org>p01</a>, rlauck, <a href=//aem1k.com>aemkei</a>, odensc, mmastrac, <a href=//blog.jay.vg>corruptio</a>
<br>
<a href="https://github.com/xem/ama/issues/14">Related AMA answer</a>
More <a href="https://github.com/xem/ama/issues/14">backstory</a> (2015)
<br>
<br>
<hr>
<h2>Full (253b)</h2>
<b>Features</b>
<br>
<b>Source code:</b> (<a href="https://github.com/xem/sheet/blob/gh-pages/commented.html">commented source code</a>)
<br>
supports any value: texts, numbers, floats, and formulae. Ex: "=A1+8"
<br>
cells update in cascade, circular reference protection
<br>
implicit Math object. Ex: "=sqrt(A1)"
<br>
localStorage persistence
<br>
<br>
<b>Source code:</b>
<br>
<br>
(<a href="https://github.com/xem/sheet/blob/gh-pages/full-commented.html">commented source code</a>)
<br>
<br>
<pre style=text-align:left;font-family:courier;width:650px;margin:auto;background:#def;padding:15px;border-radius:10px>
o=b=>{for(i in{}+o)with(M=Math)M[y='ABCD'[i%5]+-~(i/5%6)]=b?document
.write(y&&i&lt;30?`&lt;input placeholder=${y} id=`+y:'&lt;br',` onfocus=value
=[l[id]] onblur=l[id]=value,o()>`):(top[y].value=[/^=/.test(z=l[y])?
eval('x'+z):x=z],x-~x?+x:x)};o(o(l=localStorage))
</pre>
<br>
<b>Demo:</b>
<br>
<br>
<iframe style=transform:translateX(100px) src=full.html frameborder=0 width=800 height=200></iframe>
<br>
<br>
<hr>
<br>
<h2>Minimal (188b)</h2>
Supports numbers and formulae.
<br>
updates in cascade and prevents circular references.
<br>
<br>
<b>Source code:</b>
<br>
(<a href="https://github.com/xem/sheet/blob/gh-pages/mini-commented.html">commented source code</a>)
<br>
<br>
<pre style=text-align:left;font-family:courier;width:650px;margin:auto;background:#def;padding:15px;border-radius:10px>
(o=v=>{for(i in z='&lt;input onblur=o[id]=value;o`.value` id=')y="
ABCD"[i%5]+-~(i/5),v?eval(y+(v+o[y]).replace(/[A-Z]\d/g," +$&"+
v)):document.write(y||'&lt;p ',z,y,' onfocus=value=[o[id]]>')})()
</pre>

<br>
<br>
<b>Demo:</b>
<br>
<br>
Cells can contain text, numbers or formulas (ex: "=A1+8*B2")
<br>
<br>
<iframe style=transform:translateX(50px) src=mini.html frameborder=0 width=800 height=350></iframe>


<br>
<br>
© 2014-2017 <a href=//register.jsgolf.club>The Codegolf Team</a>
<br>(Our websites: <a href=//p01.org>p01</a>, <a href=//aem1k.com>aemkei</a>, <a href=//xem.github.io>xem</a>, <a href=//blog.jay.vg/>corruptio</a>)

<style>
a { color: #000; }
hr { width: 500px }
</style>
File renamed without changes.

0 comments on commit c44eca5

Please sign in to comment.