Skip to content

Instantly share code, notes, and snippets.

Avatar

Daniel Eden daneden

View GitHub Profile
View example.swift
struct Fields {
var userFields: Set<User.Fields>?
var tweetFields: Set<Tweet.Fields>?
}
protocol Fetcher {
// Is there a way to do something like this, where I can specify that the `Fields`
// struct must contain only these member types?
func getTweet(fields: Fields<Tweet.Fields, User.Fields>? = nil) async -> Tweet
func getUser(fields: Fields<User.Fields>? = nil) async -> User
View User.swift
struct User: Codable, Identifiable {
typealias ID = String
let id: ID
let name: String
let username: String
// Assume that items can be optionally set in getUser
var items: UserItems?
}
View README.md

I’m trying to decode two slightly different JSON API responses to the same Codable type, Account. Mapping userResponse.json’s uid to id is trivial, but extracting the nested user is stumping me.

Any suggestions would be greatly appreciated!

View Color.extension.swift
//
// Color.extension.swift
// Zeitgeist
//
// Created by Daniel Eden on 30/12/2020.
// Copyright © 2020 Daniel Eden. All rights reserved.
//
import Foundation
import SwiftUI
View rgbaToHexConsole.js
// $0 is web inspector's reference to the current element
$0.style.backgroundColor
// run a regex to get the values for r, g, b, and optionally a
.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})(, ?([0-9.]{1,3}))?\)/)
// filter out the regex results we don't care about
.filter((e, i) => {
switch (i) {
case 1: // red
case 2: // green
case 3: // blue
View rename-branch.sh
#!/bin/bash
# Checkout master branch
git checkout master
# Rename "master" to "main"
git branch -m master main
# Unset the current upstream branch
git branch --unset-upstream
View Timer.swift
import SwiftUI
import Combine
struct HMS {
var h: Int
var m: Int
var s: Int
}
struct ContentView: View {
View Readme.md

git clone and cd function

A simple little alias function that lets you clone and cd into a GitHub repo in one command.

Installation

Add to your zsh or bash config (usually ~/.bash_profile or ~/.zshrc) and open a new terminal to be able to use the function.

Usage

gcd [github_repo_owner/repo_name]
View js-is-weird.js
// I learned in this post (https://overreacted.io/react-as-a-ui-runtime/)
// that arguments passed to a function run before the function itself:
/**
* // This runs second
* outerFunction(
* // This runs first
* innerFunction()
* )
*/
// This makes sense. But I wondered what it looked like in practice.
View grid-api.md

Grid Breakpoint API Dilemma

We want a responsive grid API that allows for an arbitrary number of breakpoints to be defined, but there's an issue with how the breakpoint extremities are treated. Given the following API:

<Grid breakpoints={[300, 600, 900]}>
  <Column width={[1, 1/2, 1/4]} />
</Grid>