Skip to content

Instantly share code, notes, and snippets.

Avatar
🐛

DominicTobias

🐛
View GitHub Profile
@DominicTobias
DominicTobias / conduit.connect.js
Last active Dec 13, 2020
Connect to Phabricator with node.js
View conduit.connect.js
var Connect = function() {
this.fs = require('fs');
this.crypto = require('crypto');
this.http = require('http');
this.url = require('url');
this.q = require('q');
this.initialize();
};
@DominicTobias
DominicTobias / conduit.apiquery.js
Created Dec 20, 2013
Send a query to phabricator using node.js
View conduit.apiquery.js
var ApiQuery = function() {
this.http = require('http');
this.q = require('q');
this.Connect = require('./conduit.connect');
this.initialize();
};
ApiQuery.prototype = {
initialize: function() {
View gist:94e39847361d7e5b360d
var Q = require('q');
var util = require('util');
var request = require('request');
var _ = require('lodash');
var sso = {};
/**
* Redirect to the SSO login page.
*/
View add.js
function add(...args) {
const sum = args.reduce((prev, curr) => prev + curr, 0);
const ret = add.bind(void 0, sum);
ret.value = ret.valueOf = () => sum;
ret.add = ret;
return ret;
}
console.log(add(1, 2).value() === 3);
console.log(add(1, 2)(3).value() === 6);
@DominicTobias
DominicTobias / node-sass-functions.js
Last active May 31, 2019
node-sass external svg to inline
View node-sass-functions.js
'use strict';
const path = require('path');
const fs = require('fs');
const types = require('node-sass').types;
function svgContentWrapper(svgContent) {
return `url('data:image/svg+xml;charset=UTF-8,${svgContent.replace(/\r?\n|\r/g, '')}')`;
}
View react-authenticate-route.js
/*
Authenticate component using a wrapper
*/
import React, {Component} from 'react';
import { connect } from 'react-redux';
export default function(ComposedComponent) {
class Auth extends Component {
static contextTypes = {
@DominicTobias
DominicTobias / bem-class.js
Last active Mar 21, 2019
BEM Class helper
View bem-class.js
/*
BEM Class helper:
const c = makeClass('myparentclass');
className={c`myclass myclass--active`}
becomes: className="myparentclass__myclass myparentclass__myclass--active"
*/
export const makeClass = (cls) =>
(subCls) => subCls[0].split(' ').reduce((acc, s) =>
`${acc}${cls}__${s} `, '').trimRight();
View copyToClipboard.js
export const copyToClipboard = (function initClipboardText() {
const id = 'copy-to-clipboard-helper';
const element = document.getElementById(id);
const textarea = element || document.createElement('textarea');
if (!element) {
textarea.id = id;
// Place in top-left corner of screen regardless of scroll position.
textarea.style.position = 'fixed';
textarea.style.top = 0;
@DominicTobias
DominicTobias / AuthBlockade.js
Last active Feb 2, 2021
Example of react-navigate and redux HOC for authenticated routes
View AuthBlockade.js
/*
Example usage:
StackNavigator({
Login: { screen: Login },
Play: { screen: AuthBlockade(Play) },
}, {
initialRouteName: 'Play',
});
*/
@DominicTobias
DominicTobias / adaptiveComponent.js
Last active Feb 2, 2019
Loading different components at runtime depending on media queries in React
View adaptiveComponent.js
/* globals matchMedia */
import React, { PureComponent } from 'react';
function adaptiveComponent(mediaQueries) {
const firstMatchingQuery = Object.keys(mediaQueries).find(mediaQuery =>
matchMedia(mediaQuery).matches);
if (!firstMatchingQuery) {
throw new Error(`No media query matches found in ${mediaQueries}`);
}