Skip to content

Instantly share code, notes, and snippets.

View DanielCardonaRojas's full-sized avatar

Daniel Cardona Rojas DanielCardonaRojas

View GitHub Profile
@DanielCardonaRojas
DanielCardonaRojas / Monoids.swift
Last active October 30, 2017 20:50
Monoids in Swift
protocol Semigroup {
/* A semigroup is a set and a binary operator defined for elements within that
set, to yeild a another element of the same type.
*/
static func combine (_ lhs: Self, _ rhs: Self) -> Self
}
extension Semigroup {
// Extending a protocol enables to get free functions based on the implementation of the protocol
func mappend(_ with: Self) -> Self {
class BezierView: UIView {
private var bezier: UIBezierPath
init(bezier: UIBezierPath) {
self.bezier = bezier
let transform = CGAffineTransform()
transform.scaledBy(x: 2, y: 2)
let rectBounds = bezier.bounds
rectBounds.applying(transform)
/* -------------- Higher order function combinators ---------------- */
// Composition operators
infix operator >>>
func >>> <A,B,C> (aToB: @escaping (A) -> B, bToC: @escaping (B) -> C) -> (A) -> C {
return { a in aToB(a) |> bToC }
}
infix operator <<<
func <<< <A,B,C> (bToC: @escaping (B) -> C, aToB: @escaping (A) -> B) -> (A) -> C {
//
// ProgressView.swift
// ProgressView
//
// Created by Daniel Cardona on 4/26/18.
// Copyright © 2018 Daniel Cardona. All rights reserved.
//
import UIKit
@DanielCardonaRojas
DanielCardonaRojas / DecodeJwt.sh
Created May 2, 2018 00:07
Decode Jwt from command line
# Decode the payload
echo $token | cut -d '.' -f2 | base64 -D
# Decode the header
echo $token | cut -d '.' -f1 | base64 -D
@DanielCardonaRojas
DanielCardonaRojas / MyCustomElement.js
Created July 9, 2018 19:54
CustomElement WebComponent Template
class MyCustomElement extends HTMLElement {
constructor(){
super();
}
static get observedAttributes() {
return [];
}
// Life Cycle
@DanielCardonaRojas
DanielCardonaRojas / Coordinates.elm
Created July 19, 2018 14:54
Elm google-map custom element
module Data.Coordinates exposing (..)
import Json.Decode as Decode exposing (Decoder, float, Value)
import Json.Encode as Encode
import Json.Decode.Pipeline as Pipeline exposing (required)
import Geolocation
type alias Coordinates =
{ latitude : Float
, longitude : Float
module Main exposing (main)
import Html exposing (Html)
numberRows = 5
generate : (a -> a) -> a -> Int -> List a
generate f seed n =
if n <= 0 then
[f seed]
extension NSMutableAttributedString {
func replacingOccurrences(of item: String, with replacement: NSAttributedString) {
guard let range: Range<String.Index> = self.string.range(of: item) else {
return
}
let nsrange = NSRange(range, in: self.string)
self.replaceCharacters(in: nsrange, with: replacement)
}
}
@DanielCardonaRojas
DanielCardonaRojas / ProfileInputField.swift
Created September 18, 2018 14:09
An example of a programmatic custom view
//
// ProfileInputField.swift
// CustomViews
//
// Created by Daniel Esteban Cardona Rojas on 9/14/18.
// Copyright © 2018 Daniel Esteban Cardona Rojas. All rights reserved.
//
import UIKit