Skip to content

Instantly share code, notes, and snippets.

Nikolai Ruhe NikolaiRuhe

  • Berlin
Block or report user

Report or block NikolaiRuhe

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
@NikolaiRuhe
NikolaiRuhe / gist:5546537
Last active Dec 17, 2015
Simple demo code illustrating the advantages of enumerateSubstringsInRange over componentsSeparatedByString.
View gist:5546537
//
// Created by Nikolai Ruhe on 2013-05-09.
// Copyright (c) 2013 Savoy Software. All rights reserved.
//
#import <Foundation/Foundation.h>
static NSString *replaceLongWords(NSString *originalString, NSString *replaceWord, NSUInteger maxChar)
{
NSMutableString *result = [NSMutableString stringWithCapacity:[originalString length]];
View 1820FE15-11C0-2215-4852-8595648916A6.xml
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.openpromos.com/OPPC/XMLForms" xmlns:oppc="http://www.openpromos.com/OPPC/XMLForms" id="1820FE15-11C0-2215-4852-8595648916A6" originalId="516C5610-2CE6-0AF0-E100-8000C0A880BF">
<head>
<originalId>516C5610-2CE6-0AF0-E100-8000C0A880BF</originalId>
</head>
<actions>
<action id="$BS_FORMTAKE" includeInMenu="true" title="Übernehmen">
<type>
<server command="$BS_FORMTAKE"/>
</type>
@NikolaiRuhe
NikolaiRuhe / NRDelegateProxy
Created Sep 23, 2014
NRDelegateProxy is an Objective-C proxy class used for intercepting delegate callbacks.
View NRDelegateProxy
// NRDelegateProxy is a base class for proxy objects that are used as intercepting
// delegates in other objects.
//
// NRDelegateProxy is subclassed to customize delegate behavior by selectively responding
// to some delegate methods while passing on other methods. It can thus be used to implement
// a chain of delegates where each delegate is responsible for some specific task.
//
// Below is an example using a UITextField. It sets up a chain of delegates that looks as follows:
//
// UITextField -> NRTextFilterProxy -> NRKeyboardHiderProxy -> ViewController
View gist:d07f6cbdb2d82e2820d2
<?xml version="1.0" encoding="utf-8"?>
<form id="template000007" originalId="tempalte000007" xsi:schemaLocation="http://www.openpromos.com/OPPC/XMLForms FormSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:meta="http://www.openpromos.com/OPPC/XMLFormsMetaData" xmlns="http://www.openpromos.com/OPPC/XMLForms">
<head>
<servertag xmlns:meta="http://www.openpromos.com/OPPC/XMLFormsMetaData" xmlns:oppc="http://www.openpromos.com/OPPC/XMLForms">
<logo id="TGSLOGO3"/>
</servertag>
</head>
<sheet title="Protokoll zur Technischen Trocknung">
<section>
<checkboxfield title="Protokoll zur Technischen Trocknung ausfüllen" refname="PROTTROCK" visibility="screen"/>
View gist:e77839f47508f8933df8
<sheet id="main_sheet" meta:month_id="201504" meta:refname="main_sheet">
<section visibility="hidden" meta:timesec.expression="self">
<datefield meta:time="0">1983-11-22T23:00:00Z</datefield>
<datefield meta:time="0.25">1983-11-22T23:15:00Z</datefield>
<datefield meta:time="0.5">1983-11-22T23:30:00Z</datefield>
<datefield meta:time="0.75">1983-11-22T23:45:00Z</datefield>
<datefield meta:time="1">1983-11-23T00:00:00Z</datefield>
<datefield meta:time="1.25">1983-11-23T00:15:00Z</datefield>
<datefield meta:time="1.5">1983-11-23T00:30:00Z</datefield>
<datefield meta:time="1.75">1983-11-23T00:45:00Z</datefield>
View gist:07e7d172ca91445e58fc
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta name="format-detection" content="telephone=no">
<title>Impressum</title>
<style type="text/css">
p { margin: 0.0px 0.0px 15.0px 0.0px; font: 12.0pt Helvetica; }
</style>
View CBUUIDrepresentativeString.swift
extension CBUUID {
func representativeString() -> String {
let data = self.data
let buffer = UnsafeBufferPointer<UInt8>(start: UnsafePointer(data.bytes), count: data.length)
let hex: (UInt8) -> String = { ($0 <= 9 ? "0" : "") + String($0, radix: 16, uppercase: true) }
let dashInserter: (Int) -> String = { [3, 5, 7, 9].contains($0) ? "-" : "" }
return buffer.map(hex)
.enumerate()
@NikolaiRuhe
NikolaiRuhe / NRLabel
Created Jul 15, 2016
A UILabel subclass that adds padding around the text and handles layout properly.
View NRLabel
import UIKit
class NRLabel : UILabel {
var textInsets: UIEdgeInsets = UIEdgeInsetsZero
override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
let insetRect = UIEdgeInsetsInsetRect(bounds, textInsets)
let textRect = super.textRect(forBounds: insetRect, limitedToNumberOfLines: numberOfLines)
let invertedInsets = UIEdgeInsets(top: -textInsets.top,
@NikolaiRuhe
NikolaiRuhe / NRLabel.m
Last active Nov 27, 2018
A UILabel subclass that adds padding around the text and handles layout properly.
View NRLabel.m
@interface NRLabel : UILabel
@property (nonatomic) UIEdgeInsets textInsets;
@end
@implementation NRLabel
- (void)setTextInsets:(UIEdgeInsets)textInsets
{
_textInsets = textInsets;
[self invalidateIntrinsicContentSize];
@NikolaiRuhe
NikolaiRuhe / NRLabel.swift
Last active Jul 3, 2019
A UILabel subclass that adds padding around the text and handles layout properly.
View NRLabel.swift
import UIKit
class NRLabel : UILabel {
var textInsets = UIEdgeInsets.zero {
didSet { invalidateIntrinsicContentSize() }
}
override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
let insetRect = UIEdgeInsetsInsetRect(bounds, textInsets)
You can’t perform that action at this time.