Skip to content

Instantly share code, notes, and snippets.

View kemchenj's full-sized avatar
:octocat:
Hackable Life ! ! !

Kem Chen kemchenj

:octocat:
Hackable Life ! ! !
View GitHub Profile
@kemchenj
kemchenj / json2mson.rb
Last active August 19, 2018 00:26
json2mson
require 'json'
def base_type?(element)
element.is_a?(Numeric) || element.is_a?(String) || element.is_a?(TrueClass) || element.is_a?(FalseClass)
end
def base_type_array?(arr)
base_type?(arr.first)
end
//
// main.c
// jkasdfj
//
// Created by kemchenj on 2018/7/13.
// Copyright © 2018 kemchenj. All rights reserved.
//
#include <stdio.h>
extension UITextView {
func correctSelection() {
let currentSelectedRange = selectedRange
let wholeRange = attributedText.wholeRange
let emptyRange = NSRange()
var lowerAttributeEffectiveRange = NSRange()
var upperAttributeEffectiveRange = NSRange()
@kemchenj
kemchenj / example.swift
Last active September 13, 2017 16:43 — forked from chriseidhof/kvo-binding.swift
通过 Swift 4 新增的 KeyPath,让 NSObject 拥有了类型安全的 KVO-Binding https://twitter.com/chriseidhof/status/907232916555661312
import Foundation
final class Sample: NSObject {
@objc dynamic var name: String = ""
}
class MyObj: NSObject {
@objc dynamic var test: String = ""
}
@kemchenj
kemchenj / Frequencies.swift
Last active September 13, 2017 16:44
通过给 Sequence 添加 extension 去检测 Element 的频率 https://twitter.com/chriseidhof/status/906148040020553728
import Foundation
extension Sequence where Element: Hashable {
var frequencies: [Element: Int] {
return Dictionary(lazy.map { ($0: 1) }, uniquingKeysWith: +)
}
}