Skip to content

Instantly share code, notes, and snippets.

Pedro Casaubon xperiments

Block or report user

Report or block xperiments

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
xperiments / NewableTypes.ts
Created Jun 20, 2013
Typescript Newable Types
View NewableTypes.ts
Construct signatures in interfaces are not implementable in classes; they're only for defining existing JS APIs that define a 'new'-able function. Here's an example involving interfaces new signatures that does work:
interface ComesFromString {
name: string;
interface StringConstructable {
new(n: string): ComesFromString;
xperiments / Singleton.ts
Created Jun 25, 2013
Typescript Singleton
View Singleton.ts
module x
export class Singleton
private static _instance : Singleton;
constructor( singletonEnforcer:()=>void )
if( singletonEnforcer !== SingletonEnforcer )
throw new Error("Error: Instantiation failed: Use Singleton.getInstance() instead of new.");
xperiments / Dictionary.ts
Created Jun 25, 2013
Typescript Dictionary
View Dictionary.ts
interface IDictionary {
add(key: string, value: any): void;
remove(key: string): void;
containsKey(key: string): bool;
keys(): string[];
values(): any[];
View BrowserDetection.js
var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
// Opera 8.0+ (UA detection to detect Blink/v8-powered Opera)
var isFirefox = typeof InstallTrigger !== 'undefined'; // Firefox 1.0+
var isSafari ='Constructor') > 0;
// At least Safari 3+: "[object HTMLElementConstructor]"
var isChrome = !! && !isOpera; // Chrome 1+
var isIE = /*@cc_on!@*/false; // At least IE6
View OddNumber.js
The "trick" is to binary AND a value with 1.
Any odd number must have the first bit set to 1.
var foo = 7;
if( foo & 1 ) { // true }
Using a bitwise AND has a better performance in almost all platforms / browsers.
xperiments / new_gist_file
Last active Feb 13, 2018
[[ts] Check if obj is instanceof U] Check if obj is instanceof U
View new_gist_file
// =>
function OfType<T, U>(list: T[], arg: Function) : U[]
var result: U[] = [];
list.forEach(e => {
// extract the name of the class
// used to match primitive types
var typeName = /function\s*([^(]*)/i.exec(arg+"")[1].toLocaleLowerCase();
xperiments / xhr2base64
Created Jul 10, 2013
XHR => base64 => Binary
View xhr2base64
View base64-binary.js
Copyright (c) 2011, Daniel Guerrero
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
xperiments / ArrayBuffer2Base64.js
Last active Feb 13, 2018
[[js][utils][base64] ArrayBuffer2Base64] ArrayBuffer2Base64 #js #base64
View ArrayBuffer2Base64.js
// Converts an ArrayBuffer directly to base64, without any intermediate 'convert to string then
// use window.btoa' step. According to my tests, this appears to be a faster approach:
function base64ArrayBuffer(arrayBuffer) {
var base64 = ''
var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var bytes = new Uint8Array(arrayBuffer)
var byteLength = bytes.byteLength
View xhr2base64.js
function getBinary(file){
var xhr = new XMLHttpRequest();"GET", file, false);
xhr.overrideMimeType("text/plain; charset=x-user-defined");
return xhr.responseText;
function base64Encode(str) {
var CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
You can’t perform that action at this time.