Skip to content

Instantly share code, notes, and snippets.

Mark Volkmann mvolkmann

Block or report user

Report or block mvolkmann

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
@mvolkmann
mvolkmann / top-state.js
Created Nov 18, 2018
a custom React hook named "useTopState" that is similar to "useState", but allows multiple components to share the state and be rerendered when it changes
View top-state.js
const stateMap = {};
function render(state) {
for (const component of state.components) component.forceUpdate();
}
export default function useTopState(name, initialValue) {
let state = stateMap[name];
if (!state) {
View gist:7876a4629ba11291ed65882c5d364f04
// Original code
const score = 7;
const someVar =
score < 10 ? 'some long string' :
score < 20 ? 'this is looking promising' :
score < 30 ? 'passing' :
score < 40 ? 'proficient' :
'expert';
// What Prettier does
@mvolkmann
mvolkmann / type-classes.js
Created Feb 22, 2018
JavaScript version of what I'm trying to do in Haskell
View type-classes.js
const colorNameToHexMap = {
red: 'FF0000',
green: '00FF00',
blue: '0000FF'
};
const colorHexToNameMap = {
FF0000: 'red',
'00FF00': 'green',
'0000FF': 'blue'
@mvolkmann
mvolkmann / type-classes.hs
Created Feb 22, 2018
learning about Haskell type classes
View type-classes.hs
import qualified Data.Map as Map
-- A tuple of three Ints
type RGB = (Int, Int, Int)
-- Colors can be specified in three ways.
data Color =
ColorName String |
ColorHex String |
ColorRgb Int Int Int
View demo.hs
instance LogType (IO a) where
logn' arr = do
-- Call putStr on all the elements in arr.
mapM_ putStr arr -- functions that end in _ ignore their result
-- Output a newline.
putStrLn ""
-- The "do" block must return something.
return undefined
instance (Show a, LogType r) => LogType (a -> r) where
@mvolkmann
mvolkmann / matt-follett.js
Created May 18, 2017
Flow type discriminating
View matt-follett.js
// @flow
type Action1Type = {
type: 'A1',
payload: {
name: string
}
};
type Action2Type = {
@mvolkmann
mvolkmann / demo.js
Last active May 11, 2017
Flow .js.flow declaration files
View demo.js
const double = require('./math').double;
console.log(double('20'));
@mvolkmann
mvolkmann / math.js
Created Jan 6, 2017
CommonJS Flow example
View math.js
// @flow
function product(a, b) {
return a * b;
}
exports.product = product;
@mvolkmann
mvolkmann / foo.js
Created Apr 12, 2013
An example of how I would write code to read from a new Node.js stream ...
View foo.js
stream.on('readable', function () {
var data;
while (true) {
data = stream.read();
if (data === null) break;
// use the data
}
});
stream.on('end', function () {
View form.html
<html>
<head>
<title>Test Form</title>
<script src="form.js"></script>
</head>
<body>
<form id="myform" method="post" action="http://localhost:3000">
<label for="name">Name:</label>
<input id="name" name="name" type="text"/>
<button type="submit">Go!</button>
You can’t perform that action at this time.