Skip to content

Instantly share code, notes, and snippets.

Avatar

Dan Rosenstark drosenstark

View GitHub Profile
@drosenstark
drosenstark / NSArray+Filter.m
Created Jan 18, 2021
Simple block filter on NSArray in Objective-C
View NSArray+Filter.m
#import "NSArray+Filter.h"
@implementation NSArray (Filter)
- (NSArray *) filteredArrayUsingBlock:(BOOL (^)(id obj))block {
NSIndexSet *const filteredIndexes = [self indexesOfObjectsPassingTest:^BOOL (id _Nonnull obj, NSUInteger idx, BOOL *_Nonnull stop) {
return block(obj);
}];
return [self objectsAtIndexes:filteredIndexes];
@drosenstark
drosenstark / Permutations.swift
Created Apr 26, 2019
String permutations in a way that makes some sense
View Permutations.swift
import Foundation
func permute(_ s: String) -> [String] {
var arr = Array(s)
var permutations = [[Character]]()
permute(&arr, 0, &permutations)
return permutations.map { String($0) }
}
func permute<T>(_ arr: inout [T], _ k: Int, _ result: inout [[T]]) {
@drosenstark
drosenstark / swiftWatchAndRun.sh
Created Apr 21, 2019
Watch and Swift file and run it on change
View swiftWatchAndRun.sh
#!/bin/sh
# swiftWatchAndRun
if [ $# -ne 1 ]; then
echo "Use like this:"
echo " $0 filename-to-watch"
exit 1
fi
if which fswatch >/dev/null; then
echo "Watching swift file $1"
while true; do fswatch --one-event $1 >/dev/null && echo "----------------"; echo `date +"%m-%d-%y %I:%M%p"`; echo "----------------" && swift $1; sleep 0.1; done
@drosenstark
drosenstark / paste_from_shell.sh
Last active Apr 17, 2019
Paste the clipboard in to your shell for realz
View paste_from_shell.sh
#!/bin/bash
pbpaste > /tmp/shellpaste.sh
echo "Execute this?"
cat /tmp/shellpaste.sh
echo
read -p "Press enter to run it..."
bash /tmp/shellpaste.sh
@drosenstark
drosenstark / xctest-in-repl.swift
Created Mar 17, 2019
Run XCTest stuff using the Swift command line on macOS
View xctest-in-repl.swift
/// Run with:
/// swift -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks xctest-in-repl.swift
import Foundation
import XCTest
class ATest : XCTestCase {
func testIt() {
print("Oh yeah, it's on")
XCTAssertTrue(false, "That needed to be true!")
}
@drosenstark
drosenstark / WeakArray.swift
Created Nov 18, 2018
Hold protocolized objects weakly (with just a few, minor changes)
View WeakArray.swift
@objc public protocol Equalable: class {
@objc func isEqual(_ object: Any?) -> Bool
}
/// Store AnyObject subclasses weakly
/// * Note: if you wish to use a protocol, it must:
/// - be marked with `@objc`
/// - have all methods marked with `@objc`
/// - refine Equalable
public struct WeakArray<Element: Equalable> {
@drosenstark
drosenstark / mermaid-to-diagrams.rb
Last active May 21, 2018
Convert all Mermaid Markdown files (mermaid-*.md) to jpg with white background.
View mermaid-to-diagrams.rb
#!/usr/bin/env ruby
def convert_mermaid_md_to_jpg
Dir["mermaid-*.md"].each do |f|
slug = f["mermaid-".length...f.length-".md".length]
command = "~/node_modules/.bin/mmdc -i mermaid-#{slug}.md -o mermaid-#{slug}.png -b '#FFFFFF'"
puts "Converting mermaid-#{slug}.md to mermaid-#{slug}.png"
`#{command}`
end
end
@drosenstark
drosenstark / delete-all-ios-simulators.rb
Created Apr 17, 2018
Deletes all your iOS Simulators
View delete-all-ios-simulators.rb
#!/usr/bin/env ruby
`xcrun simctl shutdown all`
device_lines = `xcrun simctl list`.split("\n")
device_lines.each do |line|
line.strip!
matches = /[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}/.match(line)
if matches
`xcrun simctl delete #{matches}`
puts "Deleting sim with ID #{matches}"
end
@drosenstark
drosenstark / git-rbranch
Last active Feb 8, 2018
Creates a local branch and pushes it up
View git-rbranch
#!/bin/bash
git checkout -b $1 && git push --set-upstream origin $1
View dansWorkflowyModsDark.css
/*
* Name: Workflowly Dark
* Author: Froyok
*/
body
{
background-color: #121212;
color:white;
}