- Architecture of client-side code
- Responsibilities
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function snakeToCamelObjectKeys(obj) { | |
return Object.keys(obj).reduce((output, key) => { | |
let value = obj[key] | |
const isObject = value.toString() === '[object Object]' | |
if (isObject) { | |
value = snakeToCamelObjectKeys(value) | |
} | |
const newKey = key.replace(/_(\w)/g, (match, $1) => $1.toUpperCase()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const React = require('react') | |
const ReactDomServer = require('react-dom/server') | |
const fetch = require('node-fetch') | |
function App(props) { | |
const { repos } = props | |
return React.createElement('p', { | |
children: repos.length ? repos[0].name : 'no name', | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { columns, display, gridSpans, margin } from './css-modules-styles' | |
const COLUMNS = 12 | |
const toArray = arrayLike => Array.prototype.slice.call(arrayLike) | |
const placeItemsOnGrid = grid => { | |
const withGutters = grid.classList.contains(columns.withGutters) | |
let currentColumnSpansInRow = 0 | |
let currentRow = 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//@flow | |
import React, { Component } from 'react' | |
import type { ElementRef } from 'react' | |
type Props = { src: string, alt: string } | |
type State = { source?: string } | |
export default class LazyImage extends Component<Props, State> { | |
state = {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const { parse } = require('css') | |
const { readdirSync, readFileSync } = require('fs') | |
const { basename, extname, resolve } = require('path') | |
const camel = require('lodash.camelcase') | |
const baseNameForCSSFile = filename => basename(filename, '.css') | |
const isAClassSelector = selector => /^\./.test(selector) | |
const removeLeadingDotAndTrailingSelectors = selector => |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"rules": { | |
"indent": [ | |
2, 2 | |
], | |
"quotes": [ | |
2, | |
"single" | |
], | |
"linebreak-style": [ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
protectedBranch='master' | |
currentBranch=$(git rev-parse --abbrev-ref HEAD) | |
lastCommand=$(ps -ocommand= -p $PPID) | |
disallowedCommand='force|\-f' | |
if [[ $lastCommand =~ $disallowedCommand ]] && [ $currentBranch = $protectedBranch ]; then | |
echo "Force pushing to $protectedBranch is not allowed. Your push is rejected." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Show hidden characters
{ | |
"disallowImplicitTypeConversion": ["numeric", "boolean", "binary", "string"], | |
"disallowKeywordsOnNewLine": ["else"], | |
"disallowMixedSpacesAndTabs": true, | |
"disallowTrailingWhitespace": true, | |
"disallowTrailingComma": true, | |
"disallowYodaConditions": true, | |
"disallowKeywords": [ "with" ], | |
"disallowMultipleLineBreaks": true, | |
"disallowMultipleVarDecl": "strict", |
Our work weeks are made up of victories both big and small. What really gets me writing is the small. The a-ha! moments. The high fives (internal ones count too). The green builds. The git pushes.
I spent my week creating dynamic forms and lists in Angular. I made them, fought with them, tested them, and came out the other side in one piece. Here's my story:
Custom form validators are a powerful feature in Angular.
NewerOlder