Skip to content

Instantly share code, notes, and snippets.

View kevgathuku's full-sized avatar

Kevin Gathuku kevgathuku

View GitHub Profile
@kevgathuku
kevgathuku / App.js
Created June 25, 2019 06:03
Embedding Elm 0.19 into a React app using react-elm-components
import React from 'react';
import logo from './logo.svg';
import './App.css';
// Add these two imports
import Elm from 'react-elm-components';
import Main from "./Main";
function App() {
return (
@kevgathuku
kevgathuku / Main.elm
Last active June 25, 2019 06:49
Elm 0.19 Buttons example
-- Extracted from: https://guide.elm-lang.org
-- Read more about this program in the official Elm guide:
-- https://guide.elm-lang.org/architecture/buttons.html
module Main exposing (main)
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
@kevgathuku
kevgathuku / devToolsDetect.js
Last active May 6, 2019 05:57
Detect if Chrome Devtools is open (Doesn't work on Firefox)
// https://stackoverflow.com/a/30638226
// When printing an “Element” Chrome developer tools will request the 'id' property
// If the 'id' property is fetched, then the devtools is open
let checkStatus;
let customElement = document.createElement('p');
document.body.appendChild(customToString);
let element = new Image();
Object.defineProperty(element, 'id', {
componentDidUpdate(prevProps, prevState) {
Object.entries(this.props).forEach(([key, val]) =>
prevProps[key] !== val && console.log(`Prop '${key}' changed`)
);
Object.entries(this.state).forEach(([key, val]) =>
prevState[key] !== val && console.log(`State '${key}' changed`)
);
}
(defn compute-collatz [num steps]
(cond
(= num 1) steps
(even? num) (compute-collatz (/ num 2) (inc steps))
(odd? num) (compute-collatz (+ 1 (* num 3)) (inc steps))))
(defn collatz [num]
{:pre [(pos? num)]}
(compute-collatz num 0))
(defn compute-collatz [num steps]
(cond
(= num 1) steps
(even? num) (compute-collatz (/ num 2) (inc steps))
(odd? num) (compute-collatz (+ 1 (* num 3)) (inc steps))))
(defn collatz [num]
; Check if the provided number is positive. If not throw an error
(if
@kevgathuku
kevgathuku / EventComponent.spec.js
Created November 5, 2018 19:22 — forked from hartzis/EventComponent.spec.js
Touch Event Testing React Jest Enzyme
import React from 'react';
import EventComponent from './EventComponent';
import { mount } from 'enzyme';
import {
createStartTouchEventObject,
createMoveTouchEventObject
} from './EventHelpers.js';
describe('EventComponent', () => {
@kevgathuku
kevgathuku / Main.elm
Created October 1, 2018 16:37 — forked from sch/Main.elm
Minimum Elm boilerplate
module Main exposing (main)
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
type alias Model =
{ count : Int }
let arr = [];
for (var i = 0; i < 10; i++) {
arr.push(function() {console.log(i)});
}
let x = 0;
while (x < 10) {
arr[x]();
x++;
}

Mocking an imported function to return different values for different tests

In the top level:

import getVisibleDays from 'react-dates/lib/utils/getVisibleDays';

jest.mock('react-dates/lib/utils/getVisibleDays', () => {
  const moment = require('moment');
  return jest.fn().mockReturnValue({
 '2018-01': [