Skip to content

Instantly share code, notes, and snippets.

View ttscoff's full-sized avatar

Brett Terpstra ttscoff

View GitHub Profile
ttscoff / toot.rb
Last active April 28, 2023 04:58
Scans RSS feed for latest post and creates Mastodon toot
View toot.rb
#!/usr/bin/env ruby -W1
# frozen_string_literal: true
# This script scans an RSS feed for the latest post, and if
# it hasn't already been posted to Mastodon, creates a new
# toot with a link to it.
require 'json'
require 'optparse'
require 'rss'
ttscoff / md_to_bike.rb
Last active May 11, 2023 15:47
This script takes simple Markdown lists and converts them for use in Bike
View md_to_bike.rb
#!/usr/bin/env ruby
# frozen_string_literal: true
# This script takes simple Markdown lists and converts them for use in
# Bike (, a Mac outliner app from
# Hog Bay Software.
# It doesn't handle nested code blocks or any non-list Markdown. It just
# turns simple lists into text Bike will recognize when it's pasted into
# a Bike document. Multiple paragraphs in a list item become additional
ttscoff / lexers.rb
Last active June 6, 2023 21:54
Find the perfect lexer to highlight your fenced code blocks and other fancy stuff. If you know the common name of a language or a common file extension for it, this script will tell you exactly what most syntax highlighters will recoghize.
View lexers.rb
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'optparse'
# Have you ever been adding code to a Markdown post and
# wondered what syntax label would give you the right
# highlighting for your fenced code block? This script can
# take either a file extension or a common name of a language
# and let you know what lexers are supported for it, as well
ttscoff / hugo_youtube_textexpander.js
Created February 22, 2023 19:03
TextExpander JavaScript for generating Hugo youtube tag with a YouTube url in clipboard
View hugo_youtube_textexpander.js
var url = TextExpander.pasteboardText;
var youtubeRx = /(?:youtu\.be\/|youtube\.com\/watch\?v=)([a-z0-9_\-]+)$/i
if (youtubeRx.test(url)) {
var id = youtubeRx.exec(url)[1];
TextExpander.appendOutput(`{< youtube ${id}>}`);
ttscoff / rouge_bunch.rb
Created August 3, 2022 22:15
Rouge highlighting for Bunch syntax
View rouge_bunch.rb
# This "hook" is executed right before the site's pages are rendered
Jekyll::Hooks.register :site, :pre_render do |site|
require "rouge"
module Rouge
module Lexers
class BunchLexer < RegexLexer
title 'Bunch'
desc " File"
ttscoff / btt_indigo.rb
Last active July 2, 2022 15:52
Indigo control for BetterTouchTool
View btt_indigo.rb
#!/usr/bin/env ruby
# Indigo control for BetterTouchTool
# Usage:
# To query a device status
# /path/to/btt_indigo.rb status "Device Name"
# To toggle a device:
# /path/to/btt_indigo.rb toggle "Device Name to Query for state" "Action On Group Name" "Action Off Group Name"
ttscoff / bunch_status.rb
Last active July 2, 2022 12:00
Bunch Status for BetterTouchTool and Stream Deck
View bunch_status.rb
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'json'
# Usage in a BetterTouchTool Shell Script Widget
# For a Stream Deck widget:
# /path/to/bunch_status.rb sd title "Bunch Name"
ttscoff / lastcolor.rb
Created July 1, 2022 15:26
Get the current ANSI color sequence at the point a string ends
View lastcolor.rb
#!/usr/bin/env ruby
# frozen_string_literal: true
# String color helpers
class ::String
ESCAPE_REGEX = /(?<=\[)(?:(?:(?:[349]|10)[0-9]|[0-9])?;?)+(?=m)/.freeze
# Get the calculated ANSI color at the end of the string
# If you want to inject a colored string into another
ttscoff / 256color.rb
Last active July 14, 2022 23:57
256-color hex intepretation for terminal colorization
View 256color.rb
#!/usr/bin/env ruby
# frozen_string_literal: true
# 256-color hex interpretation for terminal colorization
# Usage
# "text".color256(foreground, background)
# print "Colorize this".color256('#f7921e', '#666')
ttscoff /
Last active December 23, 2021 11:49
Git/fzf keybindings for Fish, adapated from @junegunn
# @ttscoff's version of @max-sixty's revision of @aluxian's
# fish translation of @junegunn's fzf git keybindings
# 2021-12-23:
# - Fix hash returned by *git_log being truncated
# - Allow multiple selections for git_status
# - Allow multiple selections for git_log, insert HASH[1].. HASH[-1] range
# - bind ctrl-a for select all