Skip to content

Instantly share code, notes, and snippets.

View termi's full-sized avatar

Егор Халимоненко termi

View GitHub Profile
@termi
termi / deepExtend.js
Last active August 29, 2015 13:57
deep extend
var _hasOwn = Object.prototype.hasOwnProperty;
var _toString = Object.prototype.toString;
var _hasGOPD = typeof Object.getOwnPropertyDescriptor === 'function';
var _hasDP = typeof Object.defineProperty === 'function';
function _getOwnPropertyDescriptor(obj, prop) {
if ( _hasGOPD ) {
return Object.getOwnPropertyDescriptor(obj, prop)
}
else {
@termi
termi / data.json
Created March 30, 2014 16:48
github.com/kpdecker/jsdiff infinite loop ?
{"expected":";applyPolyfills$0();(RegExp[\"__polyfill__\"]||function(obj1, obj2){var arr=RegExp[\"__polyfill__\"];if(!arr)arr=RegExp[\"__polyfill__\"]=[];arr.push([obj1,obj2])})({\"N[^1]N\":\"N(?:[^1]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF])N\",\"N[^1-9]N\":\"N(?:[^1-9]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF])N\",\"N[^\\\\s1-9]N\":\"N(?:[^\\\\s1-9]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF])N\",\"N[^\\\\S\\\\t\\\\r]N\":\"N[^\\\\S\\\\t\\\\r]N\",\"N[^\\\\da-z]N\":\"N(?:[^\\\\da-z]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF])N\",\"N[^\\\\D1-3]N\":\"N[^\\\\D1-3]N\",\"N[^\\\\w-]N\":\"N(?:[^\\\\w-]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF])N\",\"N[^\\\\Wa]N\":\"N[^\\\\Wa]N\",\"N[^\\\\s\\\\uD800\\\\uDC00-\\\\uD800\\\\uDCAA1-9]N\":\"N(?:[^\\\\s1-9]|(?:\\\\uD800[\\\\uDCAB-\\\\uDFFF]|[\\\\uD801-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]))N\",\"N[^\\\\S\\\\uD800\\\\uDC00-\\\\uD800\\\\uDCAA\\\\t\\\\r]N\":\"N[^\\\\S\\\\t\\\\r]N\",\"N[^\\\\d\\\\uD800\\\\uDC00-\\\\uD800\\\\uDCAAa-z]N\":\"N(?:[^\\\\da-z]|(?:\\\\uD800[\\\\uDCAB-\\
@termi
termi / string_template_example.js
Last active August 29, 2015 14:00
String templates is not so good, as it can be :( . string_template_idea.js looks much better
const mysql = require('mysql');
const crypto = require('crypto');
const color = require('ansi-color').set;
const stringUtils = require('./string.es6');
const DATABASE_NAME = 'test123'
, MESSAGES_TABLE_NAME = 'msgid'
, PLURALS_TABLE_NAME = 'plural'
;
@termi
termi / gen.es5.bt.js
Last active August 29, 2015 14:05
Generator comprehation transpiling test
var S_ITER$0 = typeof Symbol !== 'undefined' && Symbol && Symbol.iterator || '@@iterator';
var S_MARK$0 = typeof Symbol !== 'undefined' && Symbol && Symbol["__setObjectSetter__"];
function GET_ITER$0(v) {
if( v ) {
if( Array.isArray(v) )return 0;
var f;
if( S_MARK$0 )S_MARK$0(v);
if( typeof v === 'object' && typeof (f = v[S_ITER$0]) === 'function' ) {
if( S_MARK$0 )S_MARK$0(void 0);
return f.call(v);
@termi
termi / event_delegation.js
Created April 12, 2012 18:19
event delegation. It is nearly 140 bytes but unsafe. For more complex solution see comments
function(
a, //CSS selector
b //callback function
) {
return function(
e, // event
c, // (placeholder)
d // (placeholder)
) {
d = e.target;
@termi
termi / LICENSE.txt
Created May 1, 2012 17:32 — forked from 140bytes/LICENSE.txt
event delegation
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
@termi
termi / bug_examples.html
Created August 30, 2012 19:41
Fix Safari bug with [radio input with no form].cloneNode()
<html>
<form>
<div id="test3">
test1 :
<input id="test1" type="radio" name="test" checked />
</div>
test 2:
<input type="radio" name="test" />
</form>
@termi
termi / polyfill.js
Created September 18, 2012 15:21 — forked from Raynos/polyfill.js
RadioNodeList polyfill
/*
demo :- http://jsfiddle.net/termi/pyFXW/
Implements RadioNodeList :- http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist
Implementation just adds `.value` as a property to `NodeList`.
Requires ES5 shim and ES5 shimmable browser. (Modern and IE8)
*/
;(function () {
@termi
termi / index.js
Created September 25, 2012 21:52
:scope support test
function testForRealScopePreudoClassSupport() {
var scopeSupport = false
, tmp = document.createElement("b")
;
tmp.innerHTML = "<i>t</i>";
try {
scopeSupport = tmp.querySelector(":scope>i");
scopeSupport = scopeSupport && scopeSupport.innerHTML == "t";
@termi
termi / index.js
Created October 25, 2012 11:07
New DOM4 classList polyfill for browsers with classList support
void function(global, tmp) {
if("classList" in tmp) {
void function(_add, _remove, _Array_forEach_) {
this["add"] = function() {
_Array_forEach_.call(arguments, _add, this);
};
this["remove"] = function() {
_Array_forEach_.call(arguments, _remove, this);
};
this["toggle"] = function(token, forse) {