Skip to content

Instantly share code, notes, and snippets.

@julianvargasalvarez
Forked from 140bytes/LICENSE.txt
Created November 7, 2011 00:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save julianvargasalvarez/1343911 to your computer and use it in GitHub Desktop.
Save julianvargasalvarez/1343911 to your computer and use it in GitHub Desktop.
140byt.es -- Click ↑↑ fork ↑↑ to play!

140byt.es

A tweet-sized, fork-to-play, community-curated collection of JavaScript.

How to play

  1. Click the Fork button above to fork this gist.
  2. Modify all the files to according to the rules below.
  3. Save your entry and tweet it up!

Keep in mind that thanks to the awesome sensibilities of the GitHub team, gists are just repos. So feel free to clone yours and work locally for a more comfortable environment, and to allow commit messages.

Rules

All entries must exist in an index.js file, whose contents are

  1. an assignable, valid Javascript expression that
  2. contains no more than 140 bytes, and
  3. does not leak to the global scope.

All entries must also be licensed under the WTFPL or equally permissive license.

For more information

See the 140byt.es site for a showcase of entries (built itself using 140-byte entries!), and follow @140bytes on Twitter.

To learn about byte-saving hacks for your own code, or to contribute what you've learned, head to the wiki.

140byt.es is brought to you by Jed Schmidt, with help from Alex Kloss. It was inspired by work from Thomas Fuchs and Dustin Diaz.

function (key) {
// Given the url http:www.myaddress.com?hello=world&Im=fine
// if key='hello' the function will return 'world' otherwise will return null
// [hello=world], [Im=fine]
tokens = location.search.substring(1).split("&");
for (i = 0; i < tokens.length; i++) {
// [hello], [world]
keyValue = tokens[i].split("=");
if (keyValue[0] == key)// hello == hello
return keyValue[1];// world
}
return null;
}
function(a){b=location.search.substring(1).split("&");for(i=0;i<b.length;i++){c=b[i].split("=");if(c[0]==a)return c[1];}return null;}
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2011 YOUR_NAME_HERE <YOUR_URL_HERE>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
{
"name": "queryString",
"description": "Retrieves a value from the queryString",
"keywords": [
"queryString"
]
}
<!DOCTYPE html>
<title>Foo</title>
<div>Expected value: <b>world</b></div>
<div>Actual value: <b id="ret"></b></div>
<script>
// write a small example that shows off the API for your example
// and tests it in one fell swoop.
var queryString = function(a){b=location.search.substring(1).split("&");for(i=0;i<b.length;i++){c=b[i].split("=");if(c[0]==a)return c[1];}return null;}
document.getElementById("ret").innerHTML = queryString('hello')
</script>
@xpansive
Copy link

xpansive commented Nov 8, 2011

I kind of went crazy golfing this... Anyways, I got it down to 112 bytes, with no glitches as far as I can tell.

function (key,tokens,i,keyValue) {
    tokens = location.search.slice(1).split("&");
    for (i = 0; keyValue = tokens[i++]; ) 
        if ((keyValue = keyValue.split("="))[0] == key)
            return keyValue[1];
}

function(a,b,c,d){b=location.search.slice(1).split("&");for(c=0;d=b[c++];)if((d=d.split("="))[0]==a)return d[1]}

Here's what I changed, and why:

  1. substring becomes slice: slice does essentially the same thing as substring except it works for arrays too and is shorter to type.
  2. No modifying the global scope! If you need to use variables, put them in the parameter list, but don't pass anything to them when you call it, and viola, you have local varibles with undefined in them.
  3. Instead of returning null at the end, leave off that statement and it will return undefined automagically for you. You can stick it back on if you really want, but I don't see the point.
  4. The for loop can be changed drastically in this case. Instead of checking if you've reached the end of the array by length, you can grab an element from it, and it will keep looping as long as it isn't undefined, null or anything like that. That means it will stop when it goes past the boundaries of the array and the elements turn undefined. I've also moved the increment into the middle section to save a byte.
  5. Moving the splitting into the if statement allows us to drop the braces. It's not much of an improvement, but still. :)

Take a look at the wiki here for more cool techniques :D

@julianvargasalvarez
Copy link
Author

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment