Skip to content

Instantly share code, notes, and snippets.

Avatar

Valeriu Paloş vpalos

View GitHub Profile
@vpalos
vpalos / enum-keys.ts
Last active Feb 25, 2020
How to use `enum` values as strictly typed object keys in TypeScript.
View enum-keys.ts
enum DialogButton {
YES = "yes",
NO = "no",
CANCEL = "cancel"
}
interface IDialog {
buttons: { [B in DialogButton]?: boolean },
callback: (button: DialogButton) => void
}
@vpalos
vpalos / lodash-replacements.js
Created Aug 10, 2019
Drop-in replacements for Lodash functions (to avoid having to include the lib in the browser).
View lodash-replacements.js
export function _get(object, path, fallback) {
const value = path.split(".").reduce((hash, field) => hash && hash[field], object);
return typeof value === "undefined" ? fallback : value;
}
@vpalos
vpalos / font-face-mixin.scss
Last active Aug 10, 2019
SCSS mixing for generating @font-face constructs.
View font-face-mixin.scss
@mixin font($family, $file, $weight, $style, $locals) {
$prefix: "http://localhost:3000/fonts";
$src: null;
@each $local in $locals {
$src: append($src, local($local), comma);
}
$src: append($src, url("#{$prefix}/#{$file}.eot?#iefix") format("embedded-opentype"), comma);
$src: append($src, url("#{$prefix}/#{$file}.woff2") format("woff2"), comma);
$src: append($src, url("#{$prefix}/#{$file}.woff") format("woff"), comma);
View Spec-Deriving Algorithm.js
function Main() {
Iterate {
IdentifyNextThread()
For each Thread {
PullThread()
}
}
}
View specl-specification.yaml
---
identity:
company: DevFactory
version: 2.0
#
# This document represents an L1 specification which describes in thorough
# technical detail a single Milestone; it can consist of a single file, or
# multiple files, imported via referencing.
#
View specl-template.yaml
---
identity:
company: DevFactory
version: 2.0
#
# This document represents an L1 specification which describes in thorough
# technical detail a single Milestone; it can consist of a single file, or
# multiple files, imported via referencing.
#
View specl-schema.yaml
---
#
# Some pre-defined meta-values provided for this schema (required).
#
identity:
company: DevFactory
version: 2.0
#
# All fields named `comment` simply provide a short explanatory paragraph for
@vpalos
vpalos / get-field.js
Last active Dec 16, 2015
Universal field getter for JavaScript objects.
View get-field.js
/**
* Universal field getter method for JavaScript objects.
* @param {Object} _path The field path inside `this`.
* @param {...} _default The default value to be returns if field is not found.
* @return {...} Returns the found field value else `_default` else `undefined`.
*/
Object.prototype._ = Object.prototype._ || function(_path, _default) {
var value = _path.split('.').reduce(
function(hash, field) {
return hash && hash[field]
@vpalos
vpalos / filter.js
Last active Mar 15, 2018
JS: A simple search function designed for filtering large lists of strings.
View filter.js
/**
* Demo: http://vpalos.com/sandbox/filter.js/
*
* A generic search algorithm designed for filtering (very) large lists of strings; when an input string
* contains all the parts (words or characters; whitespace is ignored) of the query, spread-out over the text
* then the string is considered to be a match. It works with the way internet browsers (e.g. Firefox, Google
* Chrome) filter address-bar suggestions on user input. It is also quite fast; on my i7 laptop, filtering
* 1) a list of ~23000 items takes around 50ms (yes, milliseconds!);
* 2) a list of ~1 million text items took under 1 second.
* It works both in NodeJS as well as in browser environments (so far I only tested FF and GC).
@vpalos
vpalos / class.js
Last active Sep 26, 2015
JS: Simple Class implementation supporting deep inheritance and augmentation.
View class.js
/**
* Class.js: A class factory.
* (http://vpalos.com/1194/js-classes-for-the-masses/)
*/
function Class(members) {
// setup proxy
var Proxy = function() {};
Proxy.prototype = (members.base || Class).prototype;
You can’t perform that action at this time.