Skip to content

Instantly share code, notes, and snippets.

Simon Kågedal Reimer skagedal

Block or report user

Report or block skagedal

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View DragAndDropTableViewController.swift
// Demonstrating a bug with what the table view reports as the destination index path when dragging within
// the same section
import UIKit
class TableViewController: UITableViewController, UITableViewDragDelegate, UITableViewDropDelegate {
var data: [(String, [String])] = [("One", ["A", "B", "C"]), ("Two", ["1", "2", "3"])]
override func viewDidLoad() {
super.viewDidLoad()
@skagedal
skagedal / DataSplitSequence.swift
Created Dec 2, 2018
Implemented for AoC 2018, first question
View DataSplitSequence.swift
import Foundation
/// Represents a sequence of Data split at a certain value
struct DataSplitSequence: Sequence {
typealias Element = Data
struct Iterator: IteratorProtocol {
private let sequence: DataSplitSequence
private var index: Int = -1
@skagedal
skagedal / WorkaroundWebViewController.swift
Created Sep 6, 2018
A simplified WKWebView view controller with workarounds for setting cookies.
View WorkaroundWebViewController.swift
import UIKit
import WebKit
class WorkaroundWebViewController: UIViewController, WKNavigationDelegate {
let request: URLRequest
private let websiteDataStore = WKWebsiteDataStore.default()
private var webView: WKWebView!
private var initialDummyNavigation: WKNavigation?
View render-icon-playground.swift
//: Playground - noun: a place where people can play
import Cocoa
enum ImageError: Error {
case couldNotCreateBitmapImage
case couldNotCreatePNGRepresentation
}
func renderIcon(text: String, backgroundColor: NSColor, sizeInPixels: Int) throws -> Data {
@skagedal
skagedal / simulator.zsh
Last active Mar 14, 2019
Extension for zsh that gives an auto-completable cd to a simulator data container of the app with the given bundle identifier.
View simulator.zsh
# Extension for zsh that cd to a simulator data container of the app with the given bundle identifier.
#
# See blog post at https://skagedal.github.io/2018/01/02/simcd.html
function simdir () {
xcrun simctl get_app_container booted $1 data
}
function simcd () {
cd `simdir $1`
View AnimationTestTableViewController.swift
// Demo for SO question:
//
// http://stackoverflow.com/questions/42659251/can-a-table-view-row-stay-put-while-its-section-is-moving
import UIKit
enum State: Int {
case first
case second
}
View Radar-27957917-ViewController.m
// Example code for https://openradar.appspot.com/radar?id=4975264899530752 since I can't attach
// a zip there and am to lazy to create a git repo for the whole thing.
// Create a standard iOS "Single View" application with Core Data in Xcode 7.3.1
// Create one Core Data entity called Thing with an integer "order" and a string "name"
// Hook up a simple view controller to these actions
#import "AppDelegate.h"
#import "ViewController.h"
#import "Thing.h"
@skagedal
skagedal / UIViewController+Deselection.swift
Last active Jun 9, 2016 — forked from ZevEisenberg/LICENSE
Smoothly deselect table and collection view cells on dismissal, including interactive dismiss and interactively-partially-dismiss-then-cancel-then-dismiss-again
View UIViewController+Deselection.swift
extension UIViewController {
func rz_smoothlyDeselectRows(tableView tableView: UITableView?) {
let selectedIndexPaths = tableView?.indexPathsForSelectedRows ?? []
if let coordinator = transitionCoordinator() {
coordinator.animateAlongsideTransitionInView(parentViewController?.view, animation: { context in
selectedIndexPaths.forEach {
tableView?.deselectRowAtIndexPath($0, animated: context.isAnimated())
}
View swepubscraper.py
from urllib.request import urlopen
counter = 1
while True:
url = 'http://libris.kb.se/xsearch?d=swepub&hitlist&q=l%C3%A4ros%C3%A4te%3agu&f=ext&spell=true&hist=true&n=200&format=json&start=' + str(counter)
print ("Fetching: " + url)
data = urlopen(url).read()
if not data.find(b'"identifier"') >= 0:
print("No more records!")
View swepubjsonparser.py
import json
import re
from os import listdir
def fix_escapes(string):
# Libris over-escapes some backslashes.
string = string.replace("\\\\\"","\\\"")
# Libris fails to properly escape backslashes in strings, which occurs for example with inline
# LaTeX codes like "$\geq" which should be escaped as "$\\geq". They do seem to properly
# escape quote chars, however. Now, we can't easily know whethera string liike "\n" should be
You can’t perform that action at this time.