Skip to content

Instantly share code, notes, and snippets.

View vpalos's full-sized avatar

Valeriu Paloş vpalos

View GitHub Profile
@vpalos
vpalos / options.js
Created May 20, 2011 07:29
JS: CLI argument parser.
/** Command-line options parser (http://valeriu.palos.ro/1026/).
Copyright 2011 Valeriu Paloş (valeriu@palos.ro). All rights reserved.
Released as Public Domain.
Expects the "schema" array with options definitions and produces the
"options" object and the "arguments" array, which will contain all
non-option arguments encountered (including the script name and such).
Syntax:
[«short», «long», «attributes», «brief», «callback»]
@vpalos
vpalos / class.js
Last active September 26, 2015 03:38
JS: Simple Class implementation supporting deep inheritance and augmentation.
/**
* 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;
@vpalos
vpalos / get-field.js
Last active December 16, 2015 05:59
Universal field getter for JavaScript objects.
/**
* 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]
---
#
# 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
---
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.
#
---
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.
#
function Main() {
Iterate {
IdentifyNextThread()
For each Thread {
PullThread()
}
}
}
@vpalos
vpalos / font-face-mixin.scss
Last active August 10, 2019 04:03
SCSS mixing for generating @font-face constructs.
@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);
@vpalos
vpalos / lodash-replacements.js
Created August 10, 2019 04:05
Drop-in replacements for Lodash functions (to avoid having to include the lib in the browser).
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 / enum-keys.ts
Last active February 25, 2020 06:46
How to use `enum` values as strictly typed object keys in TypeScript.
enum DialogButton {
YES = "yes",
NO = "no",
CANCEL = "cancel"
}
interface IDialog {
buttons: { [B in DialogButton]?: boolean },
callback: (button: DialogButton) => void
}