Skip to content

Instantly share code, notes, and snippets.

View davidaurelio's full-sized avatar
💭
I may be slow to respond.

David Aurelio davidaurelio

💭
I may be slow to respond.
View GitHub Profile
@davidaurelio
davidaurelio / point.js
Created July 18, 2012 08:40
A toString()’able point that allows addition
function Point(x, y) {
if (arguments.length === 1 && typeof x === 'string') {
return x.slice(1, -1)
.split('}{')
.map(function(tuple) {
return tuple.split(',', 2).map(parseFloat)
})
.reduce(function(point, coords) {
point.x += coords[0];
point.y += coords[1];
@davidaurelio
davidaurelio / Usage
Created April 2, 2012 12:12
Angle type
var a = new Angle().radians(Math.PI * 3 / 4),
b = new Angle().degrees(135);
var c = new Angle(a + b);
Math.sin(a);
Math.cos(b);
a.add(new Angle().degrees(30));
b.add(Math.PI);
@davidaurelio
davidaurelio / EventEmitter.js
Created March 22, 2012 09:54
Constructable mixins in JavaScript
/*
EventEmitter is usable as constructor and as mixin.
*/
function EventEmitter() {}
// this does the trick
EventEmitter.prototype = EventEmitter;
EventEmitter.addListener = function(type, listener) {
this.listeners(type, true).push(listener);
@davidaurelio
davidaurelio / hastouch.html
Created September 6, 2011 17:10
Checking for touch support
<!doctype html>
<title>has touch?</title>
<h1>Has this device touch? </h1>
<script>
var isTouch = (function(){
try{
var event = document.createEvent("TouchEvent"); // Should throw an error if not supported
return !!event.initTouchEvent; // Check for existance of initialization method
}catch(error){
return false;
@davidaurelio
davidaurelio / create.js
Created February 22, 2011 14:48
Constructor-less inheritance for ECMAScript 5
var BaseObject = {
create: function create() {
var instance = Object.create(this);
instance._construct.apply(instance, arguments);
return instance;
},
extend: function extend(properties, propertyDescriptors) {
propertyDescriptors = propertyDescriptors || {};
#!/usr/bin/env python
"""
Fixes file names for downloads from jil.org.
jil.org delivers downloaded files with file names in e-mail header format. The
fix_filename function from this module can decode such file names.
When this module is executed as main program, all file names passed as program
arguments are renamed properly: