Skip to content

Instantly share code, notes, and snippets.

View turekj's full-sized avatar

Jakub Turek turekj

View GitHub Profile
extension String {
var date: Date {
let formatter = DateFormatter()
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
guard let date = formatter.date(from: self) else {
fatalError("Cannot build a date from \(self) string")
}
class YearsBetweenDatesBehavior:
Behavior<YearsBetweenDatesBehavior.Context> {
struct Context {
let sut: (Calendar) -> (Date, Date) -> Int?
let from: String
let to: String
let calendar: Calendar.Identifier
let expected: Int
}
@turekj
turekj / SeparatingDecisionsAndSideEffects2.swift
Last active January 2, 2020 11:14
Separating Decisions and Side-Effects: After the Separation, Handling Additional States
// See article at: https://jakubturek.com/separating-decisions-and-effects/
import Foundation
import Quick
import Nimble
// MARK: - Data models
struct UserToken: Codable {
let token: String
@turekj
turekj / SeparatingDecisionsAndSideEffects1.swift
Last active January 2, 2020 11:13
Separating Decisions and Side-Effects: Before Refactoring
// See article at: https://jakubturek.com/separating-decisions-and-effects/
import Foundation
import Quick
import Nimble
// MARK: - Data models
struct UserToken: Codable {
let token: String
import org.opencv.core.Core
import org.opencv.core.Mat
import org.opencv.core.MatOfByte
import org.opencv.core.Size
import org.opencv.imgcodecs.Imgcodecs
import org.opencv.imgproc.Imgproc
import org.opencv.videoio.VideoCapture
import java.awt.Dimension
import java.awt.FlowLayout
import java.io.ByteArrayInputStream
@turekj
turekj / jscpd.rb
Created June 17, 2018 08:12
Danger script for JSCPD integration
def find_duplicates
`jscpd`
unless File.exists?('jscpd_report.json')
puts "jscpd_report.json was not generated..."
return
end
jscpd_report = JSON.parse(File.read('jscpd_report.json'))
jscpd_clones = jscpd_report["statistics"]["clones"]