Skip to content

Instantly share code, notes, and snippets.

View acobster's full-sized avatar

Coby Tamayo acobster

View GitHub Profile
@acobster
acobster / paginate.js
Created September 13, 2021 02:01
Paginate a Zine!
/**
* Dynamically reorder page elements using the flexbox order property.
*/
function paginateZine({ pageSelector }) {
const pages = document.querySelectorAll(pageSelector)
const sheets = Math.ceil(pages.length / 4)
for (let s = 0; s < sheets; s++) {
const frontLeft = pages.length - 2 * s - 1
const frontRight = 2 * s
@acobster
acobster / deps.edn
Last active January 28, 2021 21:16
RC Pairing Interview
;; This file isn't strictly necessary, but it helps with running a REPL concisely
{:deps {nrepl/nrepl {:mvn/version "0.8.3"}
cider/cider-nrepl {:mvn/version "0.25.6"}}
:aliases
{:repl
{:main-opts ["-m" "nrepl.cmdline" "--middleware"
"[cider.nrepl/cider-middleware]"]}}}
@acobster
acobster / bread-i18n.cljc
Created January 24, 2021 02:15
Bread CMS i18n scratch
(defn translate-string [s] s)
;; TODO ideas for i18n
;; Dispatch on content field vs. hard-coded transation keys in markup...
(def html [:html {:lang "en"}
[:head
[:title :text/hello]]
[:body
[:main
[:h1 :text/hello]
[:h2 :text/invalid]
@acobster
acobster / oxford.clj
Created December 29, 2020 09:28
Oxford Comma
(defn oxford-comma [phrases]
(if (> (count phrases) 2)
(join ", and " [(join ", " (butlast phrases)) (last phrases)])
(join " and " phrases)))
(oxford-comma []) ;; => ""
(oxford-comma ["one"]) ;; => "one"
(oxford-comma ["one" "two"]) ;; => "one and two"
(oxford-comma ["one" "two" "three"]) ;; => "one, two, and three"
(oxford-comma ["one" "two" "three" "four"]) ;; => "one, two, three, and four"
@acobster
acobster / smooth-scrolling.css
Last active September 13, 2020 15:19
Frontend snippets
/*
* SMOOTH SCROLLING IN PURE CSS
*
* CREDIT: https://twitter.com/zachleat/status/1296852504777457664
* DEMO: https://smooth-scrolling.glitch.me/
*/
@media (prefers-reduced-motion: no-preference) {
html {
scroll-behavior: smooth;
}
@acobster
acobster / macro-playground.clj
Created March 27, 2020 16:12
Macro examples
(ns macro-playground.core)
(defmacro square [x]
`(let [x# ~x]
(* x# x#)))
(comment
;; Example expansions for the when* macro:
@acobster
acobster / animations.cljs
Created March 4, 2020 21:51
Reagent animations with framer-motion
(ns app.motion
(:require
[framer-motion :refer (motion AnimatePresence useSpring useMotionValue useTransform useViewportScroll) :as motion]
[cljs-bean.core :refer [bean ->clj ->js]]))
(def div
(.-div motion))
(def span
(.-span motion))
(def li
(.-li motion))
(ns core)
(defn- keyed-by [coll f]
(into {} (map (fn [x] [(f x) x]) coll)))
(defn- vconj [coll & xs]
(vec (apply conj coll xs)))
(def people [{:name "Jeff"
:instrument "Mbira"}
@acobster
acobster / page-content-layouts.php
Created April 24, 2019 19:05
ACF Content Sections demo code
<?php
/**
* Author: Coby Tamayo
*/
use MyProject\Post\Page;
$page = new Page();
// Get common/site-wide data
@acobster
acobster / functions.php
Created March 28, 2019 23:07
Custom ACF select validation
<?php
/*
* Disallow certain choices based on post_type and/or page template
*/
add_filter('acf/prepare_field/key=field_5c6c913e0ea64', function(array $field) {
//unset($field['choices']['full-width-image-carousel']);
//unset($field['choices']['full-width-image']);
return $field;