Skip to content

Instantly share code, notes, and snippets.

@stuartbreckenridge
stuartbreckenridge / ia.xml
Created January 19, 2017 13:24
Instant Article
---
layout: null
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>{{ site.name | xml_escape }}</title>
<link>{{ site.url }}</link>
<description>

Keybase proof

I hereby claim:

  • I am stuartbreckenridge on github.
  • I am sgb (https://keybase.io/sgb) on keybase.
  • I have a public key ASBRWJ1N53LHzhy1uzkmVvvq-ZuK-UJoiZ4ktkWZOe6xcwo

To claim this, I am signing this object:

@stuartbreckenridge
stuartbreckenridge / feed.json
Last active December 8, 2017 06:49
JSON Feed for Jekyll
---
sitemap: false
---
{
"version": "https://jsonfeed.org/version/1",
"title": "{{ site.title }}",
"home_page_url": "{{ site.url }}/",
"feed_url": "{{ site.url }}/feed.json",
@stuartbreckenridge
stuartbreckenridge / BusStops.json
Created February 27, 2018 00:46
Singapore Bus Stop List
This file has been truncated, but you can view the full file.
{
"value" : [
{
"Latitude" : 1.3837640285491943,
"Description" : "BT PANJANG TEMP BUS PK",
"Longitude" : 103.75830078125,
"RoadName" : "Woodlands Rd",
"BusStopCode" : "00481"
},
{
@stuartbreckenridge
stuartbreckenridge / TflStopPoint.swift
Last active December 6, 2018 14:54
TfL StopPoint
public typealias TfLStopPoint = [TfLStopPointElement]
public class TfLStopPointElement: Codable {
public let naptanId: String?
public let platformName: String?
public let indicator: String?
public let stopLetter: String?
public let modes: [String]?
public let icsCode: String?
BEGIN MESSAGE.
JxWsewwrF3WILTu CYwMPLwepNZO1ys z5jO2kz4xtBPw7b bBHcUeZeDOzv1ht
pQRgp1LK5NRFbHJ mTz1u0r8zhMTCKq 6Xr2MZHgg6vrbB1 ux5fNfAEFaPXX3r
n48ThImoIRqor5B W5M9WQFw4BRqX1b GrXY7JAxcxwjAGe zJ9krJCSmfOCGOZ
IR3JBrzTyUFobCl x2AEcoMOuoCz6ud YSDIo35rUfoivKf lUmQA7jh.
END MESSAGE.
@stuartbreckenridge
stuartbreckenridge / String+BusStopExpansion.swift
Created November 4, 2021 03:27
Expand abbreviated bus stop names
extension String {
func expandName() -> String {
return self
.replacingOccurrences(of: "\\bA'space\\b", with: "Aerospace", options: [.regularExpression, .caseInsensitive])
.replacingOccurrences(of: "\\bAbly\\b", with: "Assembly", options: [.regularExpression, .caseInsensitive])
.replacingOccurrences(of: "\\bAc\\b", with: "Academy", options: [.regularExpression, .caseInsensitive])
.replacingOccurrences(of: "\\bAcad\\b", with: "Academy", options: [.regularExpression, .caseInsensitive])
.replacingOccurrences(of: "\\bAdm\\b", with: "Administration", options: [.regularExpression, .caseInsensitive])
.replacingOccurrences(of: "\\bAdvent\\b", with: "Adventist", options: [.regularExpression, .caseInsensitive])
.replacingOccurrences(of: "\\bAft\\b", with: "After", options: [.regularExpression, .caseInsensitive])