Skip to content
This repository has been archived by the owner on Jan 15, 2019. It is now read-only.

Wishlist

atk edited this page Jul 29, 2011 · 31 revisions

Wishlist

This is a list of useful things that should be implementable in 140 bytes. Help out and try your hand at one!

DOM builder

A function that turns a non-nested (fab)-style micro-DSL such as the following into a DOM, without using HTML.

domBuilder(
  [/HTML/],
    [/HEAD/],
      [/TITLE/],
        "Wouldn't this be cool?",
      [],
    [],
    [/BODY/],
      [/DIV/, {id: "container"}],
        "Hello, world",
      [],
    [],
  []
)

A chainable DOM utility

The most annoying part about document.createElement, appendChild and friends is that they're not chainable! I suspect that a wrapper that returns "this" a la jquery could be very lightweight indeed.

My real-life use case is bookmarklets, fwiw.

A hash location history plugin

ES5 polyfills

Note: See kriskowal/es5-shim for conformant implementations, some of which are already <= 140 bytes.

  • Array.isArray => DONE
  • Array.prototype.forEach => DONE
  • Array.prototype.map => DONE
  • Array.prototype.filter => DONE
  • Array.prototype.every => DONE
  • Array.prototype.some => DONE
  • Array.prototype.reduce => DONE
  • Array.prototype.reduceRight IN PROGRESS
  • Array.prototype.indexOf => DONE
  • Array.prototype.lastIndexOf => DONE
  • Object.keys => DONE
  • Date.now => DONE
  • Date.parse (for ISO parsing) => IN PROGRESS
  • Date.prototype.toISOString => DONE
  • Date.prototype.toJSON
  • Function.prototype.bind => IN PROGRESS
  • String.prototype.trim => DONE
  • String.prototype.trimLeft => DONE
  • String.prototype.trimRight => DONE

A rounded-corner polyfill

Parallel, serial, map, and other async helper functions

Animated loading bar/spinner

Animated spinner in 138 bytes: https://gist.github.com/998900 - with a little CSS styling it looks like Apple's activity indicator.

URL Path Parsing

A function that fetches named (or keyed) path values from the current URL for use in routing now that we can use history push states.

var page = uriPath(2); // example.com/path/value/34
var page = uriPath('page'); // example.com/key/value/page/34

DONE

Granted

The following have been successfully golfed under 140 bytes.

Cross-browser base64 encoder and decoder (140 bytes each)

Encode: a function that takes the string input and map string ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/, return the base64 encoding. Bonus points for proper "=" padding. Accomplished here, with most of the golfing action in this sla.ckers thread.

Decode: the reverse of the above. Accomplished here.

Clone this wiki locally