Skip to content

Instantly share code, notes, and snippets.

Luke Horvat lukehorvat

Block or report user

Report or block lukehorvat

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
lukehorvat / gulpfile.js
Last active Nov 15, 2019
A small example of a "Vinyl adapter" that replaces `gulp.src`. Demonstrates how to create a stream for a "fake" (in-memory only) file.
View gulpfile.js
import gulp from 'gulp';
import Vinyl from 'vinyl';
import vinylAdapter from './vinyl-adapter';
gulp.task('build', () => {
const file = new Vinyl({
path: 'hello.js',
contents: Buffer.from(`console.log('👋');`)
lukehorvat / ban-generators-and-async.json
Last active Jul 31, 2018
ESLint rule to disallow generators and async/await. Since AST selectors are used, ESLint 3.18.0 (or higher) is required.
View ban-generators-and-async.json
"rules": {
"no-restricted-syntax": [
lukehorvat / get-color-in-range.js
Last active Jun 21, 2016
Get a color within a defined color range, based on a percentage number.
View get-color-in-range.js
import { scaleLinear } from "d3-scale";
const getColor = scaleLinear().domain([0, 100]).range(["#ccc", "#419fcf"]);
getColor(0); // 0% = #ccc
getColor(80); // 80% = #5da8ce
getColor(100); // 100% = #419fcf
lukehorvat / express-curl-middleware.js
Created Aug 27, 2015
Express middleware to log a JSON request as a cURL command. Inspired by Chrome's "Copy as cURL" feature.
View express-curl-middleware.js
// After body-parsing middleware...
app.use(function(req, res, next) {
"curl '%s://%s%s' -X %s -H 'Content-Type: %s' -d '%s'",
lukehorvat / es6-map-to-object-literal.js
Last active Jun 5, 2020
Convert ES6 Map to Object Literal
View es6-map-to-object-literal.js
let map = new Map();
map.set("a", 1);
map.set("b", 2);
map.set("c", 3);
let obj = Array.from(map).reduce((obj, [key, value]) => (
Object.assign(obj, { [key]: value }) // Be careful! Maps can have non-String keys; object literals can't.
), {});
console.log(obj); // => { a: 1, b: 2, c: 3 }
lukehorvat /
Last active Dec 23, 2015
An example of how to use request/response interceptors in AngularJS 1.2 for consistent API interactions. This code does two things: 1) Automatic injection of the user auth token in all API requests. 2) Automatic event firing when the user receives an API response indicating a 401 (unauthorised) request.
.config ($httpProvider) ->
$httpProvider.interceptors.push ($q, $rootScope, apiUrl, authToken) ->
request: (config) ->
# Intercept API requests and inject the auth token.
config.headers["X-Auth-Token"] = authToken if config.url.indexOf(apiUrl) is 0 and authToken?
config or $q.when config
responseError: (response) ->
# Intercept unauthorised API responses and fire an event.
lukehorvat / routes.html.erb
Created Sep 1, 2013
List all of the routes in your Ruby on Rails application in a nicely-formatted HTML table. Well-suited to those times when you're building an API and need an "auto-updating" reference page of application endpoints that you can share with others.
View routes.html.erb
<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="//" rel="stylesheet">
lukehorvat / excel-grid-plugin.js
Last active Mar 8, 2019
An Ext JS 4 grid plugin that provides Microsoft Excel-esque cell navigation and editing via keyboard. (License: MIT License)
View excel-grid-plugin.js
var newGridCellValue = '',
deleteGridCellValue = false;
Ext.define('ExcelCellEditing', {
extend: 'Ext.grid.plugin.CellEditing',
alias: 'plugin.excelcellediting',
initEditTriggers: function () {
var me = this;
lukehorvat / sibelius_fixer.bat
Created Jan 15, 2013
Batch file for fixing WAVs exported from Sibelius. Uses SoX to process files.
View sibelius_fixer.bat
cd %~dp0
mkdir converted
FOR %%A IN (%*) DO (
sox %%A "converted/%%~nxA" reverse trim 4.3 reverse trim 0.3 gain -n -1
lame -V7 converted/%%~nxA
lukehorvat /
Last active Dec 11, 2015
[Blog post code] Genetic Programming with esec: An Introductory Example
instructions = [
DecisionInstructionWithState(lambda fitness_case: 1 if fitness_case.outlook == 'SUNNY' else (2 if fitness_case.outlook == 'OVERCAST' else 3), param_count=3, name='OUT'),
DecisionInstructionWithState(lambda fitness_case: 1 if fitness_case.humidity == 'HIGH' else 2, param_count=2, name='HUM'),
DecisionInstructionWithState(lambda fitness_case: 1 if fitness_case.windy else 2, param_count=2, name='WIND'),
You can’t perform that action at this time.