Skip to content

Instantly share code, notes, and snippets.

View termi's full-sized avatar

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

View GitHub Profile
@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 / 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 / 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 / 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 / Symbol_test.js
Created March 3, 2014 13:04
Symbol's polyfill test
applyPolyfills();var $S_polyfill$0 = Symbol["__polyfill__"];var $S_SET$0, $S_GET$0, $isSymbol$0;if($S_polyfill$0){$S_SET$0 = $S_polyfill$0["__setObjectSetter__"];$S_GET$0 = $S_polyfill$0["__setObjectGetter__"];$isSymbol$0 = $S_polyfill$0["__isSymbol__"];$S_polyfill$0 = true;}else {$S_polyfill$0 = false}
var private1 = Symbol();var $S$0 = $S_polyfill$0 && typeof private1 === 'object' && $isSymbol$0(private1);
var private2 = Symbol();var $S$1 = $S_polyfill$0 && typeof private2 === 'object' && $isSymbol$0(private2);
var publicProp1 = 'public_prop1';
var publicProp2 = (function(){return 'public_prop1'})();var $S$2 = $S_polyfill$0 && typeof publicProp2 === 'object' && $isSymbol$0(publicProp2);
function createSymbolOrObject(createSymbol){ return createSymbol ? Symbol() : {} };
{// simple
var obj = {}, obj1 = {};
@termi
termi / declension.js
Created October 21, 2013 09:55
Склонение существительных
/**
* Склонение существительных
* Правильная форма cуществительного рядом с числом (счетная форма).
*
* @example declension("файл", "файлов", "файла", 0);//returns "файлов"
* @example declension("файл", "файлов", "файла", 1);//returns "файл"
* @example declension("файл", "файлов", "файла", 2);//returns "файла"
*
* @param {string} oneNominative единственное число (именительный падеж)
* @param {string} severalGenitive множественное число (родительный падеж)
@termi
termi / findMicrodataProperties.js
Last active December 20, 2015 04:18
Find Microdata properties Note: Without itemref support
function findMicrodataProperties(itemScopeNode, itemPropName) {
if( !itemScopeNode.hasAttribute("itemscope") ) {
return[];
}
var pending = []
, tmp
, currentNode
, k = -1
, el
@termi
termi / CSS.supports.js
Last active December 17, 2015 11:39
CSS.supports
/** github.com/termi/CSS.supports */
if( !global.CSS || !global.CSS.supports ) {
if( !global.CSS ) {
/**
* @expose
*/
global.CSS = {};
}
if( !global.CSS.supports && global["supportsCSS"] ) {// Opera 12.10 impl
void function() {
"use strict";
var global = this;
//Mini alternative https://gist.github.com/2428561
//Uses
//https://gist.github.com/1384398
//https://gist.github.com/1235332
@termi
termi / scrollIntoView_polyfill.js
Last active March 6, 2019 15:22
Support centering an element when scrolling into view w3c issue: https://www.w3.org/Bugs/Public/show_bug.cgi?id=17152 Original code from http://jsbin.com/ilecok/16/
////////////////////////////////////////////////////////////////////////////////
// Author: Thaddee Tyl 2012.
// The following work is under CC0.
void function() {
// Hook the polyfill.
Element.prototype._scrollIntoView = function scrollIntoView(options) {
if( !this.ownerDocument )return;